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?

Č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.
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 |
Příklad použití hlídacího psa v Arduinu

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.