¿Cómo configuro un temporizador de vigilancia de hardware con un Arduino?
¿Cómo configuro un temporizador de vigilancia de hardware con un Arduino?
Respuestas:
Hay una serie de chips de vigilancia de hardware dedicados disponibles, pero es bastante fácil hacerlo usando un IC de temporizador 555 normal y un par de piezas de soporte. Con el 555 configurado en modo astable con un período "ALTO" muy largo y un período "BAJO" relativamente corto (quizás 0.3 segundos), la salida se puede conectar al pin de reinicio del Arduino a través de un diodo para hacer que el perro guardián sea un colector abierto dispositivo. Luego, el Arduino puede restablecer periódicamente el perro guardián utilizando una salida digital para encender un transistor que descarga el capacitor de temporización conectado al 555, evitando que llegue a un punto de activación que hará que reinicie el Arduino.
Alguna información básica sobre un proyecto para hacer esto está disponible en http://www.practicalarduino.com/news/id/471
Ya hay un temporizador de vigilancia integrado en el chip atmega; puedes usar avr/wdt.h
para manipularlo.
Un ejemplo 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
}
He oído que se informan algunos problemas con el WDT y el cargador de arranque normal, por lo que es posible que desee probar con otro cargador de arranque, por ejemplo, Adaboot.
Además, puede hacer muchas más cosas con el WDT además de solo un reinicio. Recomiendo http://www.atmel.com/dyn/resources/prod_documents/doc2551.pdf