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

WinAVR[c] tryb CTC (ICR1 nie zeruje zegara)

pawelvod 29 Mar 2011 13:23 1824 6
REKLAMA
  • #1 9336499
    pawelvod
    Poziom 18  
    Tak jak w temacie. Ustawiam przerwanie:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Przerwanie chodzi. Niestety dolicza do 0xffff; moją intencją było zerowanie przerwania przy liczniku 1250. Chciałem do tego użyć ICR1 bo OCR będą mi oba potrzebne.
  • REKLAMA
  • REKLAMA
  • #3 9336558
    pawelvod
    Poziom 18  
    Atmega16. Poprawiłem na:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    i nie działa
  • REKLAMA
  • #5 9336571
    pawelvod
    Poziom 18  
    No teraz to przestał w ogóle liczyć. Oczywiście sei() gdzieś tam jest. Inne przerwania chodzą (to dość duży kod już).
    Zatrzymuje go linia trybu CTC
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    (w normalu liczy)
  • Pomocny post
    #6 9336586
    dondu
    Moderator na urlopie...
    Bo ustawiasz flagę przerwania od przepełnienia licznika, które teraz już (chyba - nie pamiętam) nie nastąpi ponieważ masz już prawidłowo ustawiony tryb CTC.
    Ale to sprawdź na wykresach trybu CTC.

    Jeżeli przerwanie miało nastąpić przy ICR1 to do tego jest chyba flaga : OCIE1A

    Nie poprawiaj tylko wklej ponownie fragment kodu.
  • REKLAMA
  • #7 9336643
    pawelvod
    Poziom 18  
    Dokładnie tak jak piszesz i btw serwo się rusza:). Prosty kod na przerwaniu przy zegarze 16mHz jakby ktoś potrzebował:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Ruszanie uzyskujemy poprzez +/- do OCR1B
REKLAMA