Restablecimiento de Watchdog usando el compilador C32 v2.00

3

La compilación de un proyecto PIC32 existente usando el compilador v2.00 C produce un reinicio continuo de watchdog. Este problema no aparece con el compilador v1.12 anterior. Cambiar el valor de postcaler del watchdog (hasta 1048 segundos) no tiene efecto. El reinicio del watchdog se produce casi inmediatamente después del inicio, definitivamente no hay tiempo suficiente para que el temporizador caduque. Al deshabilitar el watchdog, el código se ejecuta como se espera.

Hubo un cambio en el código de inicio en v2.00, pero no estoy usando ningún código de inicio personalizado, que yo sepa. ¿Podría haber un problema con el temporizador utilizado por el watchdog que no se habilita correctamente? ¿Dónde debería buscar para tratar de solucionar este problema?

MÁS INFORMACIÓN

El reinicio se produce cuando borro el temporizador de vigilancia. Si uso

WDTCONSET = 0x01;
// or
WDTCONbits.WDTCLR = 1;
// or
ClrWdt();

Se producirá el reinicio.

Si no reinicio el temporizador de vigilancia (dejar que el temporizador caduque), obtengo un reinicio después del tiempo especificado por el postscalar, como se esperaba.

    
pregunta Erik

2 respuestas

3

Todos los ejemplos del kit de inicio PIC32 apagan el WDT durante la inicialización con:

  

#pragma config FWDTEN = OFF // Watchdog Timer

Deberías hacer lo mismo.

    
respondido por el Leon Heller
0

Puede importar los archivos HEX en MPLAB y analizar el desmontaje. Debería ser bastante trivial identificar los registros de control del temporizador de vigilancia y el código de inicialización.

    
respondido por el Adam Lawrence

Lea otras preguntas en las etiquetas