PIC: el temporizador de vigilancia está apagado por un factor de 4

0

Tengo un PIC16 (hoja de datos aquí ) para el cual uso el temporizador de vigilancia. Configuré el temporizador de vigilancia de la siguiente manera:

WDTCONbits.WDTPS = 0b01110;

De acuerdo con la página 105 de la hoja de datos, esto debería configurar el temporizador de vigilancia durante 16 segundos. Sin embargo, la interrupción del temporizador se llama después de sólo 4 segundos. (He probado el temporizador con otros valores y la discrepancia 4x siempre persiste).

Mi primer pensamiento fue que se debía a que 4xPLL estaba habilitado. Pero, según tengo entendido, el temporizador de vigilancia se basa en el reloj LFINTOSC , que es invariante en 4xPLL.

¿Por qué mi temporizador de vigilancia se ejecuta a una velocidad cuatro veces mayor que la que debería tener?

    
pregunta Randomblue

2 respuestas

1

De acuerdo con la hoja de datos que proporcionó, en la página 105, el valor que debe programar es: 01110. Por lo tanto, todo el registro debe ser 0b00011101 - > 0x1D.

Costura que ya lo hiciste. Pero, ¿está seguro de que la definición de WDTCONbits.WDTPS no contiene un error? Trate de asignar a todo el registro directamente.

El watchdog es alimentado por el oscilador interno de baja frecuencia. No tiene nada que ver con el PLL.

    
respondido por el Blup1980
0

Los bits de temporización son los bits 5 a 1, lo que significa que durante 16 segundos el registro debe escribirse con 0b00011100 (o el LSB puede ser 1 si está controlando el WDT en el software). No estoy seguro de por qué estaría 4 veces desactivado en lugar de 2, pero intente escribir el valor anterior directamente en el registro completo (es decir, WDTCON ) y vea si funciona correctamente.

También, verifique la errata de la parte, para ver si se mencionan errores con respecto a la WDT.

    
respondido por el Oli Glaser

Lea otras preguntas en las etiquetas