Estoy intentando configurar el timer2, pero cada vez que ocurre una interrupción, el microcontrolador pasa al ISR y luego vuelve a iniciar la función main (). Estas son las funciones:
int main(void)
{
//Set up I/O Port
AD1PCFGL = 0xFFFF; //set to all digital I/O
TRISB = 0x0000; //configure all PortB as input, RB9 as output
//Main Program Loop, Loop forever
Timer2Init();
while(1)
{
//LATBbits.LATB1=0;//process data
};
return(0);
}
Tengo las funciones de timer2 en un archivo timers.c
void Timer2Init(void)
{
TMR2 = 0;// clear the timer
T2CONbits.T32=0; //
T2CONbits.TCKPS = 0b00; // prescaler = 256
T2CONbits.TGATE = 0; //0 = Gated time accumulation disabled
T2CONbits.TCS = 0; //Internal clock (FOSC/2)
PR2 = 0x50; // preset
IEC0bits.T2IE = 1;
IPC1bits.IC2IP = 0b111;//set interrupt priority
T2CONbits.TON =1;
IFS0bits.T2IF = 0;
}
void __attribute__((interrupt, no_auto_psv)) _T2Interrupt(void)
{
LATBbits.LATB9 = ~LATBbits.LATB9; //Toggle output to LED
IFS0bits.T2IF = 0; //_T1IF = 0;
return;
}