Taula de continguts:

The Arduino Hang Guardian - Tutorial del temporitzador Arduino Watchdog: 6 passos
The Arduino Hang Guardian - Tutorial del temporitzador Arduino Watchdog: 6 passos

Vídeo: The Arduino Hang Guardian - Tutorial del temporitzador Arduino Watchdog: 6 passos

Vídeo: The Arduino Hang Guardian - Tutorial del temporitzador Arduino Watchdog: 6 passos
Vídeo: Arduino Watch Dog Timer / AVR 2024, Desembre
Anonim
Image
Image

Hola a tothom, Ens passa a tots. Creeu un projecte, connecteu amb entusiasme tots els sensors i, de sobte, l’Arduino es bloqueja i no es processa cap entrada.

"Què passa?", Us preguntareu i començareu a explorar el vostre codi, només per adonar-vos que us heu quedat atrapats en un bucle infinit. Gràcies a Déu, l’Arduino era al vostre banc i no en un lloc remot.

Avui veurem com podem utilitzar el temporitzador de gossos de vigilància a l’Arduino per evitar que això passi.

Pas 1: Què és aquest temporitzador de vigilància?

Com s'activa el temporitzador Watchdog?
Com s'activa el temporitzador Watchdog?

El temporitzador Arduino, tal com indica el nom, és un temporitzador que s’executa per separat de la CPU principal de la placa. Aquest temporitzador es pot utilitzar per comprovar periòdicament l’estat de la placa i, en les circumstàncies en què la placa es va quedar atrapada en un bucle de programari o es va quedar atrapada a causa d’un error de maquinari, el temporitzador del gos de vigilància pot restablir l’Arduino i fer-lo tornar a començar de nou.

Per defecte, quan no s’utilitza, aquest temporitzador està desactivat en tots els projectes i només quan l’habilitem, hem d’assegurar-nos de comunicar-li periòdicament que no restableixi la nostra placa si continua funcionant com s’esperava.

Per poder utilitzar el temporitzador de vigilància, primer hem d’incloure el fitxer avr / wdt.h al nostre esbós d’Arduino. Aquesta és la biblioteca estàndard que conté les accions de vigilància.

Pas 2: Com s'activa el temporitzador del gos de vigilància?

Com s'activa el temporitzador Watchdog?
Com s'activa el temporitzador Watchdog?
Com s'activa el temporitzador Watchdog?
Com s'activa el temporitzador Watchdog?

Per activar el temporitzador, fem servir la funció "wdt_enable" on hem de passar en l'interval de llindar en què es restablirà la placa. Depenent del nostre cas d'ús, pot ser des de 15 mil·lisegons fins a 8 segons en configuracions predefinides que es troben a la biblioteca de vigilància.

LLIMI: NOM CONSTANT

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

Pas 3: manteniu el programa en execució

Mantingueu el programa en funcionament
Mantingueu el programa en funcionament

Ara, amb el temporitzador activat, per evitar que es restableixi el nostre Arduino, hem de trucar periòdicament a la funció "wdt_reset" per restablir el temporitzador de vigilància abans que caduqui l'interval de llindar.

A l’hora d’escollir un interval de restabliment, és crucial que tinguem en compte qualsevol operació llarga com llegir o enviar dades o connectar-nos a sensors externs. El llindar de restabliment ha de ser almenys una vegada i mitja superior a aquests temps per evitar restabliments accidentals.

Pas 4: exemple d’ús

Exemple d’ús
Exemple d’ús
Exemple d’ús
Exemple d’ús
Exemple d’ús
Exemple d’ús

En el programa d’exemple que podeu descarregar aquí, primer configurem el temporitzador del gos de vigilància amb un interval de restabliment de 4 segons. Aleshores, per saber que estem en la funció de configuració, parpellegem un LED 3 vegades ràpidament i, al bucle principal, primer restablim el temporitzador, encenem un LED amb intervals progressivament més llargs i després l’apaguem. El següent bucle restableix el temporitzador de nou fins que el temps d’encesa sigui superior a 4 segons.

Quan això passa, el temporitzador de vigilància restableix el tauler i la configuració es torna a executar.

Pas 5: problemes de temporitzador de vigilància

Un possible problema amb el temporitzador watchdog, depenent del carregador d’arrencada del vostre Arduino, és que si el valor del temporitzador watchdog és massa baix i el carregador d’arrencada no restableix el temporitzador quan pengeu un codi nou, podeu acabar danyant la placa Arduino de manera que sempre quedarà bloquejat en la fase d'arrencada. El carregador d’arrencada intentarà arrencar, però el temporitzador continuarà restablint la placa, sense permetre que s’iniciï correctament. Per evitar problemes com aquest, assegureu-vos d'utilitzar sempre intervals llindars de 2 segons o més.

Pas 6: gaudiu

Gaudeix
Gaudeix

Si teniu un exemple d’on heu utilitzat el temporitzador de vigilància en un projecte real, feu-m’ho saber als comentaris, assegureu-vos que m’agrada el vídeo i no us oblideu de subscriure-us.

Ànims i gràcies per llegir / mirar!

Recomanat: