Cytat:
Ale jeśli mniejsze, to już po 1 takcie zliczania powinno wyskoczyć z przerwania a tak nie jest.
Taktowanie timera to 16MHz/1024 = 15625Hz.
Pojemność timera to 256, więc przerwanie pojawia się z częstotliwością 15625/256 = ~61Hz.
Aby uzyskać opóźnienie ok. 1 sekundy przerwanie musi pojawić się 61 razy i dopiero za 62 zapalić lub zgasić diodę. I tak się właśnie dzieje. Zmienna (rejestr)
'counter' zwiększa się o 1 po każdym wejściu w przerwanie. Instrukcja
brlo powoduje przeskakiwanie do etykiety
'koniec_przerwania' (omijanie instrukcji
cbi PORTB, 0) do momentu, kiedy zawartość rejestru
'counter' osiągnie 62 (procedura obsługi przerwania została uruchomiona 62-gi raz), i dopiero wtedy instrukcja
cbi PORTB, 0 zostaje wykonana (zapali lub zgasi diodę, w zależności od tego, jak masz ją podłączoną).
Miganie mogłoby wyglądać mniej więcej tak (przeróbka Twojego kodu - jedno z wielu możliwych rozwiązań):
Zaloguj się, aby zobaczyć kod