Witam,
pisze program w którym wykorzystuję 16 bitowy Timer1 z Atmegi 328.
Najpierw konfiguruję go tak:
a potem mam procedurę przerwania której zadaniem testowym jest wygenerować przebieg prostokątny:
Problem w tym że wygenerowany przebieg ma poprawne długości stanu niskiego i wysokiego ale co jakiś czas jest zakłócony poprzez nieoczekiwane skrócenie cyklu.
Dzieje sie to co około 220ms co odpowiada pełnemu przebiegowi licznika (65535x3.34us=227ms).
Dziwi mnie to bo stan licznika zmieniam w przerwaniu a on zachowuje się jakby przeleciał całe 65535 niezależnie od moich wpisów w rejestr licznika.
Pomyslałem może jest drugi licznik 16-bitowy który mi coś zakłóca, ale ta atmega ma tylko jeden 16 bitowiec.
Proszę o podpowiedź gdzie robię błąd.
pisze program w którym wykorzystuję 16 bitowy Timer1 z Atmegi 328.
Najpierw konfiguruję go tak:
Kod: VB.net
a potem mam procedurę przerwania której zadaniem testowym jest wygenerować przebieg prostokątny:
Kod: VB.net
Problem w tym że wygenerowany przebieg ma poprawne długości stanu niskiego i wysokiego ale co jakiś czas jest zakłócony poprzez nieoczekiwane skrócenie cyklu.
Dzieje sie to co około 220ms co odpowiada pełnemu przebiegowi licznika (65535x3.34us=227ms).
Dziwi mnie to bo stan licznika zmieniam w przerwaniu a on zachowuje się jakby przeleciał całe 65535 niezależnie od moich wpisów w rejestr licznika.
Pomyslałem może jest drugi licznik 16-bitowy który mi coś zakłóca, ale ta atmega ma tylko jeden 16 bitowiec.
Proszę o podpowiedź gdzie robię błąd.