Uso del Watchdog Timer

La finalidad del Watchdog Timer (WDT) es producir un reinicio del microcontrolador en caso de que éste ingrese en un lazo infinito (“cuelgue”) o se quede en una espera muy prolongada por un determinado evento que no ocurre.

Niple posee dos modos de funcionamiento: “Manual” y “Automático”, siendo el último el método recomendado.

Configuración del WDT

El primer paso para utilizar esta función, es activarla. Para realizar esto desplegamos el menú “Configurar CPU”, y activamos el WDT:

Comenzamos nuestro programa principal configurando los puertos de entradas y salidas. A continuación insertamos el bloque de configuración del WDT desde la ruta “Insertar > Temporizadores > TMR’s Internos > WDT”:

Podemos cambiar algunos parámetros o dejar los que aparecen por defecto. En nuestro ejemplo utilizamos las opciones por defecto. Al presionar el botón “Ingresar” aparecerá una ventana preguntando si queremos activar el watchdog. Elegimos la opción “SI”:

Luego, otro cartel nos pregunta si deseamos activar e insertar la interrupción por WDT. No es imprescindible, pero en nuestro ejemplo la utilizamos para mostrar que el WDT esta funcionando. Elegimos la opción “SI”:

En caso de utilizar la interrupción, hay que tener en cuenta que el WDT reconfigura automáticamente los puertos como entrada. Es necesario volver a realizar la configuración de puertos dentro de la rutina de interrupción. Presionamos el botón “OK”:

A continuación, reconfiguramos los puertos de entrada y salida dentro de la interrupción:

Volvemos al programa principal y veremos que en nuestro programa aparecen los bloques de configuración del WDT y la activación del mismo:

Otras acciones que se pueden realizar desde el bloque del WDT:

  • Limpiar: reinicia el WDT, usado en modo manual o para evitar reinicios en alguna rutina compleja.
  • Activar: activa el WDT.
  • Desactivar: desactiva el WDT.

Ejemplo de uso

Incluimos al final del tutorial un completo ejemplo de uso del WDT, con archivo NPL, esquemas y simulación.

Nuestro ejemplo posee un LED conectado al pin RA0 que destella cada un segundo indicando el buen funcionamiento del programa.

En el pin RA5 se encuentra conectada una llave que permite provocar un mal funcionamiento del microcontrolador al generar un lazo infinito. En caso de ocurrir, el WDT reiniciará el microcontrolador y se producirá la interrupción.

Dentro de la interrupción tenemos un LED conectado al pin RA3 que permite saber que se ingreso a la misma.

Ejemplo de uso del Watchdog

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on TumblrPin on PinterestDigg thisShare on RedditEmail this to someonePrint this page