Módulo Wachtdog Timer

Anuncio
SEMINARIO DE COMPUTADORES I
DISE~
NO CON MICROCONTROLADORES
MSP430: Módulo Wachtdog Timer
Nombres:
Daniel Arancibia Carocca
Alex Garay Herrera
Juan Carlos Jarur Mu~
noz
Bruno Mundaca Moraga
Rodrigo Vizcarra Acevedo
Profesor: Leopoldo Silva Bijit
Índice
1. Introducción
3
2. Modos de operación del Watchdog Timer
4
3. Registros
3.1. Registros del módulo básico de reloj . . . . . . . . . . . . . . .
3.2. Registro de Control del Watchdog Timer . . . . . . . . . . . .
3.3. Configuraciones predeterminadas . . . . . . . . . . . . . . . .
5
5
7
7
2
1.
Introducción
El watchdog timer es un temporizador de 16 bit que puede ser usado
como watchdog o por intervalos de tiempo.
La principal función en el modo watchdog es reiniciar el procesador después de que ocurra una falla o problema de software contando con un intervalo de tiempo por defecto de 32 [ms] con la posibilidad de detener su
acción o cambiar este intervalo a uno determinado por el programador. Si
este watchdog timer no es empleado en ninguna subrutina puede ser configurado como un temporizador de intervalos y puede generar interrupciones en
los intervalos de tiempo seleccionados.
Las siguientes son las caracterı́sticas del modulo 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
3
2.
Modos de operación del Watchdog Timer
El timer Watchdog del microcontrolador MSP430 de Texas Instruments
presenta dos posibles modos de operación.
Modo Watchdog En este modo de operación el WDT espera un intervalo
de tiempo determinado por software, o en el caso de no haberlo determinado esperará un intervalo por defecto, en el cual éste espera por
una señal de stop (cambio del valor de un registro) con la cual comenzará a contar un nuevo intervalo y ası́ sucesivamente. En caso de no
recibir señal de stop el WDT reiniciará el procesador al finalizar el intervalo de tiempo con lo cual se dará una condición de RESET en el
microcontrolador.
Modo Timer El WDT también es posible utilizarlo como temporizador, es
decir, el WDT ya no podrá resetear el procesador y cumplirá sólo una
función de contador de intervalos de tiempo tal como un Timer normal
lo que permite utilizarlo como generador de interrupciones entre otras
cosas.
4
3.
Registros
Para el caso que nos interesa, debemos determinar y configurar otros
módulos adicionales a los que propiamente configurar parámetros del Watchdog Timer. Las caracterı́sticas y funcionamiento de estos módulos se estudian con detenimiento, en especial los siguientes registros, los cuales permiten
manejar de forma arbitraria los parámetros que configuran estos módulos.
Registros del módulo básico de reloj. La configuración de estos módulos consiste en asignar a cada uno de los tres módulos, una fuente de
reloj determinada que satisfaga los requerimientos de consumo y aplicación que se requiera.
Registros de control del watchdog timer. La configuración de este módulo permite configurar el WDT a cualquiera de los modos disponibles.
3.1.
Registros del módulo básico de reloj
A través de este registro se seleccionan las fuentes de los módulos de reloj
del microcontrolador y se manipulan las frecuencias de dichas fuentes. Las
fuentes de reloj son las siguientes:
Oscilador
DCOCLK1
RC interno
Caracterı́stica
Código C
Frecuencia controlada DCOCTL |= DCO0+DCO1
digitalmente
BCSCTL1 |= RSEL2
Configuración por defecto f=800[kHz]
LFXT1CLK
Alta/baja frecuencia
BCSCTL1 |= XTS (modo HF)
Cristal interno configurable
Ausencia código determina modo LF
XT2CLK
Configurable
BCSCTL1|=XT2OFF
Cristal externo digitalmente
Ausencia código determina modo ON
1
El DCOCLK puede oscilar dentro de un rango entre 80[kHz] y los 8[MHz].
Este rango se encuentra parametrizado por 64 niveles determinables por los
bits DCOx(3) del registro DCOCTLx y los bits RSELx(3) del registro BCSCTL1
(ver figura 1). Además, los bits MODx(5) del registro DCOCTL permiten realizar
un ajuste fino del nivel de frecuencia seleccionado. En el caso expuesto, esta
determinado el código C necesario para configurar el oscilador por defecto.
5
Figura 1: Curva del rango de frecuencia del oscilador DCOCLK
Existen tres módulos básicos de reloj, los cuales pueden ser configurados
a través de los registros DCOCTL, BCSCTL1 y BCSCTL2. La tabla que se expone
a continuación pretende simplificar la búsqueda de los códigos en lenguaje
que permiten configurar los módulos de reloj.
Módulo
ACLK
Reloj auxiliar
Fuente
Código C
LFXT1CLK Por defecto
MCLK
Reloj maestro
DCOCLK
BCSCTL2 |= SELM0
2
XT2CLK
BCSCTL2 |= SELM2
LFXT1CLK BCSCTL2 |= SELM3
SMCLK
DCOCLK
Reloj subsistema XT2CLK2
BCSCTL2 |= SELS0
BCSCTL2 |= SELS1
6
Div
1
2
4
8
1
2
4
8
1
2
4
8
Código C
BCSCTL1 |=
BCSCTL1 |=
BCSCTL1 |=
BCSCTL1 |=
BCSCTL2 |=
BCSCTL2 |=
BCSCTL2 |=
BCSCTL2 |=
BCSCTL2 |=
BCSCTL2 |=
BCSCTL2 |=
BCSCTL2 |=
DIVA0
DIVA1
DIVA2
DIVA3
DIVM0
DIVM1
DIVM2
DIVM3
DIVS0
DIVS1
DIVS2
DIVS3
2
El oscilador XT2CLK es una fuente externa, es decir, su utilización es
determinada por lo requerimientos de la aplicación diseñada. Por lo tanto,
en aquellos casos en que se prescindiera de ella, el microcontrolador determina
a LFXT1CLK como oscilador por defecto.
3.2.
Registro de Control del Watchdog Timer
Es un registro de 16 bits, que configura los modos de funcionamiento del
Watchdog Timer. Inicialmente esta configurado con un intervalo de 32[ms]
usando el DCOCLK como fuente de reloj, teniendo que ser configurado antes
de que el intervalo expire.
Bit
0
1
2
3
4
5
6
7
8
..
.
15
Nombre
WDTISx
Función
Selecciona el intervalo ???
WDTSSEL
WDTCNTCL
WDTTMSEL
WDTNMI
WDTNMIES
WDTHOLD
WDTPWx
Selecciona el reloj del WDT
Limpia el contador
Selecciona el modo del WDT
Función para el pin NMI/RST
Selecciona el canto para NMI3
Bloqueo del WDT
Establece la contraseña
1
reloj/512
reloj/64
ACLK
0
reloj/32768
reloj/8192
SMCLK
Temporizador
Modo NMI
Bajada
Desactivada
Watchdog
Modo RST
Subida
Activada
Lectura: 0x69
Escritura: 0x5A
3
Las interrupciones no enmascarables (NMI) no son manejadas por el bit
de habilitación general de interrupciones. Puden ser producidas por un canto
en el pin RST/NMI, una falla en el oscilador o por una violación de acceso a
la memoria FLASH.
3.3.
Configuraciones predeterminadas
Las siguientes lı́neas de código parametrizan y simplifican de alguna manera la configuración del modulo watchdog timer. Es necesario recordar que
estos parámetros son válidos para la configuración por defecto del módulo
básico de reloj (explicado en detalle con anterioridad), vale decir, pueden ser
7
usados para configurar el timer solo si el reloj de sistema esta configurado a
8 [MHz].
#define
#define
#define
#define
WDT
WDT
WDT
WDT
MDLY
MDLY
MDLY
MDLY
32 WDTPW+WDTTMSEL+WDTCNTCL /* 32ms interval (default) */
8 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0 /* 8ms
0 5 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1) /* 0.5ms
0 064 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0 0.064ms*/
/* WDT is clocked by fACLK (assumed 32KHz) */
#define
#define
#define
#define
WDT
WDT
WDT
WDT
ADLY
ADLY
ADLY
ADLY
1000 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL) /* 1000ms */
250 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0) /* 250ms "*/
16 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1) /* 16ms "*/
1 9 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0) /* 1.9ms
8
Descargar