aquí está el código
#define F_CPU 1000000UL
#include <avr/io.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
int main(void)
{
DDRA |= (1 << PA0);
DDRB |= (1 << PB0);
DDRD |= (1 << PD2);
MCUCR |= (1 << ISC01);
GICR |= (1 << INT0);
sei();
while(1)
{
if (PINB == 0b00000001) //when i trigger pbo it will light pa0
{PORTA = 0b00000001;}
}
//idont want any thing to happen i want pa0 is on for ever
}
ISR(INT0_vect)
{
_delay_ms(10000);
PORTA ^=(1<<PA0); //toggle pa0
}
y el circuito
el propósito es cuando presiono que el interruptor PB0 led conectado a PA0 se encienda
luego, cuando dispare la interrupción en PD2, esto debería cambiar PA0 para apagarlo
lo extraño cuando enciendo PA0 para apagarlo, el led se enciende automáticamente de nuevo sin activar la interrupción, ¿por qué?
¿Aunque este comportamiento no ocurre en la simulación de Proteus?