Turinys:

„Arduino Hang Guardian“- „Arduino Watchdog Timer“vadovėlis: 6 žingsniai
„Arduino Hang Guardian“- „Arduino Watchdog Timer“vadovėlis: 6 žingsniai

Video: „Arduino Hang Guardian“- „Arduino Watchdog Timer“vadovėlis: 6 žingsniai

Video: „Arduino Hang Guardian“- „Arduino Watchdog Timer“vadovėlis: 6 žingsniai
Video: The Arduino hang guardian - Arduino watchdog timer tutorial 2024, Lapkritis
Anonim
Image
Image

Sveiki visi, Tai atsitinka mums visiems. Kuriate projektą, entuziastingai jungiate visus jutiklius, ir staiga „Arduino“kabo ir jokia informacija nėra apdorojama.

"Kas vyksta?", Paklausite ir pradėsite ieškoti savo kodo, kad suprastumėte, jog esate įstrigę begalinėje kilpoje. Ačiū Dievui, „Arduino“buvo jūsų suole, o ne atokioje vietoje.

Šiandien apžvelgsime, kaip galime naudoti „Arduino“stebėtojo laikmatį, kad taip neatsitiktų.

1 žingsnis: kas yra šis sargybos laikmatis?

Kaip įjungti sargybos laikmatį?
Kaip įjungti sargybos laikmatį?

Kaip rodo pavadinimas, „Arduino“stebėtojų laikmatis yra laikmatis, veikiantis atskirai nuo pagrindinio plokštės procesoriaus. Šis laikmatis gali būti naudojamas periodiškai patikrinti plokštės būseną ir esant aplinkybėms, kai plokštė įstrigo programinės įrangos cikle arba įstrigo dėl aparatinės įrangos gedimo, laikrodžio laikmatis gali iš naujo nustatyti „Arduino“ir pradėti jį iš naujo.

Pagal numatytuosius nustatymus, kai šis laikmatis nenaudojamas, jis yra išjungtas visuose projektuose ir tik tada, kai jį įjungiame, turime periodiškai pasakyti, kad jis nenustatytų lentos, jei ji vis dar veikia taip, kaip tikėtasi.

Kad galėtume naudoti budėtojo laikmatį, pirmiausia turime įtraukti avr/wdt.h failą į savo „Arduino“eskizą. Tai standartinė biblioteka, kurioje saugomi stebėtojo veiksmai.

2 veiksmas: kaip įjungti sargybos laikmatį?

Kaip įjungti sargybos laikmatį?
Kaip įjungti sargybos laikmatį?
Kaip įjungti sargybos laikmatį?
Kaip įjungti sargybos laikmatį?

Norėdami įjungti laikmatį, mes naudojame funkciją „wdt_enable“, kur turime pereiti slenksčio intervalą, kuriuo plokštė bus iš naujo nustatyta. Priklausomai nuo mūsų naudojimo atvejo, tai gali trukti nuo 15 milisekundžių iki 8 sekundžių pagal iš anksto nustatytus nustatymus, kurie yra stebėtojų bibliotekoje.

THRESHOLD - NUOLATINIS PAVADINIMAS

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

3 žingsnis: tęskite savo programos veikimą

Palaikykite savo programą
Palaikykite savo programą

Dabar, kai įjungtas laikmatis, kad jis negalėtų iš naujo nustatyti „Arduino“, turime periodiškai iškviesti funkciją „wdt_reset“, kad iš naujo nustatytume laikrodžio laikmatį, kol pasibaigs slenksčio intervalas.

Renkantis atstatymo intervalą, labai svarbu atsižvelgti į bet kokias ilgas operacijas, tokias kaip duomenų skaitymas ar siuntimas arba prijungimas prie išorinių jutiklių. Iš naujo nustatymo slenkstis turėtų būti bent pusantro karto didesnis nei šis laikas, kad būtų išvengta atsitiktinio atstatymo.

4 veiksmas: naudojimo pavyzdys

Naudojimo pavyzdys
Naudojimo pavyzdys
Naudojimo pavyzdys
Naudojimo pavyzdys
Naudojimo pavyzdys
Naudojimo pavyzdys

Pavyzdinėje programoje, kurią galite atsisiųsti čia, pirmiausia nustatėme stebėtojo laikmatį, kurio atkūrimo intervalas yra 4 sekundės. Tada, norėdami sužinoti, kad mes atliekame sąrankos funkciją, 3 kartus greitai sumirksime šviesos diodą, o tada pagrindinėje kilpoje iš pradžių iš naujo nustatome laikmatį, užsidega šviesos diodas su palaipsniui ilgesniais intervalais ir tada jį išjungiame. Kitas ciklas iš naujo nustato laikmatį, kol užsidegimo laikas bus ilgesnis nei 4 sekundės.

Kai tai atsitiks, sargybos laikmatis iš naujo nustatys plokštę ir sąranka bus vykdoma iš naujo.

5 veiksmas: sargybos laikmačio problemos

Viena iš galimų problemų, susijusių su laikrodžio laikmačiu, atsižvelgiant į jūsų „Arduino“įkrovos įkroviklį, yra ta, kad jei stebėtojo laikmačio vertė yra per maža ir įkrovos įkėlimo programa nenustato laikmačio įkeliant naują kodą, galite sugadinti „Arduino“plokštę taip, kad jis visada bus įstrigęs įkrovos fazėje. Įkrovos įkėlimo programa bandys paleisti, tačiau laikmatis nuolat iš naujo nustatys plokštę, neleisdamas jai tinkamai paleisti. Kad išvengtumėte tokių problemų, būtinai visada naudokite 2 ar daugiau sekundžių intervalus.

6 žingsnis: mėgaukitės

Mėgautis
Mėgautis

Jei turite pavyzdį, kur naudojote stebėtojo laikmatį realiame projekte, praneškite man komentaruose, įsitikinkite, kad jums patinka vaizdo įrašas ir nepamirškite prenumeruoti.

Sveikinimai ir ačiū, kad skaitote/žiūrite!

Rekomenduojamas: