Cześć.
Mój problem dotyczy Atmegi8 i obsługi Timera2 w trybie CTC.
Poniżej przedstawie napisany kod i problem który próbuję rozwiązać od pewnego czasu.
A teraz obliczenia:
Taktowanie procesowa 1MHz, preskaler 8 daje 125kHZ co przekłada się na czas impulsu równy 0,000008s .
Ustawiając OCR2 na 200 nasze przerwanie będzie wykonywać się co 0,0016s co daje 625 przerwań na sekundę
Problem w tym, że najprawdopodobniej bardzo rzadko spełniają się warunki porównujące wartości liczników w ifach czyli odswiez_wyswietlacz==312 itd. Twierdzę tak, ponieważ gdy warunek zmienię na odswiez_wyswietlacz>312 to wyświetlacz się odświeża.
Co robię nie tak, że nie mogę uchwycić momentu w którym licznik ma konkretną wartość?
Pytanie drugie.
Czy możecie mi poradzić, jak zaprogramować mikrokontroler, aby z wykorzystaniem timera2 tak zorganizować program aby np. wyświetlacz odświeżał się co 0,5s, pomiar robił się co 2s, stan wejść binarnych był sprawdzany co 1s.
Czy należy to robić właśnie w taki sposób, że w przerwaniu inkrementuje/dekrementuje kilka liczników od wartości których uzależniam wykonanie poszczgólnych części programu?
Czy powinienem zastosować inne podejście ?
Mój problem dotyczy Atmegi8 i obsługi Timera2 w trybie CTC.
Poniżej przedstawie napisany kod i problem który próbuję rozwiązać od pewnego czasu.
Kod: C / C++
A teraz obliczenia:
Taktowanie procesowa 1MHz, preskaler 8 daje 125kHZ co przekłada się na czas impulsu równy 0,000008s .
Ustawiając OCR2 na 200 nasze przerwanie będzie wykonywać się co 0,0016s co daje 625 przerwań na sekundę
Problem w tym, że najprawdopodobniej bardzo rzadko spełniają się warunki porównujące wartości liczników w ifach czyli odswiez_wyswietlacz==312 itd. Twierdzę tak, ponieważ gdy warunek zmienię na odswiez_wyswietlacz>312 to wyświetlacz się odświeża.
Co robię nie tak, że nie mogę uchwycić momentu w którym licznik ma konkretną wartość?
Pytanie drugie.
Czy możecie mi poradzić, jak zaprogramować mikrokontroler, aby z wykorzystaniem timera2 tak zorganizować program aby np. wyświetlacz odświeżał się co 0,5s, pomiar robił się co 2s, stan wejść binarnych był sprawdzany co 1s.
Czy należy to robić właśnie w taki sposób, że w przerwaniu inkrementuje/dekrementuje kilka liczników od wartości których uzależniam wykonanie poszczgólnych części programu?
Czy powinienem zastosować inne podejście ?