Hola a todos, estoy programando un dsPIC30F4013 con C30, y tengo un problema: programo el Timer1 para que se active desde un boton fisico
(conectado a INT1), para que al presionar el boton, haga un toggle de un puerto de salida cada 0.5 segundos, el problema es que sólo hace el toggle una vez,
no continuamente. (NOTA: el boton tiene controlado el bounce mediante hardware).
El codigo es el siguiente:
int main(void)
{
// INITIALIZATION
//Init();
TRISB = 0;
IEC1bits.INT1IE = 1;
IEC1bits.INT2IE = 1;
// GENERAL LOOP
loop:
//vacio durante la prueba actual
goto loop;
} //main
void _INT1Interrupt(void) //BOTON VERDE
{
IFS1bits.INT1IF = 0; //clear interrupt flag
TMR1 = 0; //borra el timer
PR1 = 0xE4E2; //Pone el periodo de T1 a d58,594 que equivale a 0.5 segs
IEC0bits.T1IE = 1; //Habilita la interrupcion de T1
T1CON = 0x8030; //Activa el Timer con Preescaler a 1:256, con OSC interno
PORTBbits.RB2 = 1;
}
void _T1Interrupt(void) //TIMER 1
{
IFS0bits.T1IF = 0; //clear interrupt flag
PORTBbits.RB2 = - PORTBbits.RB2; //toggle bit
}
NOTA: la interrupcion del boton, si funciona cada vez que éste es presionado. Su ayuda sera muy apreciada.