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?