Recentemente, aprendi sobre os cronômetros do watchdog e estou tentando implementar um para o meu circuito com o objetivo de redefinir o microcontrolador (AVR) se ele travar (por exemplo, não responde ao watchdog).
Com base em algumas pesquisas, parece-me que existem cerca de quatro opções:
- Conecte meu microcontrolador a um IC externo específico específico para o relógio do cronômetro .
- Conecte meu microcontrolador a um microcontrolador adicional (um muito básico e barato), este último codificado com o único objetivo dedicado de sincronizar o relógio.
- Coloque o meu próprio circuito de vigilância com 555 temporizadores e conecte-o ao meu microcontrolador.
- Use o recurso de timer interno de vigilância no meu microcontrolador.
.
Quais das abordagens acima você classificaria mais alto e por quê?
Gostaria de definir um tempo de vigilância de cerca de 6 segundos, com base em certos critérios para a maneira como faço o resto do meu design e código (o dispositivo será um registrador de temperatura periódico alimentado por bateria).
Uma pequena observação : minha preferência seria a Opção 1, por simplicidade, no entanto, com base no casal que encontrei, essas peças parecem caras (eu gostaria de uma solução com no máximo 1,25 USD) ou permitem apenas menos 2 segundos para o período de tempo do cão de guarda.
fonte
Respostas:
Like pjc50diz que 6 segundos é muito tempo. Um microcontrolador típico executa dezenas de milhões de instruções nesse período e muitas coisas podem dar errado. Suponha que você esteja controlando alguma carga com o PWM, e um ciclo de trabalho baixo de 10% mantém a dissipação baixa. O microcontrolador passa a banana e a saída fica presa em um nível alto, ciclo de trabalho de 100%. A carga não gosta e morre. Você não quer esperar 6 segundos para que isso aconteça. Deve haver uma parte do seu código em que você passa muito mais frequência. Um loop principal pode ser tão curto quanto 10 ms, então você pode definir o tempo limite do watchdog em 100 ms, por exemplo. Se você chutar o cachorro uma vez a cada 10 ms, um tempo limite significa que você perdeu 10 vezes! Uma vez, tudo bem, mas dez vezes é um desastre, e você precisa agir. A carga será desligada após 100 ms em vez de 6 segundos,
fonte
fonte
Se o seu circuito / dispositivo não estiver controlando o hardware de vida crítica, você provavelmente poderá usar o watchdog interno. Caso contrário (ou de fato, em qualquer caso), confira estes dois excelentes artigos de Jack Ganssle:
http://www.ganssle.com/watchdogs.htm
http://www.ganssle.com/articles/watchdogsredux.htm
A propósito, se você não pode definir o watchdog como um intervalo longo, pode tentar acordar com frequência suficiente para chutá-lo, mas apenas fazendo o necessário para tirar medidas / gravar registros de vez em quando.
fonte