Quiero encender los LED 0, 1 y 2 cuando se activan pinc1, pinc2 y pinc3. Además, quiero usar una interrupción de cambio de pin.
Problema: solo el LED 1 está encendido.
Este es mi código y estoy usando atmega328p y Proteus para simulación:
#include <avr/io.h>
#include <avr/interrupt.h>
volatile uint8_t bemf = 0 ;
ISR(PCINT1_vect)
{
if (PINC & 00000010){bemf=1;}
if (PINC & 00000100){bemf=2;}
if (PINC & 00001000){bemf=3;}
}
int main(void)
{
DDRD = 0xFF ;
PORTD = 0x00;
PCMSK1 |= 1<<PCINT10 | 1<<PCINT11 | 1<<PCINT9 ; // pinc1 pinc2 and pinc3
PCICR |= 1<<PCIE1 ;
sei();
while (1)
{
if (bemf==1){PORTD= 1<<PIND0;} // TURN ON LED 0
if (bemf==2){PORTD= 1<<PIND1;} // TURN ON LED 1
if (bemf==3){PORTD= 1<<PIND3;} // TURN ON LED 2
}
}