Здравствуйте!
Понадобился мне таймер, чтоб время отсчитывать. Начитался всякого разного и ввожу такой код.
#define F_CPU 8000000
#include <avr/io.h>
#include <avr/interrupt.h>
ISR (TIMER0_OVF_vect)
{
asm("nop");
}
int main(void)
{
sei();
TIMSK = (1<<TOIE0);
TCCR0 = (1<<CS00);
while(1)
{
asm("nop");
}
}
Я так понял что когда в регистре TCNT0 будет 255, таймер сбрасывается и на TOV0 (флаг прерывания) будет единица. И если прерывание по переполнению разрешено (TIMSK = (1<<TOIE0);), то запускаться функция обработки этого прерывания (ISR (TIMER0_OVF_vect)). Но что я только не делал, а функция эта не запускается и TOV0 не сбрасывается на ноль автоматически. При отладке таймер переполняется и ничего не происходит.
Что тут может быть не так? Может я что-нибудь не учёл или ещё что?
Программирую в AtmelStudio 6.