Este artículo es el cuarto de una serie sobre temporizadores de microcontroladores. El primer artículo describe las principales características de la mayoría de los tipos de temporizadores y cubre los temporizadores periódicos. Si no está familiarizado con el funcionamiento general de los temporizadores de microcontroladores, le recomiendo leer el primer artículo. También hemos discutido temporizadores de modulación de ancho de pulso y relojes en tiempo real en MCU.
Este artículo describe los temporizadores de vigilancia, comúnmente abreviados como WDT y también llamados computadoras que funcionan correctamente con temporizadores o COP. Hay dispositivos de vigilancia externos y funciones de vigilancia internas. Este artículo describe solo los perros guardianes internos.
Un temporizador de vigilancia es un módulo de temporizador especializado que ayuda a un microprocesador a recuperarse de un mal funcionamiento. Si un temporizador de vigilancia alcanza el final de su período de conteo, restablece todo el sistema del procesador. Para evitar esto, un procesador debe realizar algún tipo de acción específica que restablezca el perro guardián. Por lo tanto, un temporizador de vigilancia se puede configurar de modo que llegue al final de su período de conteo solo si se ha producido una falla en el procesador, y al forzar un reinicio del sistema, el temporizador de vigilancia ayuda al procesador a escapar del modo de falla y continuar la operación normal .
Para visualizar la funcionalidad de un WDT, tengo una analogía no convencional para que la consideres.
Perdido Era una serie de televisión muy popular sobre un grupo de sobrevivientes abandonados en una isla misteriosa tras un accidente aéreo. Una de las subtramas involucra personajes que creen que deben ingresar una serie corta de números antes de que un contador en la pantalla pase a 0 o el mundo terminará.
Cuando se ingresa la serie, el contador se reinicia y comienza la cuenta regresiva nuevamente. Nunca está claro si ingresar la serie de números es simplemente parte de un experimento psicológico o si el destino del mundo está en juego. La única forma de averiguarlo es no ingresar los números. Los personajes son libres de salir, buscar comida, nadar, pero deben regresar a tiempo para reiniciar el contador. Desde la perspectiva de la computadora, recibir la entrada correcta significa que hay una persona que está operando normalmente y dando servicio al mostrador. No recibir la entrada correcta indica que algo está mal.
Un temporizador de vigilancia funciona como el sistema informático en Perdido. El resto del microcontrolador son los personajes estresados que son libres de hacer cualquier cosa pero que periódicamente deben reparar un contador o hay un reinicio del microcontrolador (también conocido como el fin del mundo). El software y el hardware que funcionan correctamente darán servicio al perro guardián dentro de un período de tiempo fijo y el software o hardware defectuoso podrían no funcionar.
Hay dos tipos de perros guardianes, sin ventana y con ventana. Ambos tipos provocan un reinicio si el mantenimiento del contador llega tarde.
Un perro guardián con ventana también provoca un reinicio si el servicio se realiza demasiado pronto. Este diagrama muestra las secuencias de tiempo para un perro guardián usando un contador ascendente. Algunos perros guardianes usan un contador descendente, pero el principio es el mismo.
Para un perro guardián sin ventana o con ventana, cualquier servicio antes de que el contador alcance el valor superior restablece el contador y todo está bien. Un perro guardián con ventana agrega un límite inferior y crea una ventana de conteo. Cualquier servicio entre el límite inferior y el límite superior está bien. Aquí hay una descripción detallada del diagrama.
Los perros guardianes varían mucho en sus detalles. Pueden contar hacia arriba o hacia abajo. Ellos usan relojes. Tienen diferentes selecciones para los límites superior e inferior. Las siguientes secciones presentan muchas de las características, pero son solo una descripción general.
Inicializar un perro guardián puede ser complicado. Por ejemplo, algunos perros guardianes se habilitan automáticamente cuando se inicia el microcontrolador.
Si no utiliza el perro guardián, debe incluir el código en el arranque para deshabilitarlo. Este es el caso con el perro guardián que estoy usando actualmente. ¡Debo desactivar el watchdog o cambiar la configuración de la ventana si mi programa necesita ejecutarse más de un segundo!
Algunos perros guardianes solo permiten una escritura en un registro de control como característica de seguridad. Esta característica evita que el software fuera de control cambie la configuración después de la inicialización. Si está utilizando una configuración predeterminada en un perro guardián con esta función, asegúrese de sobrescribir la configuración predeterminada, aunque los valores de los bits sean los mismos. Esto "bloquea" los valores y mantiene la seguridad.
Si está programando en C, tenga en cuenta que puede haber una inicialización del watchdog en el código de inicio, que se ejecuta antes de su función main (). Este código a veces se incluye automáticamente por el entorno de desarrollo como parte de la ejecución de un programa estándar de C. Este código configura la memoria e interrumpe las tablas de vectores. Busque en su código de inicio las operaciones en el watchdog y modifíquelas según los requisitos de su sistema.
Los perros guardianes pueden ser sin ventana y con ventana. Es común que un solo temporizador ofrezca ambos tipos teniendo como opción el límite inferior de la ventana. El tamaño de la ventana varía con los diferentes perros guardianes.
El límite inferior del perro guardián que estoy usando actualmente está fijado en el 75% del límite superior. Otro perro guardián tiene la opción de 75%, 50%, 37.5% o 25% del límite superior. Sin embargo, otro perro guardián establece los límites superior e inferior de forma independiente. También hay mucha diversidad con respecto a cómo se elige el límite superior.
El restablecimiento periódico del contador de vigilancia se denomina "mantenimiento" del temporizador. Los diferentes temporizadores de vigilancia tendrán diferentes requisitos de servicio. Todos los requisitos de servicio utilizan una operación que es poco probable que ocurra durante la ejecución de software fuera de control.
El perro guardián que estoy usando actualmente requiere dos escrituras en un "registro de servicio" con un valor de 0x55 seguido de 0xAA. Si se escribe en el registro de servicio cualquier valor que no sea 0x55 o 0xAA, en cualquier momento, el microcontrolador se reinicia de inmediato.
Otro perro guardián requiere una sola escritura en un registro de servicio con un valor de 0xAAAA. Parece haber una fascinación con los números 0xA y 0x5 y sus patrones de bits alternos de 1010 y 0101. Un temporizador va en contra de esta tendencia al usar una sola escritura con un número mágico de 0x5743.
La suspensión y otros modos de baja potencia complican las cosas. ¿Qué debe hacer el perro guardián si el procesador se detiene y deja de ejecutarse? ¿Debería detenerse el tiempo de vigilancia?
El perro guardián que estoy usando actualmente se detiene y se reinicia en el recuento inicial cuando el procesador entra y sale del sueño profundo. Este tema es complicado y tendrá que estudiar el funcionamiento de su perro guardián cuando el microcontrolador utiliza modos de baja potencia.
Un reinicio completo del microcontrolador puede ser demasiado duro. Algunos perros guardianes tienen características que permiten una respuesta progresiva.
Por ejemplo, el perro guardián puede tener una opción para una solicitud de interrupción en algún momento antes de un reinicio. Esta característica permite que una rutina de servicio de interrupción solucione o registre un problema mientras el perro guardián continúa contando. Si la rutina de interrupción no puede volver a encaminar las cosas, se produce un reinicio.
Utilizo el término "estrategia" para determinar dónde establecer los límites de tiempo de un perro guardián. La estrategia más simple es usar un perro guardián sin ventanas con un tiempo de espera que sea mucho más largo que cualquier tiempo de ejecución posible del programa entre el mantenimiento del perro guardián. Lo llamo la estrategia del "botón de reinicio" porque toma el lugar de una persona que presiona un botón de reinicio. La estrategia para un sistema crítico como un dispositivo médico o un robot de fabricación necesita una respuesta más rápida.
Muchas consideraciones pueden entrar en una estrategia de vigilancia:
La estrategia de vigilancia es un tema complicado y muy dependiente de la aplicación.
Antes de reiniciar el microcontrolador, el perro guardián establece un bit en un registro de estado que sobrevive al reinicio. A menudo, este bit se almacena junto con otro estado de reinicio, como un bit de reinicio marrón. Probar el bit de reinicio de vigilancia debe ser parte de la estrategia.
Como mínimo, pruebe este bit durante el inicio y haga algo para indicar un problema. De lo contrario, las fallas pueden pasar desapercibidas, particularmente las infrecuentes. Por ejemplo, emitir un mensaje en una pantalla o encender un LED.
Un temporizador de hombre muerto (DMT) es una variación del concepto de perro guardián. El nombre deriva de un interruptor de hombre muerto que detiene una máquina si un operador suelta un interruptor mecánico. En lugar de utilizar el tiempo como la variable de estimulación, un temporizador de hombre muerto cuenta las recuperaciones de instrucciones de la CPU de la memoria del programa. Hay un reinicio del microcontrolador si el contador DMT no recibe servicio antes de que se haya ejecutado un número específico de instrucciones.
Una diferencia clave entre un watchdog y un DMT es que un DMT puede permanecer activo durante la suspensión y otros modos de ahorro de energía que consumen tiempo pero no cambian el número de instrucciones de CPU ejecutadas.
Este artículo es el último de la serie. Hay otros temporizadores interesantes, como los temporizadores de baja potencia, los temporizadores PWM triples para controlar los LED tricolores y los que llamo temporizadores híbridos que combinan temporizadores de hardware con software estrechamente acoplado. Deje un comentario si desea ver más sobre los temporizadores de microcontroladores.
Los días felices de la PDA y Blackberry han quedado definitivamente atrás, pero el factor…
Tutorial sobre cómo pronosticar usando un modelo autorregresivo en PythonFoto de Aron Visuals en UnsplashForecasting…
Si tienes un iPhone, los AirPods Pro son la opción obvia para escuchar música, ¡aunque…
Ilustración de Alex Castro / The Verge Plus nuevos rumores sobre el quinto Galaxy Fold.…
Se rumorea que los auriculares premium de próxima generación de Apple, los AirPods Max 2,…
El desarrollador Motive Studio y el editor EA han lanzado un nuevo tráiler de la…