0% encontró este documento útil (0 votos)
67 vistas7 páginas

Introducción al Watchdog Timer

El watchdog timer es un temporizador de 16 bits que puede ser usado como watchdog o temporizador de intervalos. Tiene 8 intervalos de tiempo seleccionables y puede operar en modo watchdog para reiniciar el procesador si ocurre un error, o en modo temporizador de intervalos para generar interrupciones periódicas. El registro WDTCTL controla la configuración y operación del watchdog timer.

Cargado por

Cristh Juarez
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
67 vistas7 páginas

Introducción al Watchdog Timer

El watchdog timer es un temporizador de 16 bits que puede ser usado como watchdog o temporizador de intervalos. Tiene 8 intervalos de tiempo seleccionables y puede operar en modo watchdog para reiniciar el procesador si ocurre un error, o en modo temporizador de intervalos para generar interrupciones periódicas. El registro WDTCTL controla la configuración y operación del watchdog timer.

Cargado por

Cristh Juarez
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA

DEPARTAMENTO DE ELECTRONICA
Diseño con Microcontroladores

WATCHDOG TIMER

El watchdog timer es un temporizador de 16 bit que puede ser usado como watchdog o por
intervalos de tiempo.
Al iniciarse un programa, el watchdog timer está activo y configurado por defecto con un
intervalo de reset de ~32 [ms]. Para evitar esto el usuario debe configurar o detener el
WDT antes de la expiración del intervalo inicial.

La principal función del watchdog timer (WDT) es reiniciar el procesador después de que
ocurra una falla o problema de software, o después de un intervalo de tiempo determinado
generado por el programador, en cuyo caso se reinicia el procesador o el programa en
ejecución.
Si el watchdog timer no se emplea en ninguna subrutina puede ser configurado como un
temporizador de intervalos y puede generar interrupciones en los intervalos de tiempo
seleccionados.

Podemos presentar las siguientes características del módulo watchdog timer:


• Ocho intervalos de tiempos seleccionables por software.
• Modo Watchdog.
• Modo intervalo.
• Acceso al registro de control WDT con contraseña protegida.
• Pin de control de la función RST / NMI .
• Fuente de reloj seleccionable.
• Puede ser detenido para conservar la potencia.

Paola Andrea Rojas Contreras 09-01-2004 7


UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
Diseño con Microcontroladores

Figura 1. Diagrama de Bloques del Watchdog Timer

OPERACIÓN

El watchdog timer (WDT) se configura como watchdog o como temporizador de intervalos


con el registro WDTCTL.

El registro WDTCTL es de 16 bits, protegido por contraseña y es de lectura y escritura. El


acceso de escritura o lectura debe ser manejado por instrucciones de palabras y el acceso a
escritura incluir la contraseña 05Ah en el byte superior, en cambio el acceso a lectura es
con el valor 069h en el byte superior.

CONTADOR WATCHDOG TIMER

El contador watchdog timer (WDTCNT) es un contador ascendente de 16 bit no


directamente accesible vía software. El WDTCNT es controlado y selecciona los intervalos
de tiempos a través del registro de control WDTCTL del watchdog timer. El WDTCNT
puede ser alimentado por las señales de reloj ACLK o SMCLK. La fuente de reloj es
seleccionada con el bit WDTSSEL.

MODO WATCHDOG

Después de una condición PUC, el watchdog timer es configurado con un intervalo


de reset inicial de ~32 [ms] usando la instrucción DCOCLK. El programador debe
configurar, detener el WDT antes de la expiración del intervalo de reset inicial u otro PUC

Paola Andrea Rojas Contreras 09-01-2004 7


UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
Diseño con Microcontroladores

será generado. Cuando el WDT es configurado para operar en modo watchdog, tanto una
escritura a WDTCTL con una clave incorrecta, o una expiración de intervalo de tiempo
seleccionado dispara un PUC. Un PUC reinicia el WDT a su condición por defecto y
configura en pin RST / NMI al modo reset.

MODO DE TEMPORIZADOR DE INTERVALOS

Seteando el bit WDTTMSEL en 1 selecciona el modo de temporizador de intervalos.


Este modo puede ser usado para producir interrupciones periódicas.
En el modo de temporizador de intervalos, el flag WDTIFG se setea en el momento en que
expira el temporizador de intervalos seleccionado. Un PUC no es generado en el modo de
temporizador de intervalos en el momento en que expira el temporizador de intervalos
seleccionado y el WDTIFG habilita el bit WDTIE que permanece sin cambio.
Cuando el bit WDTIE y el bit GIE son seteados, el flag WDTIFG requiere una
interrupción. El flag de interrupciones WDTIFG es automáticamente peseteado cuando su
requerimiento de interrupción es atendido, o puede ser peseteado por software. La
dirección del vector de interrupciones en el modo temporizador de intervalos es diferente
que en modo watchdog.

NOTA: Modificando el temporizador Watchdog

El intervalo WDT debería ser cambiado junto con WDTCNTCL = 1 en una única
instrucción a fin de evitar un PUC inmediato o interrupción.
El WDT debería ser detenido antes de cambiar la fuente de reloj a fin de evitar un posible
intervalo incorrecto.

INTERRUPCIONES DEL TEMPORIZADOR WATCHDOG

El WDT usa dos bits de control en el SFRs para controlar interrupciones.

• La interrupción del flag WDT, WDTIFG, localizado en IFG1.0


• La interrupción habilitada por el WDT, WDTIE, localizado en IE1.0

Cuando se usa el WDT en el modo watchdog, el flag WDTIFG origina un reset del vector
de interrupciones. El WDTIFG puede ser usado por la rutina de servicio que atiende la
interrupción de reset para determinar si el watchdog causó el reset del dispositivo. Si el
flag es seteado, entonces el watchdog timer es iniciado con una condición de reset ya sea
por que se termino el tiempo o por una violación de seguridad. Si WDTIFG es limpiado, el
reset fue causado por una fuente diferente.
Cuando se usa el WDT en modo de temporizador de intervalo, el flag WDTIFG es seteado
después del intervalo de tiempo seleccionado y requiere una interrupción del temporizador
de intervalo WDT si los bits WDTIE y GIE están seteados. El vector de interrupción del
temporizador de intervalo es diferente al vector de reset usado en el modo watchdog. En el
modo de temporizador de intervalo, el flag WDTIFG es resteado automáticamente cuando
es servida la interrupción, o puede ser reseteado vía software.

Paola Andrea Rojas Contreras 09-01-2004 7


UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
Diseño con Microcontroladores

OPERACIÓN EN EL MODO BAJA POTENCIA

El dispositivo MSP430 tiene varios modos de bajo potencia. Diferentes señales de reloj
son accesibles en diferentes modos de bajo potencia. El requerimiento de la aplicación del
usuario y el tipo de reloj usado determina como el WDT debería ser configurado. Por
ejemplo, el WDT no debería ser configurado en el modo watchdog con SMCLK como
fuente de reloj si el usuario desea usar el modo de baja potencia 3 debido a que SMCLK no
está activo en LPM3

REGISTROS DEL WATCHDOG TIMER

Tabla de registros del watchdog timer

Paola Andrea Rojas Contreras 09-01-2004 7


UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
Diseño con Microcontroladores

WDTCTL, Watchdog Timer Register

WDTPWx BITS 15-8 Watchdog Timer password. Siempre lee como 069h. Debe
ser escrito como 05Ah, o un PUC será generado.
WDTHOLD BIT 7 Pausador del Watchdog Timer. Este bit detiene el
watchdog timer. Se coloca WDTHOLD igual a 1 cuando el
WDT no está en uso para conservar energía.
0 = watchdog timer no está detenido
1 = watchdog timer está detenido
WDTNMIES BIT 6 Selección del canto de NMI del Watchdog timer. Este bit
selecciona el tipo canto para la interrupción NMI cuando
WDTNMI = 1. Modificando este bit se puede activar un
NMI. Modificando este bit cuando WDTNMI = 0 se evita
disparar accidentalmente un NMI.
0 = NMI en canto de subida.
1 = NMI en canto de bajada.
WDTNMI BIT 5 Selección del modo de NMI del Watchdog timer. Este bit
selecciona la función para el pin RST / NMI .
0 = función de Reset.
1 = función de NMI.
WDTTMSEL BIT 4 Selección del modo del Watchdog timer.
0 = modo Watchdog
1 = modo de temporizador de intervalo.
WDTCNTCL BIT 3 Limpiar contador del Watchdog timer. Colocando
WDTCNTCL = 1 el valor del contador se limpia a 0000h.
WDTCNTCL es automáticamente reseteado.
0 = ninguna acción
1 = se setea WDTCNT = 0000h
WDTSSEL BIT 2 Selecciona la fuente de reloj del Watchdog timer.
0 = SMCLK
1 = ACLK
WDTISx BITS 1-0 Selecciona intervalo del Watchdog timer. Estos bits
seleccionan un intervalo de tiempo del watchdog timer para
setear el flag WDTIFG y/o generar un PUC.
00 = Fuente de reloj del Watchdog /32768
01 = Fuente de reloj del Watchdog /8192
10 = Fuente de reloj del Watchdog /512

Paola Andrea Rojas Contreras 09-01-2004 7


UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
Diseño con Microcontroladores

11 = Fuente de reloj del Watchdog /64

IE1, Interrupt Enable Register 1

BIT 7-1 Estos bits pueden ser usados por otros módulos. Ver hoja de
datos del dispositivo específico.
WDTIE Bit 0 Habilitador de interrupciones del Watchdog timer. Este bit
habilita la interrupción WDTIFG para el modo de
temporizador de intervalos. No es necesario setear este bit
para el modo watchdog. Debido a que otros bits en IE1
pueden ser usados por otros módulos, se recomienda setear o
limpiar este bit usando las instrucciones BIS.B o BIC.B,
antes que las instrucciones MOV.B o CLR.B.
0 = interrupción no habilitada
1 = interrupción habilitada.

IFG1, Interrupt Flag Register 1

BIT 7-1 Estos bits pueden ser usados por otros módulos. Ver hoja de
datos del dispositivo específico.
WDTIFG Bit 0 Flag de interrupción del Watchdog timer. En el modo de
watchdog, WDTIFG se mantiene seteado hasta que se
resetee por software. En el modo de intervalo, WDTIFG es
reseteado automáticamente por al servir la interrupción, o
puede ser reseteado por software. Debido a que otros bits in
IFG1 pueden ser usados por otros módulos, se recomienda
limpiar WDTIFG usando las instrucciones BIS.B o BIC.B,
antes que las instrucciones MOV.B o CLR.B.
0 = No existe interrupción pendiente
1 = Existe interrupción pendiente

Paola Andrea Rojas Contreras 09-01-2004 7


UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
Diseño con Microcontroladores

Ejemplo.
A continuación se muestra un ejemplo con un fragmento de un programa donde se
inicializan los osciladores de la tarjeta MSP430F149

void InitOsc(void)
{
WDTCTL = WDTPW + WDTCNTCL; // se detiene el watchdog timer

BCSCTL1 |= XTS; // XT1 as high-frequency


_BIC_SR(OSCOFF); // turn on XT1 oscillator

do // wait in loop until crystal is stable


IFG1 &= ~OFIFG;
while (IFG1 & OFIFG);

BCSCTL1 |= DIVA0; // ACLK = XT1 / 2


BCSCTL1 &= ~DIVA1;

IE1 &= ~WDTIE; // deshabilitada la interrupción.


IFG1 &= ~WDTIFG; // limpia la interrupción del flag WDT

// WDTCTL = WDTPW | WDTTMSEL | WDTCNTCL | WDTSSEL | WDTIS1; //


use WDT as timer, flag each
// 512 pulses from
ACLK

// Esta deshabilitado el seteo del WDTCTL, lo que genera un loop en el siguiente while. Al
activarlo no ocurrirá el problema de loop

while (!(IFG1 & WDTIFG)); // count 1024 pulses from XT1 (until XT1's
// amplitude is OK)

IFG1 &= ~OFIFG; // clear osc. fault int. flag


BCSCTL2 |= SELM0 | SELM1; // set XT1 as MCLK
}

Paola Andrea Rojas Contreras 09-01-2004 7

También podría gustarte