Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[ATTiny2313][ASM] CTC działa dla Timer1, ale nie Timer0

CSun 13 Kwi 2011 08:59 2318 2
  • #1 13 Kwi 2011 08:59
    CSun
    Poziom 11  

    Witam, mój problem polega na tym, że chcę włączyć tryb CTC dla Timer0. Próbuję to zrobić (ASM i C) i w efekcie licznik się nie zeruje na wertości TOP, ale leci do MAX (255). Jednak tak samo napisany kod dla Timer1 już działa zerując licznik po osiągnięciu wartości TOP (np. 50).

    TIMER1 CTC MODE:

    Kod: asm
    Zaloguj się, aby zobaczyć kod


    Powyższy kod działa i TCNT1L zeruje się w momencie zrównania z OCR1AL, natomiast w poniższym przypadku zerowanie nie występuje:

    TIMER0 CTC MODE:
    Kod: asm
    Zaloguj się, aby zobaczyć kod


    Czy ja robię coś źle, że to nie działa?

    Na pytanie jak to sprawdzam:
    Używając przerwania INT1 zatrzymuję timer i wyrzucam jego licznik na LCD więc widzę jakie wartości przyjmuje.

    0 2
  • Pomocny post
    #2 13 Kwi 2011 09:24
    Andrzej__S
    Poziom 28  

    CSun napisał:

    Kod: asm
    Zaloguj się, aby zobaczyć kod


    Do włączenia trybu CTC dla timera 0 służy bit WGM01, a nie WGM02 jak w timerze 1. Z kolei bit WGM01 jest w rejestrze TCCR0A:
    Kod: asm
    Zaloguj się, aby zobaczyć kod

    0
  • #3 13 Kwi 2011 09:41
    CSun
    Poziom 11  

    Dzięki, działa :D

    Zamykam temat.

    0