Может ли кто-нибудь выяснить, почему мое внешнее прерывание 0 не работает? Я использую плату AVR STK 500 с ATmega164P. Это потому, что контакт D2 имеет две функции?Внешнее прерывание 0 не работает
#include <asf.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#define F_CPU 8000000UL
#include <util/delay.h>
ISR(INT0_vect)
{
PORTB = 1;
for(int i = 0; i < 7; i++)
{
_delay_ms(500);
PORTB << 1;
}
}
int main (void)
{
board_init();
sei();
PORTD = 0xFF;
DDRD = 0x00;
PORTB = 0x00;
DDRB = 0xFF;
while(1)
{
PORTB = PIND;
}
}
Что делает board_init()? Вы настраиваете/активируете внешнее прерывание? –
Не задерживайте внутри ISR. – JimmyB
Просто, чтобы подчеркнуть утверждение JimmyB, не помещайте задержку внутри ISR. –