PIC32mx Timer5 no funciona

1

Estoy luchando para que mi Timer5 funcione correctamente. Creo que he habilitado todos los registros pero la interrupción nunca ocurre. Ya puse un punto de interrupción dentro de FingerprintRun() en la oración asm("nop") y encontré que TMR5 nunca supera 0x0000 .

void __ISR(_TIMER_5_VECTOR,IPL4) _T5Interrupt(void)
{
    T5CONbits.ON = 0;
    TMR5 = 0;
    IFS0bits.T5IF = 0;
    UART_TX = 0;
    char x = 'b';
    UARTFingerprintWriteChar( x );
}

void initTIMER5( void ){  
    __asm__("EI");
    INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR); //configure multi vector
    INTEnableSystemMultiVectoredInt(); //enable interrupts

    T5CONbits.TON = 0;

    T5CONbits.TGATE = 0;
    T5CONbits.SIDL = 0;
    T5CONbits.TCKPS = 0;// 0b111;1:256 prescale value
    TMR5 = 0;
    PR5=0xD0;
    IFS0bits.T5IF = 0; // Clear timer interrupt flag
    IPC5bits.T5IP = 4; // Setting Timer 5 priority to level 4 of 7
    IPC5bits.T5IS = 1; // setting timer 5 sub priority to level 1 of 3

    IEC0bits.T5IE = 1; // Enable timer interrupts
    T5CONbits.TON = 1;
}

void main() {
    initTIMER5();
    asm("nop");
    while(1);
}

¿Me estoy perdiendo algo?

    
pregunta scuba

1 respuesta

0

parece que la interrupción no se está habilitando (no sé por qué), así que encontré otra manera de hacer que funcione.

En lugar de: IEC0bits.T5IE = 1; // Habilitar las interrupciones del temporizador

Estoy usando: IEC0 = 0x100000;

    
respondido por el scuba

Lea otras preguntas en las etiquetas