miércoles, 26 de junio de 2013

WATCHDOG

En el MSP430G2553 existe un registro de 8 bits denominado WDTCTL que se destina a este periférico. Un watchdog es un timer que permite entre otras cosas generar eventos (y en consecuencia interrupciones) o eliminar un bloqueo software de microprocesador (generando una señal PUC).

Registro WDTCTL.
  • Consideraciones generales:
    • Es un registro de 8 bits.
    • Aunque es un registro de 8 bits, para escribir datos en él es necesario hacerlo con datos de 16 bits. El byte más significativo se utiliza como contraseña. El valor que debe tomar ese byte es 0x5A. La escritura de valores en el registro es del tipo 0x5AXY, donde Y es el valor en hexadecimal de los 4 bits del byte menos significativo y X es el valor en hexadecimal de los 4 bits del byte más significativo. Cuando se trabaja en C, se hace con la constante WDTPW, cuyo valor es 0x5A00. Esa costante sumada a una determinado valor [0x0000, 0x00FF] nos permite modificar el registro.
    • Cualquier intento de configuración sin la contraseña correcta provoca un reset PUC.
  • Bit WDTTMSEL.
    • Nos permite seleccionar el modo de funcionamiento. El watchdog presenta dos modos de funcionamiento:
      • Modo watchdog (WDTTMSEL = 0): genera una señal PUC tras un error software.
      • Modo timer (WDTTMSEL = 1): nos permite generar una interrupción en un intervalo de tiempo programado.
  • Bit WDTSSEL.
    • Nos permite elegir la fuente de reloj:
      • WDTSSEL = 0 ==> SMCLK.
      • WDTSSEL = 1 ==> ACLK.
  • Bits WDTIS0 y WDTIS1:
    • Nos permiten determinar el valor máximo de la cuenta:
      • 00 ==> 32768.
      • 01 ==> 8192.
      • 10 ==> 512.
      • 11 ==> 64.
  • Bit WDTCNTCL.
    • Si lo ponemos a 1, nos permite reiniciar la cuenta.
    • En cuento la cuenta se reinicia, el bit se poner a 0 automáticamente.
  • Bit WDTHOLD.
    • Nos permite detener o activar la cuenta del watchdog. 
      • WDTHOLD = 0 ==> activa la cuenta del watchdog.
      • WDTHOLD = 1 ==> desactiva la cuenta del watchdog.
Respuesta del sistema cuando se llega al final de la cuenta.

  • La respuesta del sistema es distinta en función del modo de funcionamiento (WDTTMSEL) seleccionado. 
    • Si está en modo watchdog, se genera un reset PUC. Se activa el flag WDTIFG del registro IFG1 (Special funtion).
    • Si está en modo timer, se activa el flag WDTIFG del registro IFG1. Este flag se borra (pone a 0) automáticamente al ser atendida la interrupción.
Habilitación de interrupciones.
  • Si el watchdog actúa en modo timer, la interrupción que se genera cuando se culmina la cuenta se puede enmascarar. Esto se puede hacer o bien con el bit de habilitación general (GIE) o mediante el bit WDTIE del registro IE1. El flag de interrupción que se activa en tal caso es WDTIFG del registro IFG1.
  • Si el watchdog actúa en modo watchdog, la interrupción es reset (PUC) y no se puede enmascarar.
Reset PUC.
  • Se puede producir por varios motivos:
    • Que se trabaje en modo watchdog y expire el temporizador.
    • Que se escriba en el registro WDTCTL sin contraseña.
  • En ambos casos el flag WDTIFG del registro IFG1 se pone a 1. Hay que tener en cuenta que el reset PUC puede ser provocado por otros eventos. Para determinar cuál fue la causa se testea el bit WDTIFG. Ese bit se pone a 0 automáticamente.

No hay comentarios:

Publicar un comentario