Como usar o temporizador watchdog do MicroPython no ESP8266 e ESP32

Cómo utilizar el temporizador de vigilancia MicroPython en ESP8266 y ESP32

Un temporizador de vigilancia es un temporizador interno o externo que monitorea el programa de un microcontrolador para garantizar que la aplicación permanezca operativa sin fallas. Sirve como característica de seguridad en aplicaciones críticas, monitoreando la señal de salida del microcontrolador.

El guardián puede funcionar en dos modos:

  • Modo de tiempo de espera: el temporizador establece que el microcontrolador no funciona correctamente si recibe múltiples señales (por ejemplo, si se detecta un pulso doble dentro de un período establecido).
  • Modo ventana: el temporizador establece que el microcontrolador no funciona correctamente si no recibe una señal o recibe demasiadas en un período determinado.

Si ocurre alguno de estos eventos, el temporizador de vigilancia reinicia el microcontrolador.

La clase WDT
MicroPython proporciona la clase WDT para configurar y habilitar el temporizador de vigilancia en ESP8266, ESP32, WiPy y pyboard. Estas son las únicas plataformas para las que WDT está disponible.

Un objeto WDT en un script MicroPython se utiliza para reiniciar el controlador cuando una aplicación falla o no responde o no se puede recuperar.

Una vez que el temporizador de vigilancia ha comenzado, no se puede restablecer ni detener. Se habilita tan pronto como se crea una instancia de un objeto de clase WDT. Además, el script/programa debe alimentar el temporizador de vigilancia periódicamente para evitar la caducidad o el reinicio automático del controlador.

La clase WDT se importa a un script MicroPython mediante esta declaración:

Importación de máquinas WDT

El método constructor de la clase WDT tiene este prototipo:

clase máquina.WDT(id=0, tiempo de espera=5000)

El método constructor puede tomar dos parámetros de palabras clave, id y tiempo de espera. La “id” es la del temporizador de vigilancia y sólo debe pasarse si hay varios temporizadores de vigilancia en un microcontrolador.

El parámetro de tiempo de espera especifica el tiempo de espera de la alimentación y es necesario según el puerto MicroPython. El período de tiempo de espera es específico del puerto y se especifica en milisegundos.

El temporizador de vigilancia se activa inmediatamente después de la instanciación de un objeto de clase WDT. La clase WDT proporciona sólo un método.

WDT.feed: cuando se llama a este método, alimenta periódicamente el temporizador de vigilancia para evitar que reinicie el controlador. Este método debe llamarse dentro o al final de un script, de modo que el temporizador de vigilancia solo se alimente cuando se confirme el código de ejecución principal. Si el script no contiene un bucle infinito, se puede llamar al final del script. Si el script principal en ejecución contiene un bucle infinito, debe colocarse como la última declaración del bucle. El método no acepta ningún argumento.

Temporizador de vigilancia en ESP8266
Cuando se utiliza ESP8266, el tiempo de espera no se puede especificar para el temporizador de vigilancia y el sistema subyacente lo determina automáticamente. Esta placa sólo tiene un temporizador de vigilancia, por lo que no es necesario pasar su "identificación".

Aquí hay un ejemplo válido de creación de instancias y configuración del temporizador de vigilancia en ESP8266:

Importación de máquinas WDT
wdt = WDT
wdt.feed

Un script MicroPython que utiliza el temporizador de vigilancia sin un bucle infinito (en el ESP8266) debería verse así:

Importación de máquinas WDT
wdt = WDT
….#Código de ejecución principal
wdt.feed

Un script MicroPython que utiliza el temporizador de vigilancia con un bucle infinito (en el ESP8266) debería verse así:

Importación de máquinas WDT
wdt = WDT
….# Código MicroPython no repetitivo
mientras que Verdadero:
# Código de bucle infinito
wdt.feed

Temporizador de vigilancia en ESP32
En ESP32, un segundo es el tiempo de espera mínimo que se puede especificar. El ESP32 solo tiene un temporizador de vigilancia, por lo que no requiere que se especifique la "id".

Este es un ejemplo válido de creación de instancias y configuración del temporizador de vigilancia en ESP32.

Importación de máquinas WDT
wdt = WDT(tiempo de espera = 5000)
wdt.feed

Un script de MicroPython que utiliza el temporizador de vigilancia sin un bucle infinito (en ESP32) debería verse así:

Importación de máquinas WDT
wdt = WDT(tiempo de espera = 5000)
….#Código de ejecución principal
wdt.feed

Un script MicroPython que utiliza el temporizador de vigilancia con un bucle infinito (en ESP32) debería verse así:

Importación de máquinas WDT
wdt = WDT(tiempo de espera = 5000)
….# Código MicroPython no repetitivo
mientras que Verdadero:
# Código de bucle infinito
wdt.feed

Conclusión
El temporizador de vigilancia es una excelente característica de seguridad que garantiza que los microcontroladores ejecuten la aplicación correcta sin fallas. El perro guardián detecta cualquier mal funcionamiento y reinicia el controlador si deja de funcionar o se encuentra en un estado no recuperable.

MicroPython admite la funcionalidad del temporizador de vigilancia a través de la clase WDT, pero solo para ESP32, ESP8266, WiPy y pyboard. El temporizador de vigilancia debe colocarse e introducirse cuidadosamente en un script de MicroPython para que primero garantice que se confirme la ejecución del código principal de MicroPython.

Conteúdo Relacionado

ESP32-CAM es un módulo de cámara compacto que combina...
En cada vehículo hay una red de sensores integrada...
El controlador del motor es uno de los componentes...
La evolución de los estándares USB ha sido fundamental...
SCHURTER anuncia una mejora de su popular serie SWZ...
Visual Communications Company (VCC) ha anunciado sus nuevos tubos...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Probablemente se haya encontrado con el término " resistencia...
Probablemente tenga un aislante de soporte si ha notado...
Probablemente haya visto un aislante colocado en postes de...
Probablemente hayas visto aisladores de grillete entronizados en postes...
Probablemente hayas experimentado situaciones en las que controlar un...
Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.