Witam
W programie wykorzystuję dwa timery: Timer0 i Timer2. 0 służy do zliczania zmiennej powstającej w czasie programu i do jego działania (narazie) nie mam zastrzeżeń.
Problem jest z Timerem2. Służy on do zapalania diody na określony przez użytkownika czas (wartość czasu ustawiana przyciskami +-).
Po wciśnięciu przycisku zapalającego diodę, świeci się ona tak długo jak został ustawiony czas świecenia, zatem tu jest wszystko ok.
Jednak po zgaśnięciu diody, na wyświetlaczu LCD nic się nie dzieje; program został "zamrożony" i nie reaguje na żadne przyciski. Czemu to przerwanie wykrzacza mi cały program?
Zależy mi aby wykorzystać Timer2, z racji tego że jest on 8bitowy i po preskalowaniu /64 wychodzi mi ~1ms na jedno przerwanie, czyli akurat taka jednostka jaką wykorzystuję przy czasie zapalenia diody.
Jeśli ktoś zna jakiś lepszy sposób na zliczenie tych ustawionych milisekund zapalenia diody bez zablokowania programu (wszelkie delaye odpadają) to proszę, podzielcie się pomysłami
Tymczasem zapoznajcie się z poniższym kodem, może uda wam się wychwycić przyczynę tego buga
W programie wykorzystuję dwa timery: Timer0 i Timer2. 0 służy do zliczania zmiennej powstającej w czasie programu i do jego działania (narazie) nie mam zastrzeżeń.
Problem jest z Timerem2. Służy on do zapalania diody na określony przez użytkownika czas (wartość czasu ustawiana przyciskami +-).
Po wciśnięciu przycisku zapalającego diodę, świeci się ona tak długo jak został ustawiony czas świecenia, zatem tu jest wszystko ok.
Jednak po zgaśnięciu diody, na wyświetlaczu LCD nic się nie dzieje; program został "zamrożony" i nie reaguje na żadne przyciski. Czemu to przerwanie wykrzacza mi cały program?
Zależy mi aby wykorzystać Timer2, z racji tego że jest on 8bitowy i po preskalowaniu /64 wychodzi mi ~1ms na jedno przerwanie, czyli akurat taka jednostka jaką wykorzystuję przy czasie zapalenia diody.
Jeśli ktoś zna jakiś lepszy sposób na zliczenie tych ustawionych milisekund zapalenia diody bez zablokowania programu (wszelkie delaye odpadają) to proszę, podzielcie się pomysłami
Tymczasem zapoznajcie się z poniższym kodem, może uda wam się wychwycić przyczynę tego buga
Kod: C / C++