el programa se reinicia después de ISR para TIMER 2 en pic24F

0

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;
}
    
pregunta joc

0 respuestas

Lea otras preguntas en las etiquetas