Como usar o temporizador watchdog do MicroPython no ESP8266 e ESP32

Como usar o temporizador watchdog do MicroPython no ESP8266 e ESP32

Um temporizador watchdog é um temporizador interno ou externo que monitora o programa de um microcontrolador para garantir que o aplicativo permaneça operacional sem falhas. Serve como recurso de segurança em aplicações críticas, monitorando o sinal de saída do microcontrolador.

O watchdog pode operar em dois modos:

  • Modo de tempo limite – o temporizador estabelece que o microcontrolador está não funcionando corretamente se ele receber vários sinais (por exemplo, se um pulso duplo for detectado dentro de um período definido).
  • Modo janela – o temporizador estabelece que o microcontrolador está não funcionando corretamente se não receber um sinal ou receber muitos em um determinado período.

Se algum desses eventos ocorrer, o temporizador watchdog reinicializa o microcontrolador.

A classe WDT
MicroPython fornece classe WDT para configurar e ativar o temporizador watchdog em ESP8266, ESP32, WiPy e pyboard. Estas são as únicas plataformas para as quais o WDT está disponível.

Um objeto WDT em um script MicroPython é usado para reiniciar o controlador quando um aplicativo trava ou está em um estado não responsivo ou não recuperável.

Depois que o temporizador do watchdog for iniciado, ele não poderá ser reconfigurado ou interrompido. É habilitado assim que um objeto da classe WDT é instanciado. Além disso, o script/programa deve alimentar o temporizador do watchdog periodicamente para evitar a expiração ou reinicialização automática do controlador.

A classe WDT é importada em um script MicroPython usando esta instrução:

da importação de máquina WDT

O método construtor para a classe WDT possui este protótipo:

classe máquina.WDT(id=0, tempo limite=5000)

O método construtor pode receber dois parâmetros de palavras-chave, id e timeout. O “id” é o do temporizador watchdog e só deve ser passado se houver vários temporizadores watchdog em um microcontrolador.

O parâmetro timeout especifica o tempo limite do feed e é obrigatório, dependendo da porta do MicroPython. O período de tempo limite é específico da porta e especificado em milissegundos.

O temporizador watchdog é ativado imediatamente após a instanciação de um objeto da classe WDT. A classe WDT fornece apenas um método.

WDT.feed : Quando este método é chamado, ele alimenta o temporizador do watchdog periodicamente para evitar que ele reinicie o controlador. Este método deve ser chamado dentro ou no final de um script, para que o watchdog timer só seja alimentado quando o código de execução principal for confirmado. Se o script não contiver um loop infinito, ele poderá ser chamado no final do script. Se o script de execução principal contiver um loop infinito, ele deverá ser colocado como a última instrução do loop. O método não aceita nenhum argumento.

Temporizador de watchdog no ESP8266
Ao usar o ESP8266, o tempo limite não pode ser especificado para o temporizador watchdog e é determinado automaticamente pelo sistema subjacente. Esta placa possui apenas um temporizador de watchdog, portanto não há necessidade de passar seu “id”.

Aqui está um exemplo válido de instanciação e configuração do temporizador watchdog no ESP8266:

da importação de máquina WDT
wdt = WDT
wdt.feed

Um script MicroPython que usa o temporizador watchdog sem um loop infinito (no ESP8266) deve ficar assim:

da importação de máquina WDT
wdt = WDT
….#Código de execução principal
wdt.feed

Um script MicroPython que usa o temporizador watchdog com um loop infinito (no ESP8266) deve ficar assim:

da importação de máquina WDT
wdt = WDT
….# Código MicroPython não repetitivo
enquanto Verdadeiro:
# Código do loop infinito
wdt.feed

Temporizador de watchdog no ESP32
No ESP32, um segundo é o tempo limite mínimo que pode ser especificado. O ESP32 possui apenas um temporizador de watchdog, portanto não requer a especificação do “id”.

Este é um exemplo válido de instanciação e configuração do temporizador watchdog no ESP32.

da importação de máquina WDT
wdt = WDT(tempo limite = 5000)
wdt.feed

Um script MicroPython que usa o temporizador watchdog sem um loop infinito (no ESP32) deve ficar assim:

da importação de máquina WDT
wdt = WDT(tempo limite = 5000)
….#Código de execução principal
wdt.feed

Um script MicroPython que usa o temporizador watchdog com um loop infinito (no ESP32) deve ficar assim:

da importação de máquina WDT
wdt = WDT(tempo limite = 5000)
….# Código MicroPython não repetitivo
enquanto Verdadeiro:
# Código do loop infinito
wdt.feed

Conclusão
O temporizador watchdog é um excelente recurso de segurança que garante que os microcontroladores executem a aplicação correta sem falhas. O watchdog detecta qualquer mau funcionamento e reinicializa o controlador se ele parar de funcionar ou estiver em um estado não recuperável.

MicroPython oferece suporte à funcionalidade do temporizador watchdog por meio da classe WDT, mas apenas para ESP32, ESP8266, WiPy e pyboard. O temporizador watchdog deve ser cuidadosamente colocado e alimentado dentro de um script MicroPython para que primeiro garanta a confirmação da execução do código principal do MicroPython.

Conteúdo Relacionado

ESP32-CAM é um módulo de câmera compacto que combina...
Uma rede de sensores é incorporada em todos os...
O controlador do motor é um dos componentes mais...
A evolução dos padrões USB foi fundamental para moldar...
A SCHURTER anuncia um aprimoramento para sua conhecida série...
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...
Você provavelmente já se deparou com o termo 'arrastar'...
Você provavelmente tem um Isolador de suporte Se você...
Você provavelmente já viu permanecer um isolante sente-se em...
Você provavelmente já viu Isoladores de manilha entronizados em...
Você provavelmente já passou por situações em que o...
Tillbaka till blogg

Lämna en kommentar

Notera att kommentarer behöver godkännas innan de publiceras.