Arduino Watchdog: Ako to funguje

Arduino strážny pes

V tomto novom článku uvidíme, čo a strážny pes, na čo sa dá použiť a ako ju využiť vo svojich projektoch Arduino. Všetko, čo potrebujete vedieť o tejto zaujímavej, no zatiaľ neznámej funkcii. A áno, ako naznačuje jeho názov (strážny pes), dá sa použiť na sledovanie niektorých problémov.

tu uvidíme Všetko, čo potrebujete vedieť ohľadom…

Čo je strážny pes?

V oblasti výpočtovej techniky a strážny pes Je to mechanizmus dohľadu, ktorý sa používa na monitorovanie výkonu systému alebo programu. Jeho hlavnou funkciou je zisťovať a reagovať na abnormálne situácie alebo poruchy v systéme, ako sú pády alebo zamrznutia, a prijímať nápravné opatrenia na zabezpečenie kontinuity prevádzky alebo obnovy systému.

strážny pes funguje na časovači ktorý je nakonfigurovaný pre konkrétny časový interval. Ak systém alebo program v tomto časovom intervale nevykoná konkrétnu akciu alebo nezapne dohliadaciu jednotku (to znamená, že ju nereštartuje), dohliadacia jednotka predpokladá, že systém je v nežiaducom stave alebo prestal správne reagovať a vykoná predvolenú hodnotu akcie. Táto akcia sa môže líšiť v závislosti od implementácie a môže zahŕňať reštartovanie systému, generovanie protokolov chýb, spúšťanie alarmov alebo vykonávanie špecifických akcií na odstránenie problému.

Watchdog sa používa v rôznych počítačových systémoch a zariadeniach, od operačných systémov a serverov až po zariadenia vstavané a kritické systémy v reálnom čase, vrátane Arduina. Jeho primárnym cieľom je zlepšiť spoľahlivosť a dostupnosť systému automatickým zisťovaním a reagovaním na problémy, čím sa znižuje potreba manuálneho zásahu v situáciách zlyhania.

Čo je strážny pes Arduino?

knihy o arduine

Časovač strážneho psa Arduino musí byť nastavený podľa potrieb aplikácie. On Časovač strážneho psa využíva interný zdroj hodín 128 kHz (môže sa líšiť v závislosti od použitej dosky a MCU). Po aktivácii začne počítať od nuly po hodnotu vopred určenú používateľom. Ak sa časovač Watchdog neresetuje, keď dosiahne túto hodnotu, resetuje mikrokontrolér.

Mikrokontrolér alebo MCU je malé elektronické zariadenie, ktoré integruje centrálnu procesorovú jednotku (CPU), pamäť, vstupno/výstupné periférie a niekedy aj komunikačné rozhrania na jednom čipe. Je určený na ovládanie a vykonávanie špecifických úloh.

Časovač strážneho psa ATmega328P, ktorý je implementovaný v Arduino UNO, ponúka 10 rôznych nastavení času, z ktorých každé určuje, kedy časovač pretečie, a preto spôsobí reset. Rôzne časové intervaly sú nasledovné: 16 ms, 32 ms, 64 ms, 0.125 sekundy, 0.25 sekundy, 0.5 sekundy, 1 sekunda, 2 sekundy, 4 sekundy a 8 sekúnd, ako uvidíme ďalej v tabuľke, ktorú uvádzam.

Ak vám stále nie je jasné, čo môžete robiť s časovačom Watchdog Arduino UNO, uvidíme príklad aby si to pochopil graficky. V tomto príklade použijeme jednoduché blikanie LED diód. Pred vstupom do cyklu while() LED diódy blikajú nastavenú dobu. Táto slučka while() sa používa ako alternatíva k uzamknutému systému. Keďže sa časovač Watchdog neresetuje počas cyklu while(), spôsobí reštart systému a pred zlyhaním a reštartovaním systému začnú LED diódy znova blikať. Tento cyklus bude pokračovať...

Úvahy a vlastnosti

Časovač strážneho psa je na začiatku kódu zakázaný. Pred zapnutím funkcie Watchdog je začlenené oneskorenie x sekúnd. Toto oneskorenie je kľúčové na to, aby bootloader Arduino mohol skontrolovať, či sa načítava nový kód, a poskytnúť dostatok času na zapísanie kódu do pamäte flash. Tento aspekt je relevantný ako preventívne opatrenie. Môže nastať situácia, keď v dôsledku chybného kódovania alebo nesprávnych úvah napísaný kód resetuje mikrokontrolér vo veľmi krátkych intervaloch donekonečna. To môže poškodiť dosku Arduino a zabrániť správnemu nahraniu kódu na ňu. Ak sa tak stane, je potrebné napáliť bootloader pomocou iného Arduina ako ISP na uzamknutom Arduine...

Keď používame strážneho psa Arduino, je potrebné použiť bitové registre na definovanie správania čipu. Príslušné registre a ich význam sú podrobne uvedené v údajovom liste mikrokontroléra, ktorý sa nachádza na doske Arduino. Integrované vývojové prostredie Arduino (IDE) však prichádza s niektorými funkciami a makrami navrhnutými na zjednodušenie tohto procesu, ktoré je možné importovať zahrnutím knižnice. #include na použitie strážneho psa čipu AVR.

Týmto spôsobom môžeme nakonfigurovať strážneho psa povolíte ho pomocou funkcie wdt_enable().. Argument tejto funkcie určuje čas pred resetovaním dosky v prípade, že nebol resetovaný časovač. Pokiaľ ide o hodnoty, ktoré môžete nakonfigurovať v kóde, uvádzam ich:

Čas pred spustením strážneho 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
Pre viac informácií si môžete pozrieť datasheet Arduino, kde nájdete ďalšie podrobnosti o samotnom integrovanom mikrokontroléri, registroch, ktoré je možné použiť s watchdogom, pinout, periférnych zariadeniach, technických špecifikáciách, napätiach, spotrebe energie atď.

Príklad použitia watchdogu v Arduine

Arduino IDE, dátové typy, programovanie

Nakoniec uvidíme, ako sa strážny pes prakticky používa na príklade v Arduino IDE. Ako vidíme, je to celkom jednoduché, na internete nájdete rôzne zdrojové kódy, ako je tento, takže si ich môžete precvičovať, upravovať a vytvárať si vlastné kódy, aby ste ich mohli použiť vo svojich projektoch. Pozrime sa náš príklad:

#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...
}

Ako je možné vidieť v tomto príklade náčrtu pre Arduino, existujú tri funkcie pozoruhodného programovacieho jazyka na správu strážneho psa, a to sú:

  • wdt_disable() vypnúť časovač pri konfigurácii Arduina.
  • wdt_enable(čas) na priradenie intervalu k časovaču a jeho spustenie, špecifikovaním zodpovedajúceho času, ako je uvedené v tabuľke vyššie.
  • wdt_reset() obnoviť priradený interval a program sa nereštartuje.

Pridať ako preferovaný zdroj