Estoy tratando de aprender cómo usar interrupciones para un proyecto usando un Attiny85. He escrito un programa simple de lo que he aprendido de los tutoriales. Sin embargo, cuando intento crear el programa en Atmel Studio, aparece este mensaje de error:
"La declaración estática del error 2 de '__vector_1' sigue a la declaración no estática"
No entiendo qué significa esto o dónde se encuentra mi error. He buscado respuestas por todas partes, pero aún no he encontrado el motivo del error. Aquí está mi código:
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
int main (void)
{
DDRB = 0b11111011; // set all pins to be output except PB2 to prevent false signals
GIMSK |= (1<<INT0); //set PB2 to interrupt
sei();
MCUCR |=(1<<ISC00); //set to detect any change as interrupt
MCUCR &= ~(1<<ISC01);
ISR(INT0_vect)
{
// dot
PORTB = 0b00001000;
_delay_ms(500);
PORTB = 0b00000000;
_delay_ms(200);
// dot
PORTB = 0b00001000;
_delay_ms(500);
PORTB = 0b00000000;
_delay_ms(200);
// dot
PORTB = 0b00001000;
_delay_ms(500);
PORTB = 0b00000000;
_delay_ms(600);
// dash
PORTB = 0b00001000;
_delay_ms(1000);
PORTB = 0b00000000;
_delay_ms(500);
// dash
PORTB = 0b00001000;
_delay_ms(1000);
PORTB = 0b00000000;
_delay_ms(500);
// dash
PORTB = 0b00001000;
_delay_ms(1000);
PORTB = 0b00000000;
_delay_ms(600);
// dot
PORTB = 0b00001000;
_delay_ms(500);
PORTB = 0b00000000;
_delay_ms(200);
// dot
PORTB = 0b00001000;
_delay_ms(500);
PORTB = 0b00000000;
_delay_ms(200);
// dot
PORTB = 0b00001000;
_delay_ms(500);
PORTB = 0b00000000;
_delay_ms(2000);
}
while (1) {
}
}
Si alguien pudiera proporcionar asistencia, sería muy apreciado.
Gracias,
-David