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

AtMega 324/644/1284 - reset mikrokontrolera po odblokowaniu przerwań

cedmoon 11 Lis 2015 13:39 1167 6
REKLAMA
  • #1 15141256
    cedmoon
    Poziom 2  
    Witam,

    Mam problemz AtMega z tematu. Ustawiam konfigurację Timerów wg manualki: tryb CNC; prescaler; zezwolenie na przerwania CompareMatch. Po ustawieniu tego odblokowuję przerwania przez "sei();" i.. procesor się resetuje. Dodam też, że taki sam kod działa bez problemów na AtMega 16/32/64. Czy przy pisaniu kodu na te procesory (324/644/1284) trzeba coś szczególnego zmieniać czego nie trzeba było robić przy "normalnej" AtMega 32 ?

    Widzę, że reset wywołuje się gdy dochodzi do próby wymuszenia przerwania, tzn. gdy nie ustawiam żadnych przerwań polecenie "sei();" nie powoduje żadnej kolizji z programem, ale gdy już próbuję (czy to Timer, USATR) za każdym razem wyskakuje reset.

    WatchDog jest wyłączony;

    kod do ustawienia Timera0:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • REKLAMA
  • #3 15141412
    cedmoon
    Poziom 2  
    Kod jest prosty, bo siedze nad nim od dawna i już wyrzuciłem wszystko co było zbędne. Zależy mi na tym by na wyświetlaczu pojawił się napis "Timer0 OK".


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #4 15141788
    KrisH
    Poziom 14  
    Jeżeli dobrze patrzę w DS, to tryb CTC jest ustawiany bitem WGM02=1 (WGM00=0 i WGM01=0, WGM03=0) w rejestrze TCCR0B a nie WGM01=1 w rejestrze TCCR0A.
  • REKLAMA
  • #5 15142121
    cedmoon
    Poziom 2  
    KrisH!

    Mam prośbę do Ciebie, czy mógłbyś wskazać miejsce skąd wziąłeś DS dla tego ukłądu? Sprawdziłem Twoją podpowiedź i okazało się, że program ruszył. Dziękuję bardzo za pomoc i widzę, że te DS'y które znajduję z Atmela nie koniecznie odpowiadają rzeczywistości. Poniżej podam link do tego DS'a którym się kierowałem pisząc program i wg nich za tryb CTC odpowiada tryb WGM1 w TCCR0A, dlatego też proszę byś podesłał jakiś link do tego DS'a z którego Ty czerpałeś wiedzę.

    link do DS'a z którego korzystałem:
    Link

    Temat uważam za zamknięty.
  • #6 15142150
    tadzik85
    Poziom 38  
    cedmoon napisał:
    KrisH!

    Mam prośbę do Ciebie, czy mógłbyś wskazać miejsce skąd wziąłeś DS dla tego ukłądu? Sprawdziłem Twoją podpowiedź i okazało się, że program ruszył. Dziękuję bardzo za pomoc i widzę, że te DS'y które znajduję z Atmela nie koniecznie odpowiadają rzeczywistości. Poniżej podam link do tego DS'a którym się kierowałem pisząc program i wg nich za tryb CTC odpowiada tryb WGM1 w TCCR0A, dlatego też proszę byś podesłał jakiś link do tego DS'a z którego Ty czerpałeś wiedzę.

    link do DS'a z którego korzystałem:
    Link

    Temat uważam za zamknięty.


    Str 133
  • #7 15142161
    cedmoon
    Poziom 2  
    Hmm...
    Dziwne, Ustawiając Timer0 sprawdzałem tylko dla Timera0.. a Ty korzystasz z Timera1.. no dobra, najważniejsze, że działa.

    Dzięki Wam :)
REKLAMA