Índice:

O Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 etapas
O Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 etapas

Vídeo: O Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 etapas

Vídeo: O Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 etapas
Vídeo: Arduino Watch Dog Timer / AVR 2024, Julho
Anonim
Image
Image

Olá a todos, Isso acontece com todos nós. Você constrói um projeto, conecta com entusiasmo todos os sensores e, de repente, o Arduino trava e nenhuma entrada é processada.

“O que está acontecendo?”, Você perguntará e começará a vasculhar seu código, apenas para perceber que ficou preso em um loop infinito. Graças a Deus, o Arduino estava em sua bancada e não em um local remoto.

Hoje, veremos como podemos usar o temporizador de watchdog no Arduino para evitar que isso aconteça.

Etapa 1: O que é este temporizador de watchdog?

Como habilitar o cronômetro de watchdog?
Como habilitar o cronômetro de watchdog?

O cronômetro de watchdog do Arduino, como o nome indica, é um cronômetro que funciona separadamente da CPU principal da placa. Esse cronômetro pode ser usado para verificar periodicamente o estado da placa e, em circunstâncias em que a placa travou em um loop de software ou devido a uma falha de hardware, o cronômetro de watchdog pode redefinir o Arduino e fazer com que ele reinicie.

Por padrão, quando não está em uso, este temporizador é desabilitado em todos os projetos e apenas quando o habilitamos, precisamos ter certeza de dizer a ele periodicamente para não reinicializar nossa placa se ela ainda estiver operando conforme o esperado.

Para poder usar o cronômetro de watchdog, primeiro precisamos incluir o arquivo avr / wdt.h em nosso esboço do Arduino. Esta é a biblioteca padrão que contém as ações de watchdog.

Etapa 2: Como habilitar o temporizador do Watchdog?

Como habilitar o cronômetro de watchdog?
Como habilitar o cronômetro de watchdog?
Como habilitar o cronômetro de watchdog?
Como habilitar o cronômetro de watchdog?

Para habilitar o temporizador, usamos a função “wdt_enable” onde precisamos passar o intervalo limite no qual a placa será reinicializada. Dependendo do nosso caso de uso, isso pode ir de 15 milissegundos a até 8 segundos em configurações predefinidas que estão contidas na biblioteca watchdog.

LIMIAR - NOME DA CONSTANTE

15 ms WDTO_15MS 30 ms WDTO_30MS 60 ms WDTO_60MS 120 ms WDTO_120MS 250 ms WDTO_250MS 500 ms WDTO_500MS 1s WDTO_1S 2s WDTO_2S 4s WDTO_4S 8s WDTO_8S

Etapa 3: mantenha seu programa funcionando

Mantenha seu programa funcionando
Mantenha seu programa funcionando

Agora, com o cronômetro habilitado, para evitar que ele reinicie nosso Arduino, precisamos chamar periodicamente a função “wdt_reset” para reiniciar o cronômetro de watchdog antes que o intervalo de limite expire.

Ao escolher um intervalo de reinicialização, é crucial levar em consideração qualquer operação demorada, como ler ou enviar dados ou conectar-se a sensores externos. O limite de reinicialização deve ser pelo menos uma vez e meia maior do que esses tempos para evitar reinicializações acidentais.

Etapa 4: Exemplo de uso

Exemplo de uso
Exemplo de uso
Exemplo de uso
Exemplo de uso
Exemplo de uso
Exemplo de uso

No programa de exemplo que você pode baixar aqui, primeiro configuramos o cronômetro de watchdog com um intervalo de reinicialização de 4 segundos. Então, para saber que estamos na função de configuração, piscamos um LED 3 vezes rapidamente e, em seguida, no loop principal, primeiro zeramos o cronômetro, acendemos um LED com intervalos progressivamente maiores e depois o desligamos. O próximo ciclo zera o cronômetro novamente até que o tempo de acendimento seja superior a 4 segundos.

Quando isso acontece, o temporizador de watchdog zera a placa e o setup é executado novamente.

Etapa 5: problemas de cronômetro de watchdog

Um possível problema com o cronômetro de watchdog, dependendo do bootloader do seu Arduino é que se o valor do cronômetro de watchdog for muito baixo e o bootloader não zerar o cronômetro ao carregar um novo código, você pode acabar danificando sua placa Arduino de uma forma que ele sempre ficará travado na fase de inicialização. O bootloader tentará iniciar, mas o cronômetro continuará reiniciando a placa, nunca permitindo que ela inicie corretamente. Para evitar problemas como esse, sempre use intervalos de limite de 2 segundos ou mais.

Etapa 6: aproveite

Aproveitar
Aproveitar

Se você tiver um exemplo de onde usou o watchdog timer em um projeto real, deixe-me saber nos comentários, certifique-se de gostar do vídeo e não se esqueça de se inscrever.

Parabéns e obrigado por ler / assistir!

Recomendado: