Я играю с моим набором MEGA-1284p и студией avr, и мне нужна какая-то помощь в решении проблемы. Мне нужно, чтобы переключить светодиод 3 на кнопку SW0.AVR C не будет прерывать прерывание
Вот код AVR C:
#define F_CPU 11059200UL // The Xplained kit runs at 11.0592 MHz
#include <stdio.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
int ex37() {
DDRB = 0x04;// LED3 as output
PORTB = 0x04; //LED3 off
EIMSK |= (1<<INT0) | (0<<INT1) | (0<<INT2); // Enable external interrupt 0 (SW0)
MCUCR |= (1<<ISC01) | (1<<ISC00); // INT0 on rising edge.
sei(); // Start interrupts
_delay_ms(1000); //wait 1000 ms = 1 sec
PORTB = 0x00; //LED3 on
_delay_ms(1000); //wait 1000 ms = 1 sec
PORTB = 0x04; //LED3 off
while(1) {
};
return 0;
}
ISR(INT0_vect) {
_delay_ms(1000); //wait 1000 ms = 1 sec
if (PORTB == 0x04){
PORTB = 0x00;
} else {
PORTB = 0x04;
}
}
Но функция для изменения LED3 никогда не вызывается до тех пор, как я могу сказать.
Это решение, похоже, дает мне некоторые ошибки: неопределенная ссылка на '__disable_interrupt '..., неопределенная ссылка на' __watchdog_reset' ..., неопределенная ссылка на '__enable_interrupt '.... Знаете ли вы, что происходит не так? – Johannes