Witam, Przerabiam właśnie przykład projektu wielozadaniowego GreenBooka. Borykam się z problemem ustawienia Timera0. Ustawienia inicjalizujące wyglądają następująco:
Kod:
TCCR0|=(1<<WGM01)//włączenie trybu CTC
TCCR0|=(1<<CS02) | (1<<CS00);//Dzielnik na 1024
OCR0=(F_CPU/1024UL)/50UL;// Ze wzoru wychodzi wartość 216 dla F_CPU -11059200
TIMSK|=1<<OCIE0;
Takie ustawienie timera daje mi przerwanie co 20ms. Czyli żeby uzyskać czas 1s muszę zliczyć 50 takich impulsów. W przerwaniu od timera piszę :
Kod:
ISR(TIMER0_COMP_vect){
++s1_cnt;// zmienna globalna zadeklarowana gdzieś tam z przodu
if(s1_cnt==49) WY_LED1_TOG,s1_cnt=0;// Zliczenie 50 impulsów
}
Z powyższych zapisów dioda led powinna zmieniać stan co 1s. A robi to z 3 razy na sekundę. Pytanie brzmi gdzie jest błąd bo mi już pomysły się wyczerpały i nadszedł czas żeby może ktoś mądrzejszy się wypowiedział

. Z góry dziękuję za odpowiedz