
Cuando trabajas desde casa hay algunas ventajas en el trabajo. Puedes preparar tus propias comidas, aprovechar para lavar ropa durante el almuerzo y beber todo el té que quieras. Yo uso una tetera de estufa para hervir agua para mi té, así que cuando entro en la zona de escritura, dependo de su silbido agudo para saber cuándo está listo.
A veces, cuando soy descuidado, no coloco la tapa correctamente. Como resultado, la tetera permanece en silencio a pesar de que el agua líquida dentro de ella se está convirtiendo rápidamente en gas. Mi comportamiento descuidado en este escenario solo significa que beberé menos té, en sistemas embebidos, las consecuencias son mucho mayores si no sabes cómo operar un Temporizador de Vigilancia (WDT). Cuando tu temporizador falla en operar, un microcontrolador estancado permanecerá estancado y causará que tu sistema embebido siga inactivo. Veamos cómo funciona el temporizador de vigilancia, cómo implementar un circuito de temporizador de vigilancia y cómo hacer que funcionen correctamente en el primer intento para que puedas evitar este escenario.
El Temporizador de Vigilancia (Watchdog Timer, WDT) es una característica de seguridad simple en electrónica que ayuda a reiniciar un microcontrolador en caso de un fallo en el circuito de vigilancia de hardware o software. Los Temporizadores de Vigilancia STM32 están disponibles como un circuito integrado (IC) separado o como una característica integrada dentro del propio microcontrolador. No utilizar un WDT en el diseño de sistemas embebidos es a menudo un pecado imperdonable.
La forma en que operan los Temporizadores de Vigilancia es simple. Está programado para contar regresivamente durante un intervalo de tiempo de vigilancia establecido. Bajo operación normal, el microcontrolador refresca periódicamente el temporizador de cuenta regresiva para evitar que expire. Si el microcontrolador no responde, entonces no refrescará el Temporizador de Vigilancia. Como resultado, cuando los Temporizadores de Vigilancia expiran, activarán un pulso o señal para reiniciar el microcontrolador con el Temporizador de Vigilancia. Esta característica simple compensa errores de diseño o factores ambientales que pueden causar que un microcontrolador falle.
Aun así, si tu WDT falla, entonces es poco probable que tu sistema embebido se recupere de su estado erróneo. Por eso es importante identificar la causa por la cual un Temporizador de Vigilancia podría fallar en reiniciar el microcontrolador. La respuesta más obvia es que los chips del Temporizador de Vigilancia estén defectuosos. Sin embargo, si repetidamente tienes sistemas embebidos en múltiples unidades que fallan en recuperarse, entonces podría haber algo mal con tus diseños.
De hecho, en mis muchos años diseñando e implementando cientos de dispositivos basados en microcontroladores, nunca me he encontrado con un solo caso de fallo en el Temporizador de Vigilancia STM32. La causa raíz es a menudo simplemente un error humano.
Para sistemas embebidos que utilizan un WDT interno, el código que se descontrola puede desactivar el Temporizador de Vigilancia si los bits de configuración son sobrescritos involuntariamente. Los chips de Temporizador de Vigilancia Externo sufren de problemas completamente diferentes. En este caso, es común tener un pin de puente que puede desconectar la señal de reinicio del Temporizador de Vigilancia externo cuando los ingenieros de firmware están desarrollando y depurando un programa. A menudo, estos pines de puente necesitan ser conectados manualmente antes de que las unidades sean desplegadas en el sitio. Si no lo están, entonces las señales de reinicio del WDT permanecerán desconectadas y no lograrán reiniciar el microcontrolador.
Una razón más común por la que los Temporizadores de Vigilancia (Watchdog Timers) fallan en su función es debido a errores de codificación. Si las funciones que refrescan los temporizadores WDT se colocan en la parte incorrecta del programa, no operarán cuando se supone que deben hacerlo. El firmware para microcontroladores se complica cuando hay múltiples tareas con diferentes prioridades en un Sistema Operativo en Tiempo Real (RTOS). Las tareas del circuito Watchdog de mayor prioridad pueden continuar ejecutándose incluso cuando las tareas de menor prioridad están en un bucle infinito anormal. Si refrescar el circuito del Temporizador de Vigilancia es la tarea de mayor prioridad, entonces el microcontrolador no será refrescado cuando no esté funcionando correctamente.
Asegurar que el WDT haga su trabajo involucra al desarrollador de firmware, al instalador del sistema y al diseñador del hardware watchdog. Los desarrolladores de firmware deben aplicar las mejores prácticas de programación para evitar sobrepasos de código que apaguen el WDT interno. Los desarrolladores de firmware deben tener un buen entendimiento de la arquitectura de memoria del microcontrolador y cómo usar correctamente los punteros de memoria y la asignación en el código.
Además, la estructura del programa debe ser diseñada de tal manera que los Temporizadores de Vigilancia (Watchdog Timers) sean actualizados en ubicaciones apropiadas dentro del programa. Esto significa que el programa activará un reinicio por Watchdog si se desarrolla un bucle infinito en cualquier punto del programa. También puedes desarrollar una utilidad de prueba para verificar la funcionalidad del WDT in situ. Esto también elimina el riesgo de pasar por alto cualquier pin de puente desconectado entre un Temporizador de Vigilancia externo y el microcontrolador.
Cuando necesites acceder a una herramienta de diseño de PCB fácil de usar que incluya todo lo necesario para construir placas de circuito de alta calidad y manufacturables, no busques más allá de CircuitMaker. Además del software de diseño de PCB fácil de usar, todos los usuarios de CircuitMaker tienen acceso a un espacio de trabajo personal en la plataforma Altium 365. Puedes subir y almacenar tus datos de diseño en la nube, y puedes ver fácilmente tus proyectos a través de tu navegador web en una plataforma segura.
Empieza a usar CircuitMaker hoy y mantente atento al nuevo CircuitMaker Pro de Altium.