TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: DarkVect en 13 de Abril de 2007, 09:17:13
-
Hola a todos! Tengo una aplicación que funciona pefectamente sin el watchdog. El problema que tengo está localizado en la rutina de inicialización del lcd que tiene un delay_ms(30) mientras que el watchdog está programado a 18ms.
Cómo puedo solucionarlo? Sólo se me ocurre editar ese delay con un for(...) y dentro de éste ir haciendo delays más pequeños e ir reseteando el watchdog, pero me parece una solución poco elegante.
Existe alguna manera de decir cuándo quieres que empiece a funcionar el watchdog?
Por si es de ayuda, el PIC es un típico 16F84A y el compilador es el CCS.
Un saludo y muchas gracias!!
-
La solucion a tu problema esta en la misma declaracion de las temporizaciones.
//set timing config to 32KHz, restart watchdog timer
//on delay_us() and delay_ms()
#use delay (clock=32000, RESTART_WDT)
Si buscas en la ayuda de #Use Delay veras lo que digo... :mrgreen: :mrgreen: :mrgreen:
-
Si no usas el timer0 con prescaler, puedes asignar el prescaler al WDT y así escalar el clock del watchdog el cual puede ir hasta algo más de 2 segundos.
Su seteo está en el OPTION_REG.
Saludos
-
Muchísimas gracias a los dos por responder.
MGLSOFT voy a mirar ahora mismo lo del delay en el manual a ver qué me estaba saltando.
Maunix, el problema precisamente radica ahí, en que tengo el timer0 escalado para controlar varios procesos y el watchdog lo tengo, por narices, al mínimo.
EDITO: SOLUCIONADO!! Ha sido poner lo del restart_wdt en la configuración y listo.
Un saludo!!
-
Me alegro te haya servido!! :-/ :-/