Comment configurer une horloge de surveillance matérielle avec un Arduino?
Comment configurer une horloge de surveillance matérielle avec un Arduino?
Réponses:
Il existe un certain nombre de puces de surveillance matérielles dédiées disponibles, mais c'est assez facile à faire en utilisant un circuit intégré de minuterie 555 régulier et quelques pièces de support. Avec le 555 configuré en mode astable avec une très longue période "HIGH" et une période relativement courte (peut-être 0,3 seconde) "LOW", la sortie peut être connectée à la broche de réinitialisation de l'Arduino via une diode pour faire du chien de garde un collecteur ouvert dispositif. L'Arduino peut ensuite réinitialiser périodiquement le chien de garde à l'aide d'une sortie numérique pour activer un transistor qui décharge le condensateur de synchronisation attaché au 555, l'empêchant d'atteindre un point de déclenchement qui le fera réinitialiser l'Arduino.
Quelques informations de base sur un projet à cet effet sont disponibles sur http://www.practicalarduino.com/news/id/471
Il y a déjà une minuterie de surveillance intégrée à la puce atmega; vous pouvez utiliser avr/wdt.h
pour le manipuler.
Un exemple rapide:
#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
}
J'ai entendu parler de certains problèmes signalés avec le WDT et le chargeur de démarrage normal, vous pouvez donc essayer un autre chargeur de démarrage avec lui, par exemple Adaboot.
En outre, vous pouvez faire beaucoup plus de choses avec le WDT en plus d'une simple réinitialisation. Je recommande http://www.atmel.com/dyn/resources/prod_documents/doc2551.pdf