Napisałem taki kod:
#define F_CPU 1000000UL #include <cstdlib> #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include "lcd.c" int main(void) { LCD_Ini(); sei(); TIMSK |= (1<<TOIE0); TCCR0 |= (1<<CS01); _delay_ms(5000); TCCR0 &= ~(1<<CS01); char Temp[8]; sprintf(Temp,"%i", TCNT0); LCD_ZapiszText(Temp); } ISR(TIMER0_OVF_vect) { TCNT0 = 0; }
Według moich obliczeń (reszta z dzielenia 5.000.000 przez 256) wynika, że TCNT0 powinno być równe 64, a na wyświetlaczu pokazuje że jest równe 231. Zauważyłem, że timer nie działa poprawnie. Czemu tak jest?