TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micro_pepe en 22 de Febrero de 2009, 19:48:46

Título: Activa-Desactivar WDT manualmente
Publicado por: micro_pepe en 22 de Febrero de 2009, 19:48:46
En los fusibles se puede desactivar o activar el WDT, pero ¿Como se hace en las lineas de codigo?

Necesito desactivarlo para que al entrar en modo Sleep, este no se 'despierte' al desbordarse el WDT.

Un saludo.
Título: Re: Activa-Desactivar WDT manualmente
Publicado por: cerebro en 22 de Febrero de 2009, 21:23:13
con CCS se puede utilizar la funcion


setup_wdt (mode)

 
mode: WDT_ON,  WDT_OFF


Note: For PCH parts and PCM parts with software controlled WDT, setup_wdt( ) would enable/disable watchdog timer only if NOWDT fuse is set.  If WDT fuse is set, watchdog timer is always enabled.

Note: WDT_OFF should not be used with any other options.

Warning: SETUP_WDT() should be called before Timer0 is set up.
 
Saludos
Título: Re: Activa-Desactivar WDT manualmente
Publicado por: Gonzalo_BlackHawk en 23 de Febrero de 2009, 00:36:45
micro_pepe, No todos los PIC's tiene control del WDT por SW, consulta la DS del PIC que vas a utilizar. Por ejemplo, el 16F87xA no traen control de WDT por HW, mientras que los 18Fx55x si lo tienen.

Lo que puedes hacer si tu PIC no soporta el control de WDT por SW es dejar el WDT activado, configurar su prescalador para que el tiempo de WDT sea máximo, colocar el PIC a dormir. Cuando el PIC se despierte lo primero que haces es chequear los bits TO y PD para saber si el micro se ha despertado por el WDT o por otra causa. De ser el primer caso lo vuelves a dormir. NO es el metodo más efectivo porque el micro se despierta cada tanto pero funciona.

Saludos.