La interrupción INT0 en PIC32MX110F016 no funciona

-1

Estoy tratando de poner el INT0 funcionando en un PIC32MX110F016 pero parece que nunca funciona ahí. El pin INTO se alimenta eléctricamente con una resistencia de pull-up y cuando presiono un botón táctil pasa de la lógica 1 a 0, pero parece que la interrupción nunca ocurre en mi código.

void interruptInit(){
INTCONbits.INT0EP = 0;      // edge polarity ( 1 rising, 0 falling edge )
INTCONCLR = 0x00000001; // clear the bit for falling edge trigger
IPC0bits.INT0IP = 4;       // interrupt priority
IPC0bits.INT0IS = 1;       // interrupt sub priority = 1   
IFS0SET = 0x00000002; 
IFS0CLR = 0x00000003; 
IEC0SET = 0x00000003;       // enable INT0 interrupt
}


void __ISR(_EXTERNAL_0_VECTOR, ipl4) INT0Interrupt( void) //interrupt
{
if (IFS0bits.INT0IF)  
    IFS0bits.INT0IF = 0;       // clear the INT0 interrupt

} 


int32_t main(void) {
interruptInit();
while (1); }
    
pregunta scuba

1 respuesta

1

He realizado algunas modificaciones que incluyen habilitar las interrupciones y el vector múltiple del sistema para interrupciones. En la función interruptInit () decidí borrar todas las configuraciones iniciales y mirar la hoja de datos para aclarar y habilitar solo los pines relevantes. Por saber, la interrupción (INT0) está funcionando bien.

void __ISR( _EXTERNAL_0_VECTOR, ipl2) InterruptHandler_INT0 (void){ 
IFS0bits.INT0IF = 0;
}

void interruptInit(){
INTCONbits.INT0EP = 0;
IPC0bits.INT0IS = 0;
IPC0bits.INT0IP = 1;
IEC0bits.INT0IE = 1;
IFS0bits.INT0IF = 0; 
}

int32_t main(void) {
__asm__("EI"); 
INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR); //configure multi vector
INTEnableSystemMultiVectoredInt(); //enable interrupts
interruptInit()
while (1);
}
    
respondido por el scuba

Lea otras preguntas en las etiquetas