Cuprins:

Arduino Hang Guardian - Tutorial Arduino Watchdog Timer: 6 pași
Arduino Hang Guardian - Tutorial Arduino Watchdog Timer: 6 pași

Video: Arduino Hang Guardian - Tutorial Arduino Watchdog Timer: 6 pași

Video: Arduino Hang Guardian - Tutorial Arduino Watchdog Timer: 6 pași
Video: Arduino watchdog timer Demo 2024, Noiembrie
Anonim
Image
Image

Buna tuturor, Ni se întâmplă tuturor. Construiți un proiect, conectați cu entuziasm toți senzorii și dintr-o dată, Arduino se blochează și nu este procesată nicio intrare.

„Ce se întâmplă?”, Veți întreba și veți începe să vă scufundați codul, doar pentru a vă da seama că v-ați blocat într-o buclă infinită. Slavă Domnului că Arduino era pe banca ta și nu într-o locație îndepărtată.

Astăzi, vom analiza modul în care putem folosi cronometrul câinelui de supraveghere de pe Arduino pentru a preveni acest lucru.

Pasul 1: Ce este acest cronometru de pază?

Cum se activează cronometrul câinelui de pază?
Cum se activează cronometrul câinelui de pază?

Cronometrul de supraveghere Arduino, după cum sugerează și numele, este un temporizator care rulează separat de CPU-ul principal de pe placă. Acest cronometru poate fi utilizat pentru a verifica periodic starea plăcii și în situațiile în care placa s-a blocat într-o buclă software sau s-a blocat din cauza unei defecțiuni hardware, cronometrul de supraveghere poate reseta Arduino și îl poate porni din nou.

În mod implicit, atunci când nu este utilizat, acest cronometru este dezactivat pentru toate proiectele și numai atunci când îl activăm, trebuie să ne asigurăm că îi spunem periodic să nu reseteze placa noastră, dacă aceasta funcționează în continuare așa cum era de așteptat.

Pentru a putea utiliza cronometrul câinelui de pază, trebuie mai întâi să includem fișierul avr / wdt.h în schița noastră Arduino. Aceasta este biblioteca standard care deține acțiunile câinelui de pază.

Pasul 2: Cum se activează cronometrul câinelui de pază?

Cum se activează cronometrul câinelui de pază?
Cum se activează cronometrul câinelui de pază?
Cum se activează cronometrul câinelui de pază?
Cum se activează cronometrul câinelui de pază?

Pentru a activa temporizatorul, folosim funcția „wdt_enable” unde trebuie să trecem în intervalul de prag la care placa va fi resetată. În funcție de cazul nostru de utilizare, aceasta poate fi de 15 milisecunde până la 8 secunde în setări predefinite care sunt conținute în biblioteca de câini de supraveghere.

PRAT - NUME 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

Pasul 3: Mențineți programul în desfășurare

Mențineți programul în desfășurare
Mențineți programul în desfășurare

Acum, cu cronometrul activat, pentru a preveni resetarea Arduino-ului nostru, trebuie să apelăm periodic funcția „wdt_reset” pentru a reseta cronometrul câinelui de supraveghere înainte de expirarea intervalului de prag.

Atunci când alegeți un interval de resetare, este crucial să luăm în considerare orice operațiune lungă, cum ar fi citirea sau trimiterea datelor sau conectarea la senzori externi. Pragul de resetare ar trebui să fie de cel puțin o dată și jumătate mai mare decât acești timpi pentru a preveni orice resetare accidentală.

Pasul 4: Exemplu de utilizare

Exemplu de utilizare
Exemplu de utilizare
Exemplu de utilizare
Exemplu de utilizare
Exemplu de utilizare
Exemplu de utilizare

În exemplul de program pe care îl puteți descărca aici, am configurat mai întâi cronometrul câinelui de pază cu un interval de resetare de 4 secunde. Apoi, pentru a ști că suntem în funcția de configurare, aprindem rapid un LED de 3 ori și apoi în bucla principală resetăm mai întâi cronometrul, aprindem un LED cu intervale progresiv mai lungi și apoi îl oprim. Următoarea buclă resetează din nou cronometrul până când timpul de aprindere este mai lung de 4 secunde.

Când se întâmplă acest lucru, cronometrul câinelui de pază resetează placa și configurarea este executată din nou.

Pasul 5: Probleme legate de cronometrul câinelui de supraveghere

O posibilă problemă cu cronometrul câinelui de supraveghere, în funcție de bootloader-ul Arduino, este că, dacă valoarea temporizatorului de câine de supraveghere este prea mică și bootloaderul nu resetează cronometrul atunci când încărcați un cod nou, puteți ajunge să vă deteriorați placa Arduino într-un mod care va fi întotdeauna blocat în faza de boot. Bootloader-ul va încerca să pornească, dar temporizatorul va continua să reseteze placa, fără a permite niciodată pornirea corectă a acesteia. Pentru a preveni astfel de probleme, asigurați-vă că utilizați întotdeauna intervale de prag de 2 secunde sau mai mult.

Pasul 6: Bucurați-vă

Bucurați-vă
Bucurați-vă

Dacă aveți un exemplu în care ați folosit cronometrul câinelui de pază într-un proiect real, anunțați-mă în comentarii, asigurați-vă că vă place videoclipul și nu uitați să vă abonați.

Noroc și mulțumesc pentru lectură / vizionare!

Recomandat: