HOME

PRODUCTOS

PROYECTOS

TUTORIALES

VIDEOS

FREEWARE

PROGRAMAS

FUNCIONES C

EMPRESA

ENGLISH

                   

La función especial denominada watch dog timer para el sistema Bolt 18F2550

 

 

 

¿Cuál es el objetivo de la función especial denominada Watch Dog Timer WDT?

Imagina que estás trabajando en tu computadora personal escribiendo un texto en el procesador de palabras. De pronto, sin advertencia previa, la computadora se congela y no responde al teclado, ni a ninguno de los comandos de emergencia, incluyendo el conocido Cntl-Alt-Supr. Llegas a la conclusión de que es necesario apagar y encender de nuevo la computadora para reestablecer su funcionamiento normal.

Este evento, relativamente común en computadoras personales, es también frecuente en los sistemas basados en microcontroladores (embedded systems). La razón puede ser un malfuncionamiento del software, (especialmente si éste es muy complejo), un ruido eléctrico provocado por descargas por rayos ó bien inestabilidad en la alimentación de voltaje del sistema.

 

 

 

En el ejemplo descrito arriba, existe un ser humano capáz de darse cuenta de que el sistema se salió de operación y por consecuencia apaga y enciende la computadora, es decir, da un reset al sistema.

En el caso de sistemas microcontroladores, una de las filosofías fundamentales de su diseño es que en su operación en campo su funcionamiento sea continuo, de tal manera que nunca se quede fuera de operación ó congelado, ya que no existirán humanos presentes para oprimir el botón de reset del microcontrolador.

Ésto se consigue gracias a un circuito especial de vigilancia que ya está integrado en los microcontroladores actuales y que se llama Watch Dog Timer (WDT). El WDT vigila el correcto funcionamiento del firmware y, si éste por cualquier causa se sale de operación, efectúa en forma automática un reset general al sistema.

 

Cómo poner en marcha el Watch Dog Timer WDT en el sistema Bolt 18F2550:

El WDT en el microcontrolador 18F2550 es un temporizador que opera con un circuito de reloj independiente y con una frecuencia fija de 250 hz (período de 4 ms.). Hay un registro preescalador que permite programar períodos de timeout del WDT desde 4 ms hasta 131 segundos.

El microcontrolador cuenta con un registro de configuración especialmente dedicado a la inicialización del WDT. Se trata del registro CONFIG2H. Este registro está ya preprogramado con el valor = 0x1E en el firmware bootloader del sistema  Bolt 18F2550. El WDT está deshabilitado (pero puede habilitarse en el programa de aplicación por medio del bit SWDTEN) y el registro preescalador está configurado a su máximo valor de 32768, equivalente a un timeout de 131 segundos.

Para ver los detalles de cada bit del registro mencionado, consulte el siguiente documento:  CONFIGURACION DEL WDT EN EL 18F2550.

Si en el programa de aplicación el usuario habilita el bit SWDTEN, el temporizador WDT generará un reset automático al microcontrolador al llegar su timeout (cuenta máxima), cada 131 segundos.

La función ClrWdt( ) de C18 reinicia a cero la cuenta del WDT, de tal manera que, en el programa de aplicación, debe ejecutarse esta función cíclicamente y en un período menor a 131 segundos.

Si el programa de aplicación se sale de operación por cualquier causa, el WDT dejará de recibir la señal de inicialización desde la función ClrWdt( ), y generará un reset automático al microcontrolador asegurando así su operación continua.

Programa de prueba del WDT para el sistema Bolt 18F2550: C18-BOLT-WDT.zip

 

Programación del WDT con un timeout de 15 segundos:

Si el usuario requiere hacer funcionar su sistema Bolt 18F2550 con el WDT y un timeout menor a 131 segundos, debe cargar un firmware bootloader con el registro CONFIG2H modificado en el chip 18F2550. En este caso, el usuario deberá emplear un programador ICSP.

El archivo proporcionado enseguida generará (si se habilita en el programa del usuario el bit SWDTEN) un WDT con un timeout de aproximadamente 15 segundos: 

Boot20MHz-Watch-0X18.hex

Para probar este nuevo archivo usted puede utilizar el mismo programa de prueba para el WDT arriba mostrado.