TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: PicMinor en 18 de Febrero de 2021, 05:19:48

Título: El Watchdog y la instrucción setup_wdt(WDT_OFF)
Publicado por: PicMinor en 18 de Febrero de 2021, 05:19:48
¡Saludos al foro!

Tengo una duda sobre el WDT: Si yo lo he activado con los fuses, configurado, etc, lo utilizo (o no) y al cabo de un cierto tiempo ya no lo voy a necesitar...

¿Con la instrucción setup_wdt(WDT_OFF) lo desconecto?
¿Tengo que seguir inicializándolo?
¿Si no lo inicializo seguirá saltando?

¡Gracias por anticipado!
Título: Re:El Watchdog y la instrucción setup_wdt(WDT_OFF)
Publicado por: remi04 en 18 de Febrero de 2021, 05:50:14
Si lo activas desde los fuses el wdt es activado al dar alimentación por lo que saltará si no usas a tiempo restart_wdt();.

  La función setup_wdt(wdt_off) efectivamente hace que el wdt ya no salte más. Lo desactivas por software.  Luego lo puedes volver a reactivar mediante la misma función dándole como argumento un valor de prescaler.

 Esto es especialmente útil cuando vas a entrar en una espera que no puedes atender el restart_wdt();.  Por ejemplo si vas a esperar para recibir un carácter con getc(); “aunque eso se soluciona con kbhit();”.     
Título: Re:El Watchdog y la instrucción setup_wdt(WDT_OFF)
Publicado por: PicMinor en 18 de Febrero de 2021, 07:25:22
¡Gracias por tu rápida respuesta!

Era más o menos lo que sospechaba. Lo estaba comprobando pero me anima saber que voy por el buen camino.
Título: Re:El Watchdog y la instrucción setup_wdt(WDT_OFF)
Publicado por: KILLERJC en 18 de Febrero de 2021, 13:38:43
Deberias revisar bien bien el micro..

Las opciones de de WDT_ON y WDT_OFF no están para todos los PICs.

Muchos PICs únicamente se habilitan mediante los FUSES, y no le es permitido modificar esos bits en runtime, asi que no tendría ningún efecto usarlo (es decir no se deshabilita). Por eso mismo deberías referirte al datasheet y ver si existe alguna forma de hacerlo, sino pensaria en que no se puede.

Si lo deseas que sea "temporal" la proteccion entonces usa un timer con su respectiva interrupcion.