Arduino Watchdog: Kako deluje

čuvaj Arduino

V tem novem članku bomo videli, kaj a čuvaj, za kaj se lahko uporablja in kako ga uporabiti v svojih projektih Arduino. Vse, kar morate vedeti o tej zanimivi, a neznani funkciji. In ja, kot že ime pove (watchdog), se lahko uporablja za odkrivanje nekaterih težav.

Tukaj bomo videli Vse kar morate vedeti glede …

Kaj je pes čuvaj?

V računalništvu a pes čuvaj je nadzorni mehanizem, ki se uporablja za spremljanje delovanja sistema ali programa. Njegova primarna funkcija je zaznavanje in odzivanje na neobičajne situacije ali okvare sistema, kot so zrušitve ali zamrznitve, ter sprejetje korektivnih ukrepov za zagotovitev nadaljnjega delovanja ali obnovitve sistema.

Pes čuvaj deluje na časovnik ki je konfiguriran za določen časovni interval. Če sistem ali program v tem časovnem intervalu ne izvede določenega dejanja ali ne napaja psa čuvaja (to pomeni, da ga ne zažene znova), nadzornik domneva, da je sistem v neželenem stanju ali se je prenehal pravilno odzivati, in izvede vnaprej določeno ukrepanje. To dejanje se lahko razlikuje glede na implementacijo in lahko vključuje ponovni zagon sistema, generiranje dnevnikov napak, vklop alarmov ali izvajanje posebnih dejanj za odpravo težave.

Watchdog se uporablja v različnih računalniških sistemih in napravah, od operacijskih sistemov in strežnikov do naprav vgrajeni in kritični sistemi v realnem času, vključno z Arduinom. Njegov glavni cilj je izboljšati zanesljivost in razpoložljivost sistema s samodejnim zaznavanjem in odzivanjem na težave, s čimer se zmanjša potreba po ročnem posredovanju v situacijah okvar.

Kaj je Arduino čuvaj?

knjige o arduinu

Arduino watchdog timer mora biti nastavljen glede na potrebe aplikacije. On Watchdog timer uporablja notranji vir takta 128 kHz (lahko se razlikuje glede na uporabljeno ploščo in MCU). Ko je aktiviran, začne šteti od nič do vnaprej določene vrednosti uporabnika. Če se Watchdog Timer ne ponastavi, ko doseže to vrednost, ponastavi mikrokrmilnik.

Mikrokrmilnik ali MCU je majhna elektronska naprava, ki združuje centralno procesno enoto (CPE), pomnilnik, vhodno/izhodne periferne naprave in včasih komunikacijske vmesnike na enem samem čipu. Zasnovan je za nadzor in izvajanje določenih nalog.

Watchdog Timer ATmega328P, ki se izvaja v Arduino UNO, ponuja 10 različnih časovnih nastavitev, od katerih vsaka določa, kdaj se bo časovnik prekoračil in s tem povzročil ponastavitev. Različni časovni intervali so naslednji: 16 ms, 32 ms, 64 ms, 0.125 sekunde, 0.25 sekunde, 0.5 sekunde, 1 sekunda, 2 sekundi, 4 sekunde in 8 sekund, kot bomo videli kasneje v tabeli, ki jo vključujem.

Če vam še vedno ni jasno, kaj lahko naredite s Watchdog Timer of Arduino UNO, bomo videli Primer tako da ga lahko razumete grafično. V tem primeru bomo uporabili preprosto utripanje LED (utripanje). LED diode utripajo določeno obdobje, preden vstopijo v zanko while(). Ta zanka while() se uporablja kot alternativa sistemu za blokiranje. Ker se Watchdog Timer ne ponastavi, medtem ko je v zanki while(), bo to povzročilo ponovni zagon sistema, LED-lučke pa bodo spet začele utripati, preden se sistem zruši in znova zažene. Ta cikel se bo nadaljeval ...

Premisleki in lastnosti

Watchdog Timer Na začetku kode je onemogočen. Zakasnitev x sekund je vključena pred omogočanjem Watchdog-a. Ta zakasnitev je ključnega pomena, da omogoči zagonskemu nalagalniku Arduino, da preveri, ali se nalaga nova koda, in omogoči dovolj časa za zapis kode v bliskovni pomnilnik. Ta vidik je pomemben kot previdnostni ukrep. Lahko pride do situacije, ko zaradi napačnega kodiranja ali nepravilnih premislekov zapisana koda v zelo kratkih intervalih neskončno ponastavi mikrokrmilnik. To lahko poškoduje ploščo Arduino in prepreči pravilno nalaganje kod nanjo. Če se to zgodi, morate zapisati zagonski nalagalnik z uporabo drugega Arduina kot ponudnika internetnih storitev na zaklenjenem Arduinu ...

Ko uporabljamo nadzornika Arduino, je treba uporabiti bitnih registrov za določitev obnašanja čipa. Ustrezni registri in njihov pomen so podrobno opisani v podatkovnem listu mikrokrmilnika, ki je prisoten na plošči Arduino. Vendar ima integrirano razvojno okolje Arduino (IDE) nekaj funkcij in makrov, namenjenih poenostavitvi tega postopka, ki jih je mogoče uvoziti z vključitvijo knjižnice #vključi za uporabo nadzornika čipa AVR.

Na ta način lahko konfiguriramo čuvaja aktiviranje s funkcijo wdt_enable().. Argument te funkcije določa čas, preden se plošča ponastavi, če časovnik ni bil ponastavljen. Vrednosti, ki jih lahko konfigurirate v kodi, sem jih vključil tukaj:

Čas pred sprožitvijo nadzornega psa argument wtd_enable().
15 ms WDTO_15MS
30 ms WDTO_30MS
60 ms WDTO_60MS
120 ms WDTO_120MS
250 ms WDTO_250MS
500 ms WDTO_500MS
1 s WDTO_1S
2 s WDTO_2S
4 s WDTO_4S
8 s WDTO_8S
Za več informacij si lahko ogledate podatkovni list Arduino, kjer lahko najdete več podrobnosti o samem integriranem mikrokrmilniku, registrih, ki jih je mogoče uporabiti s čuvajem, pinoutu, zunanjih napravah, tehničnih specifikacijah, napetostih, porabi energije itd.

Primer uporabe čuvaja na Arduinu

Arduino IDE, vrste podatkov, programiranje

Nazadnje si bomo ogledali, kako se pes čuvaj uporablja na praktičen način s primerom v Arduino IDE. Kot lahko vidimo, je precej preprosto, na internetu lahko najdete različne izvorne kode, kot je ta, tako da lahko vadite, spreminjate in ustvarjate lastne kode za uporabo watchdog v svojih projektih. Pa poglejmo naš primer:

#include <avr/wdt.h> // Incluir la biblioteca watchdog (wdt.h)
 
void setup()
{
  wdt_disable(); // Desactivar el watchdog mientras se configura, para que no se resetee
  wdt_enable(WDTO_2S); // Configurar watchdog a dos segundos
}
 
void loop()
{
  wdt_reset(); // Actualizar el watchdog para que no produzca un reinicio
  //Aquí iría el código de tu programa...
}

Kot je razvidno iz tega primera skice za Arduino, obstajajo tri funkcije izjemnega programskega jezika za upravljanje psa čuvaja, in to so:

  • wdt_disable() da onemogočite časovnik med konfiguriranjem Arduina.
  • wdt_enable(čas) da časovniku dodelite interval in ga zaženete, tako da določite ustrezen čas, kot sem prikazal v prejšnji tabeli.
  • wdt_reset() za obnovitev dodeljenega intervala in program se ne zažene znova.

Dodaj kot prednostni vir