Table des matières:

The Arduino Hang Guardian - Tutoriel de minuterie Arduino Watchdog: 6 étapes
The Arduino Hang Guardian - Tutoriel de minuterie Arduino Watchdog: 6 étapes

Vidéo: The Arduino Hang Guardian - Tutoriel de minuterie Arduino Watchdog: 6 étapes

Vidéo: The Arduino Hang Guardian - Tutoriel de minuterie Arduino Watchdog: 6 étapes
Vidéo: Защита от зависания Arduino — руководство по сторожевому таймеру Arduino 2024, Novembre
Anonim
Image
Image

Salut à tous, Cela nous arrive à tous. Vous construisez un projet, connectez avec enthousiasme tous les capteurs, et tout d'un coup, l'Arduino se bloque et aucune entrée n'est traitée.

« Que se passe-t-il ? », vous demanderez-vous et commencerez à creuser dans votre code, pour vous rendre compte que vous êtes coincé dans une boucle infinie. Dieu merci, l'Arduino était sur votre banc et non dans un endroit éloigné.

Aujourd'hui, nous verrons comment utiliser la minuterie de surveillance sur l'Arduino pour éviter que cela ne se produise.

Étape 1: Qu'est-ce que cette minuterie de surveillance ?

Comment activer la minuterie de surveillance ?
Comment activer la minuterie de surveillance ?

La minuterie de chien de garde Arduino, comme son nom l'indique, est une minuterie qui s'exécute séparément du processeur principal de la carte. Cette minuterie peut être utilisée pour vérifier périodiquement l'état de la carte et dans les cas où la carte est bloquée dans une boucle logicielle ou bloquée en raison d'une panne matérielle, la minuterie de surveillance peut réinitialiser l'Arduino et tout recommencer.

Par défaut, lorsqu'elle n'est pas utilisée, cette minuterie est désactivée sur tous les projets et uniquement lorsque nous l'activons, nous devons nous assurer de lui dire périodiquement de ne pas réinitialiser notre carte si elle fonctionne toujours comme prévu.

Pour pouvoir utiliser la minuterie de surveillance, nous devons d'abord inclure le fichier avr/wdt.h dans notre croquis Arduino. Il s'agit de la bibliothèque standard qui contient les actions de surveillance.

Étape 2: Comment activer la minuterie Watchdog ?

Comment activer la minuterie de surveillance ?
Comment activer la minuterie de surveillance ?
Comment activer la minuterie de surveillance ?
Comment activer la minuterie de surveillance ?

Pour activer le timer, nous utilisons la fonction « wdt_enable » où nous devons passer l'intervalle de seuil auquel la carte sera réinitialisée. Selon notre cas d'utilisation, cela peut aller de 15 millisecondes à 8 secondes dans les paramètres prédéfinis contenus dans la bibliothèque de surveillance.

SEUIL - NOM DE LA CONSTANTE

15 ms WDTO_15MS 30 ms WDTO_30MS 60 ms WDTO_60MS 120 ms WDTO_120MS 250 ms WDTO_250MS 500 ms WDTO_500MS 1s WDTO_1S 2s WDTO_2S 4s WDTO_4S 8s WDTO_8S

Étape 3: Maintenez votre programme en cours d'exécution

Gardez votre programme en cours d'exécution
Gardez votre programme en cours d'exécution

Maintenant, avec la minuterie activée, pour l'empêcher de réinitialiser notre Arduino, nous devons appeler périodiquement la fonction "wdt_reset" pour réinitialiser la minuterie de surveillance avant l'expiration de l'intervalle de seuil.

Lors du choix d'un intervalle de réinitialisation, il est crucial que nous prenions en considération toute opération longue comme la lecture ou l'envoi de données ou la connexion à des capteurs externes. Le seuil de réinitialisation doit être au moins une fois et demie supérieur à ces temps pour éviter toute réinitialisation accidentelle.

Étape 4: Exemple d'utilisation

Exemple d'utilisation
Exemple d'utilisation
Exemple d'utilisation
Exemple d'utilisation
Exemple d'utilisation
Exemple d'utilisation

Dans l'exemple de programme que vous pouvez télécharger ici, nous avons d'abord configuré la minuterie de surveillance avec un intervalle de réinitialisation de 4 secondes. Ensuite, pour savoir que nous sommes dans la fonction de configuration, nous faisons clignoter une LED 3 fois rapidement puis dans la boucle principale, nous réinitialisons d'abord le minuteur, allumons une LED avec des intervalles de plus en plus longs puis nous l'éteignons. La boucle suivante réinitialise à nouveau la minuterie jusqu'à ce que le temps d'allumage soit supérieur à 4 secondes.

Lorsque cela se produit, le temporisateur de chien de garde réinitialise la carte et la configuration est à nouveau exécutée.

Étape 5: Problèmes de minuterie de surveillance

Un problème possible avec la minuterie de surveillance, en fonction du chargeur de démarrage de votre Arduino, est que si la valeur de la minuterie de surveillance est trop faible et que le chargeur de démarrage ne réinitialise pas la minuterie lors du téléchargement d'un nouveau code, vous risquez d'endommager votre carte Arduino d'une manière qui il sera toujours bloqué dans la phase de démarrage. Le bootloader essaiera de démarrer, mais la minuterie continuera à réinitialiser la carte, ne lui permettant jamais de démarrer correctement. Pour éviter de tels problèmes, assurez-vous de toujours utiliser des intervalles de seuil de 2 secondes ou plus.

Étape 6: Profitez

Prendre plaisir
Prendre plaisir

Si vous avez un exemple d'endroit où vous avez utilisé la minuterie de surveillance dans un projet réel, faites-le moi savoir dans les commentaires, assurez-vous d'aimer la vidéo et n'oubliez pas de vous abonner.

Bravo et merci d'avoir lu/regardé !

Conseillé: