Watchdog em microcontroladores ATmega

watchdog_atmega328

Traduzindo literalmente watchdog quer dizer cão de guarda. Essa idéia em um microcontrolador representa um sistema de hardware que monitora a operação do microcontrolador. Nos ATmega328 que equipa a placa Arduino o watchdog é constituído por um oscilador de 128kHz que é conectado a um circuito de prescaler, cuja saída é conectada ao sistema de reset e interrupção do microcontrolador(veja figura acima).

De forma simplificada podemos dizer que o watchdog é um contador independente que quando atinge o overflow ele gera um sinal de reset ou interrupção no microcontrolador. O watchdog é um recurso que se utiliza para aumentar a confiabilidade e robustez de um sistema. Imagine que por algum motivo o firmware do seu microcontrolador entra em uma situação como um loop infinito e não é gerada a situação de saída dele, ou alguma parte do hardware faz com que o firmware fique travado em algum ponto. Nessas condições o watchdog pode resetar o seu microcontrolador depois de algum tempo. Vamos a um exemplo utilizando um arduino UNO. Do ponto de vista de programação deve ser configurado o prescaler, que vai indicar o tempo para o contador gerar o overflow. O projetista deve calcular o tempo  que seu hardware leva para executar um ciclo (rotina dentro do loop()) e configurar o prescaler para um tempo maior. Dentro do loop() o watchdog deve ser resetado. Assim se ocorrer um travamento o contador não vai ser zerado levando o microcontrolador a ser reiniciado. Acredito que esse código exemplo ajude a entender o conceito. Considere em seu projeto o uso do “cão de guarda”  esse cuidado pode levar a projetos mais confiáveis e seguros. Na figura abaixo estão os parâmetros e tempos estabelecidos pela biblioteca wt.h e que podem ser utilizados em seu firmware.

Parâmetros de tempo para watchdog

Parâmetros de tempo para watchdog

Referências:

  • Datasheet do Atmega328 (veja a página 50) link
  • Código exemplo link

 

Esse post foi publicado em Uncategorized. Bookmark o link permanente.

Uma resposta para Watchdog em microcontroladores ATmega

  1. Pingback: ThingSpeak com Arduino e outros dispositivos | Dr Bit

Deixe um comentário