Cómo utilizar Watchdog con Arduino

Publicado por en Arduino el 11/01/2010
Comentarios:

Para los que no lo conozcan, el watchdog (o perro guardián), es un mecanismo de seguridad que provoca un reset del sistema en caso de que éste se haya bloqueado. Consiste en un temporizador que irá continuamente decrementando un contador, inicialmente con un valor alto. Si el programa falla o se bloquea, al no poder actualizar el contador del perro guardián a su valor de inicio, éste llegará a decrementarse hasta cero y se reseteará el sistema.

Ésto es extremadamente útil cuando queremos que nuestro sistema esté siempre disponible sin preocuparse por si se tarda demasiado en ejecutar una rutina y tener que pulsar el botón de reset. Utilizar dicho sistema con Arduino es fácil y tan sólo se necesita de incluir la librería wdt.h aunque eso si, también necesitaremos cambiar el bootloader por defecto por otro nuevo con la ayuda de un programador externo. Dispondremos de un intervalo de tiempo de entre 15ms a 8 segundos.

Os dejo un enlace donde se explica en profundidad cómo utilizar el watchdog con arduino y también la descarga del nuevo bootloader.

Enlace: Watchdog con Arduino

// Añadir la librería correspondiente
#include <avr/wdt.h>

// Añadir AL PRINCIPIO de la función setup()
wdt_disable();

// Añadir AL FINAL de la función setup()
wdt_enable(WDTO_250MS);

// Por últimmo, debesmoa segurarnos de llamar ésta función frecuentemente dentro de la función loop()
wdt_reset();


Con ésta simples lineas nos aseguramos de que la placa Arduino se reinicie automáticamente si wdt_reset() no es llamado al al menos cada 250 milisegundos (por ejemplo en caso de que un bucle tome demasiado tiempo).

Si queremos otros tiempos, estan disponibles los siguientes que van desde 15 milisegundos hasta 8 segundos:

  • WDTO_15MS
  • WDTO_30MS
  • WDTO_60MS
  • WDTO_120MS
  • WDTO_250MS
  • WDTO_500MS
  • WDTO_1S
  • WDTO_2S
  • WDTO_4S
  • WDTO_8S

Hay que tener cuidado con los tiempos cortos ya que se puede reiniciar muy rápido en el proceso de programación impidiendo el proceso!

Si te ha gustado, compártelo con tus amigos!
Google Plus 

Ver comentarios antiguos...