Обработчик прерывания не срабатывает |
|
Добавил(а) microsin
|
Обработчик прерывания не работает, компилятор выдает предупреждения наподобие:
../timer1.c:21:1: warning: return type defaults to 'int' [enabled by default]
../timer1.c: In function 'ISR':
../timer1.c:21:1: warning: type of '__vector_4' defaults to 'int' [enabled by default]
../timer1.c:39:1: warning: control reaches end of non-void function [-Wreturn-type]
Проблема в том, что в код, где определен обработчик прерывания, не подключен заголовочный файл interrupt.h. После его подключения директивой #include предупреждения пропадают, и код начинает работать нормально.
#include < avr/io.h>
#include < avr/interrupt.h>
void SetupTC1 (void)
{
TCCR1 = (1 << CS13)|(1 << CS10);
//Разрешить прерывание по переполнению:
TIMSK |= (1 << TOIE1);
}
ISR(TIMER1_OVF_vect)
{
timecnt++;
}
|