Interrumpir en el XMEGA

1

Tengo 3 botones conectados a PIN1, PIN3, PIN5 de PORTA de un XMEGA. Si se empujan se entregan un borde descendente. Intento generar interrupciones usando esos botones, comencé con uno, esto es lo que he hecho:

void buttonINT(){
    // PORTA 
    PORTA.PIN1CTRL = PORT_OPC_PULLUP_gc | PORT_ISC_FALLING_gc;
    PORTA.INT0MASK = PIN1_bm;
    PORTA.INTCTRL = PORT_INT0LVL0_bm;
    PMIC.CTRL = PMIC_LOLVLEN_bm;
    sei();
    }
ISR(PORTA_INT0_vect){
    printf(" INTERRUPT \n");
}

en la parte principal, llamo buttonINT() una vez, pero ¿se imprime el mensaje todo el tiempo?

¿Alguna idea de lo que estoy haciendo mal aquí?

    
pregunta Engine

1 respuesta

1

Debe borrar el indicador de interrupción en ISR (), algo como:

PORTA.INT0FLAGS = PIN1_bm;

(No he buscado las etiquetas exactas.)

    
respondido por el rioraxe

Lea otras preguntas en las etiquetas