Esto será ridículamente fácil para alguien que ha trabajado con el compilador dsPIC33 y XC16, pero ya me ha costado un día. ¡Espero que alguien me pueda ahorrar más tiempo perdido!
¿Podría alguien decirme por favor lo que he hecho mal aquí? Todo lo que estoy tratando de hacer es apagar algunos LED's usando una interrupción externa.
/* Device header files */
#include <stdlib.h>
#include <xc.h>
int main(int argc, char** argv) {
// setup internal clock for 80MHz/40MIPS
// 7.37/2=3.685*43=158.455/2=79.2275
CLKDIVbits.PLLPRE=0; // PLLPRE (N2) 0=/2
PLLFBD=41; // pll multiplier (M) = +2
CLKDIVbits.PLLPOST=0; // PLLPOST (N1) 0=/2
ANSELE = 0x0000; //set all of port B as Digital
TRISE=0xF0;//configures part of port B as output
LATE=0x0F; // writes data to port B
RPINR0= 0x5400;//set pin 1 as interrupt 1
INTCON2 = 0x0000; /*Setup INT0, INT1, INT2, interupt on falling edge*/
IFS1bits.INT1IF = 0; /*Reset INT1 interrupt flag */
IEC1bits.INT1IE = 1; /*Enable INT1 Interrupt Service Routine */
IPC5bits.INT1IP = 4; /*set low priority*/
//Main Program
while (1);
return (EXIT_SUCCESS);
}
//_INT1Interrupt() is the INT1 interrupt service routine (ISR).
void __attribute__((__interrupt__)) _INT1Interrupt(void);
void __attribute__((__interrupt__, auto_psv)) _INT1Interrupt(void)
{
LATE=0x00; // writes data to port B
IFS1bits.INT1IF = 0; //Clear the INT1 interrupt flag or else
//the CPU will keep vectoring back to the ISR
}
Gracias de antemano!