Код
char __low_level_init (void) {
...
MCUCR = (1<<ISC01)|(0<<ISC00); // разрешил внешнее прерывание INT0 по падению фронта
GICR = (1<<INT0); // разрешил глобальное прерывание по INT0
...
PORTD = (0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(0<<1)|(0<<0);
DDRD =(1<<7)|(1<<6)|(1<<5)|(1<<4)|(1<<3)|(0<<2)|(1<<1)|(1<<0); // PD2 (int0) вход
return 1;
}
вот в main () разрешаю глобальные прерывания
Код
void main (void) {
__enable_interrupt();
...
а вот уже в др. файле обработчик прерывания
Код
#pragma vector = INT0_vect
__interrupt void INT0_interrupt (void)
{
putString ("прерывание");
putString ("\r\n");
...
на осцилле при старте единица. Подаю ноль, в обработчик не вваливается.
Чего не вижу?
Сообщение отредактировал Метценгерштейн - Sep 4 2013, 15:04