Como faço para configurar um cronômetro de monitoramento de hardware com um Arduino?
Como faço para configurar um cronômetro de monitoramento de hardware com um Arduino?
Respostas:
Há vários chips dedicados para vigilância de hardware disponíveis, mas é fácil o suficiente com um IC de timer 555 regular e algumas peças de suporte. Com o 555 configurado no modo astável com um período "ALTO" muito longo e um período "BAIXO" relativamente curto (talvez 0,3 segundos), a saída pode ser conectada ao pino de redefinição do Arduino por meio de um diodo para tornar o cão de guarda um coletor aberto dispositivo. O Arduino pode então redefinir periodicamente o watchdog usando uma saída digital para ligar um transistor que descarrega o capacitor de temporização conectado ao 555, impedindo que ele atinja um ponto de disparo que fará com que o Arduino seja redefinido.
Algumas informações básicas sobre um projeto para fazer isso estão disponíveis em http://www.practicalarduino.com/news/id/471
Já existe um cronômetro de vigilância embutido no chip atmega; você pode usar avr/wdt.h
para manipulá-lo.
Um exemplo rápido:
#include <avr/wdt.h>
void setup() {
wdt_enable(WDTO_500MS); // have the wdt reset the chip
// if 500ms passes without a reset
}
void loop() {
wdt_reset(); // reset the wdt
}
Ouvi falar de alguns problemas relatados no WDT e no gerenciador de inicialização normal, portanto, você pode tentar outro gerenciador de inicialização com ele, por exemplo, o Adaboot.
Além disso, você pode fazer muito mais coisas com o WDT, além de apenas uma redefinição. Eu recomendo http://www.atmel.com/dyn/resources/prod_documents/doc2551.pdf