Arduino Watchdog: Jak to funguje

Hlídač Arduina

V tomto novém článku se podíváme, co a hlídací pes, k čemu se dá použít a jak ji využít ve svých projektech Arduino. Vše, co potřebujete vědět o této zajímavé, ale neznámé funkci. A ano, jak jeho název napovídá (hlídací pes), lze jej použít k dohledání některých problémů.

tady uvidíme vše, co potřebujete vědět ohledně…

Co je to hlídací pes?

V oblasti výpočetní techniky a hlídací pes Je to kontrolní mechanismus používaný ke sledování výkonu systému nebo programu. Jeho hlavní funkcí je detekovat a reagovat na abnormální situace nebo poruchy v systému, jako jsou pády nebo zamrznutí, a přijímat nápravná opatření, aby byla zaručena kontinuita provozu nebo obnovení systému.

hlídací pes funguje na časovači který je nakonfigurován pro konkrétní časový interval. Pokud systém nebo program v tomto časovém intervalu neprovede určitou akci nebo nezapne hlídací obvod (to znamená, že jej nerestartuje), hlídací pes předpokládá, že systém je v nežádoucím stavu nebo přestal správně reagovat a provede výchozí nastavení. akce. Tato akce se může lišit podle implementace a může zahrnovat restartování systému, generování chybových protokolů, vyvolání alarmů nebo provedení konkrétních akcí k nápravě problému.

Watchdog se používá v různých počítačových systémech a zařízeních, od operačních systémů a serverů až po zařízení vestavěné a kritické systémy v reálném čase, včetně Arduina. Jeho primárním cílem je zlepšit spolehlivost a dostupnost systému automatickou detekcí problémů a reakcí na ně, čímž se sníží potřeba ručního zásahu v situacích selhání.

Co je hlídací pes Arduino?

knihy o arduinu

Časovač hlídání Arduino musí být nastaven podle potřeb aplikace. On Watchdog Timer využívá interní zdroj hodin 128 kHz (může se lišit v závislosti na použité desce a MCU). Po aktivaci začne počítat od nuly do hodnoty předem určené uživatelem. Pokud se časovač Watchdog neresetuje, když dosáhne této hodnoty, resetuje mikrokontrolér.

Mikrokontrolér neboli MCU je malé elektronické zařízení, které integruje centrální procesorovou jednotku (CPU), paměť, vstupní/výstupní periferie a někdy i komunikační rozhraní na jediném čipu. Je určen k ovládání a provádění konkrétních úkolů.

Watchdog Timer ATmega328P, který je implementován v Arduino UNO, nabízí 10 různých nastavení času, z nichž každé určuje, kdy časovač přeteče, a proto způsobí reset. Různé časové intervaly jsou následující: 16 ms, 32 ms, 64 ms, 0.125 sekund, 0.25 sekund, 0.5 sekund, 1 sekunda, 2 sekundy, 4 sekundy a 8 sekund, jak uvidíme dále v tabulce, kterou uvádím.

Pokud vám stále není jasné, co můžete s Watchdog Timer dělat Arduino UNO, uvidíme Příklad abyste to pochopili graficky. V tomto příkladu použijeme jednoduché blikání LED diod. Před vstupem do smyčky while() kontrolky LED po nastavenou dobu blikají. Tato smyčka while() se používá jako alternativa k uzamčenému systému. Protože se Watchdog Timer během cyklu while() neresetuje, způsobí restart systému a kontrolky LED začnou znovu blikat, než se systém zhroutí a restartuje. Tento cyklus bude pokračovat...

Úvahy a vlastnosti

Watchdog Timer je zakázáno na začátku kódu. Před povolením Watchdogu je začleněno zpoždění x sekund. Toto zpoždění je klíčové pro to, aby zavaděč Arduino mohl zkontrolovat, zda se načítá nový kód, a poskytnout dostatek času na zapsání kódu do paměti flash. Tento aspekt je relevantní jako preventivní opatření. Může nastat situace, kdy v důsledku chybného kódování nebo nesprávných úvah zapsaný kód resetuje mikrokontrolér ve velmi krátkých intervalech donekonečna. To může poškodit desku Arduino a zabránit správnému nahrání kódu na ni. Pokud k tomu dojde, je nutné vypálit bootloader pomocí jiného Arduina jako ISP na uzamčeném Arduinu...

Když používáme hlídacího psa Arduino, je nutné použít bitové registry k definování chování čipu. Příslušné registry a jejich význam jsou podrobně popsány v datovém listu mikrokontroléru, který je na desce Arduino. Integrované vývojové prostředí Arduino (IDE) však přichází s některými funkcemi a makry navrženými pro zjednodušení tohoto procesu, které lze importovat zahrnutím knihovny #zahrnout použít hlídacího psa čipu AVR.

Tímto způsobem můžeme nakonfigurovat hlídacího psa povolením funkce wdt_enable().. Argument této funkce určuje čas před resetováním desky v případě, že nebyl resetován časovač. Pokud jde o hodnoty, které můžete nakonfigurovat v kódu, zde je uvádím:

Čas před spuštěním hlídacího 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
Pro více informací můžete nahlédnout do datasheetu Arduino, kde najdete další podrobnosti o samotném integrovaném mikrokontroléru, registrech, které lze použít s hlídacím psem, pinout, periferie, technické specifikace, napětí, spotřebu energie atd.

Příklad použití hlídacího psa v Arduinu

Arduino IDE, datové typy, programování

Nakonec se podíváme, jak se hlídací pes prakticky používá, na příkladu v Arduino IDE. Jak vidíme, je to docela jednoduché, na internetu najdete různé zdrojové kódy, jako je tento, takže si můžete procvičovat, upravovat a vytvářet vlastní kódy pro použití hlídacího psa ve svých projektech. Uvidíme náš pří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...
}

Jak je vidět na tomto příkladu náčrtu pro Arduino, existují tři funkce pozoruhodného programovacího jazyka pro správu hlídacího psa, a to jsou:

  • wdt_disable() pro deaktivaci časovače při konfiguraci Arduina.
  • wdt_enable(čas) pro přiřazení intervalu časovači a jeho spuštění s uvedením odpovídajícího času, jak je uvedeno v tabulce výše.
  • wdt_reset() obnovit přiřazený interval a program se nerestartuje.

Přidat jako preferovaný zdroj