logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Bascom] [Bascom][Atmega16] Nieoczekiwane zachowanie po dodaniu serwomechanizmu

ojapitole 31 Mar 2012 00:22 2327 4
REKLAMA
  • #1 10738757
    ojapitole
    Poziom 9  
    Witam

    Nie wiem czemu po dodaniu do kodu serw mikrokontroler zaczyna zachowywac sie kompletnie "niespodziewanie"


    Generalnie Atmega chodzi na kwarcu 16K obsługuje wyświetlacz alfanumeryczny i 11-Czujników (1wire)

    Zrobiłem małe menu ,po przejściu do odpowiedniej zakładki uruchamiane jest pierwsze 8 czujników albo gdzie indziej inne 3 , jest też zakładka ze sterowaniem serwem .

    Całość męczyłem mocno przed wprowadzeniem serw , Menu działało sprawnie wszystko na 1 wire działa sprawnie ,

    Serwa zaimplementowałem przez


    "Config Servos"

    Po wejściu do pod menu "serw" na wyświetlaczu potrafią wyskoczyć jakieś głupoty albo przeskakuje do innego menu , przerwania włączam i wyłaczam tylko na chwile aby wysłać serwu sygnał
    Kod: text
    Zaloguj się, aby zobaczyć kod



    bardzo podobnie robiłem na drugej at16(konfiguracja taka sama) i nie było problemu kod różnił sie tym że przerwania były cały czas właczone ,ponieważ procesor nie robił nic innego ...

    Tu mi albo odjeżdża gdzieś w kosmos albo na wyswietlaczu pojawiaja sie jakies głupoty .


    Czy problemem jest to że włączam przerwania bardzo szybko używając ich a poźniej odrazu wyłączam ? ;/ nie zabardzo rozumiem czemu tak sie dzieje.
  • REKLAMA
  • #2 10739096
    Krauser
    Poziom 26  
    Zwiększ HWSTACK. Dla prostych programów możesz zignorować takie ustawienia jak $HWSTACK, $SWSTACK, $FRAMESIZE, ale przy rozbudowanych programach warto policzyć czy wszystko gra.
  • REKLAMA
  • #3 10746907
    ojapitole
    Poziom 9  
    Dzięki zająłem sie tymi parametrami skorzystałem z podpowiedzi
    Link

    i zwiększyłem parametry dwukrotnie , potrzebuje troche sie jeszcze zagłebić w to bo nie jestem pewien jak dobrać hw stack .

    Prawdopodobnie rozchodziło sie o framesize po zwiekszeniu przestał głupieć wyświetlacz ale....

    po wyjściu z menu sterowania serw (wstawiłem tam diode) zostawia ją zapaloną albo zgaszoną czyli jeszcze musze pomęczyć te parametry .

    Dzieki za podpowiedź dzięki temu moge ruszyc dalej .
  • REKLAMA
  • #4 10774390
    ojapitole
    Poziom 9  
    Powinienem scalić odpowiedź ale to zupełnie inna rzecz

    Wymieniłem stabilizator , i dorzuciłem jeszcze jedno serwo (osobne zasilanie) wspólna masa .

    Działa dobrze ale czasami potrafi sie "zaciąć"

    Ale po zainteresowaniu sie parametrami $hwstack itp spędziłem chwile analizując działanie kodu . i w pewnym momencie bascom avr sugeruje aby parametr $hwstack przyjął wartośc większa od 1024 .

    Czy powinienm w takim razie wziąć sie za kod ponieważ jest mało "ekonomiczny" ?
  • #5 10831354
    arktik1
    Poziom 27  
    Witam.
    Pomyślałem że, dopiszę się do rozmowy o sterowaniu serwami :D .
    W BASCOM jest gotowa obsługa serw która wygląda tak:
    
    $regfile = "m16def.dat"
    $crystal = 8000000
    Config Servos = 1 , Servo1 = Portd.5 , Reload = 10
    Enable Interrupts
    Dim I As Byte , Ruch As Byte
    Do
    
    If I < 130 And Ruch = 0 Then
    Incr I
    If I = 130 Then Ruch = 1
    End If
    If I > 60 And Ruch = 1 Then
    Decr I
    If I = 60 Then Ruch = 0
    End If
    
    Servo(1) = I
    
    Waitms 200
    Loop
    

    Czy jest jakiś kalkulator by policzyć wartości RELOAD i SERVO(1) względem wartości $crystal?
    Co daje zmiana wartości w tym wypadku "I", a co daje zmiana wartości RELOAD?
REKLAMA