Программирование AVR: решение проблем, FAQ Обработчик прерывания не срабатывает Tue, March 19 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Обработчик прерывания не срабатывает Печать
Добавил(а) 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++;
}
 

Добавить комментарий


Защитный код
Обновить

Top of Page