Estoy tratando de lograr 1 segundo en un temporizador en PIC32MX575F pero de alguna manera no lo estoy Alcanzando lo que quiero. Algunas personas dicen que tengo que mirar el PLLDIV, otras personas dicen que debería mirar el PLLMUL. He seguido un par de ecuaciones, pero ninguna de ellas está alcanzando la interrupción de 1 segundo. No sé qué estoy haciendo mal, así que quiero saber cuál es la mejor forma de calcular.
Aquí está mi código:
void initTIMER2(void) {
T2CONbits.ON = 0;
IFS0bits.T2IF = 0;
T2CON = 0x0;
TMR2 = 0;
PR2=0x7A12;
T2CONbits.TCKPS = 0b111;//1:256 prescale value
T2CONbits.T32 = 0;//16 bit timer
IPC2bits.T2IS = 0;
IPC2bits.T2IP = 2;
IEC0bits.T2IE = 1;
T2CONbits.ON = 1;
}
Estas son las confusiones que he hecho:
#pragma config FNOSC = FRC //
#pragma config FPBDIV = DIV_1
T2CONbits.TCKPS = 0b111
EDITADO:
Después de algunas investigaciones, parece que el código está llamando a OSCConfig( OSC_FRC_PLL, OSC_PLL_MULT_20, OSC_PLL_POST_2, OSC_PB_DIV_1)
en algún lugar. Ya hice cálculos con estos nuevos valores pero sin éxito.
Entonces, si OSC_FRC_PLL
se declara como #define OSC_FRC_PLL (1 << _OSCCON_NOSC_POSITION)
, significa en la hoja de datos "001 = Oscilador RC rápido con división por N con módulo PLL (FRCDIV+PLL)
".