U ovom novom članku ćemo vidjeti šta a čuvar pasa, za šta se može koristiti i kako ga koristiti u svojim projektima Arduino. Sve što trebate znati o ovoj zanimljivoj, ali nepoznatoj funkciji. I da, kao što mu ime govori (pas čuvar), može se koristiti za otkrivanje nekih problema.
evo videcemo Sve što trebate znati u vezi…
Šta je pas čuvar?
U računarstvu, a watchdog To je nadzorni mehanizam koji se koristi za praćenje performansi sistema ili programa. Njegova glavna funkcija je otkrivanje i reagovanje na abnormalne situacije ili kvarove u sistemu, kao što su padovi ili zamrzavanja, i preduzimanje korektivnih mjera kako bi se garantirao kontinuitet rada ili oporavak sistema.
pas čuvar radi na tajmeru koji je konfigurisan za određeni vremenski interval. Ako sistem ili program ne izvrši određenu radnju ili ne napaja čuvar (tj. ne pokrene ga ponovo) unutar tog vremenskog intervala, nadzorni mehanizam pretpostavlja da je sistem u neželjenom stanju ili je prestao da odgovara ispravno i preuzima zadanu akcija. Ova akcija može se razlikovati ovisno o implementaciji i može uključivati ponovno pokretanje sistema, generiranje evidencije grešaka, podizanje alarma ili poduzimanje specifičnih radnji za ispravljanje problema.
Watchdog se koristi u raznim kompjuterskim sistemima i uređajima, od operativnih sistema i servera do uređaja ugrađeni i kritični sistemi u realnom vremenu, uključujući Arduino. Njegov primarni cilj je da poboljša pouzdanost i dostupnost sistema automatskim otkrivanjem i reagovanjem na probleme, čime se smanjuje potreba za ručnom intervencijom u situacijama kvara.
Šta je Arduino watchdog?

Arduino watchdog timer mora biti podešen prema potrebama aplikacije. On Watchrog Timer koristi interni izvor takta od 128 kHz (može varirati u zavisnosti od ploče i MCU-a koji se koristi). Kada se aktivira, počinje brojati od nule do vrijednosti koju je unaprijed odredio korisnik. Ako se Watchdog tajmer ne resetuje kada dostigne tu vrijednost, resetuje mikrokontroler.
Watchdog Timer ATmega328P, koji se implementira u Arduino UNO, nudi 10 različitih vremenskih postavki, od kojih svaka određuje kada će se tajmer preliti i stoga uzrokovati resetiranje. Različiti vremenski intervali su sljedeći: 16 ms, 32 ms, 64 ms, 0.125 sekundi, 0.25 sekundi, 0.5 sekundi, 1 sekunda, 2 sekunde, 4 sekunde i 8 sekundi, kao što ćemo vidjeti kasnije u tabeli koju sam uključio.
Ako vam još uvijek nije jasno šta možete učiniti sa Watchdog timerom Arduino UNO, vidit ćemo Primjer tako da razumete grafički. U ovom primjeru koristit ćemo jednostavno treptanje LED dioda. LED diode trepere određeni period prije ulaska u while() petlju. Ova while() petlja se koristi kao alternativa zaključanom sistemu. Pošto se Watchdog tajmer ne resetuje dok je u while() petlji, to će uzrokovati ponovno pokretanje sistema, a LED diode će ponovo početi da trepću pre nego što se sistem sruši i ponovo pokrene. Ovaj ciklus će se nastaviti...
Razmatranja i karakteristike
Watchdog Timer je onemogućen na početku koda. Kašnjenje od x sekundi je uključeno prije omogućavanja Watchdog-a. Ovo kašnjenje je ključno kako bi se omogućilo Arduino bootloaderu da provjeri da li se novi kod učitava i da se ostavi dovoljno vremena za pisanje koda u fleš memoriju. Ovaj aspekt je relevantan kao mera predostrožnosti. Može se pojaviti situacija u kojoj zbog pogrešnog kodiranja ili nepravilnih razmatranja, napisani kod resetuje mikrokontroler u vrlo kratkim intervalima beskonačno. Ovo može oštetiti Arduino ploču i spriječiti pravilno učitavanje koda na nju. Ako se to dogodi, potrebno je snimiti bootloader koristeći drugi Arduino kao ISP na zaključanom Arduinu...
Kada koristimo Arduino watchdog, potrebno ga je koristiti bitni registri da se definiše ponašanje čipa. Relevantni registri i njihovo značenje su detaljno opisani u tablici podataka mikrokontrolera koja se nalazi na Arduino ploči. Međutim, Arduino integrisano razvojno okruženje (IDE) dolazi sa nekim funkcijama i makroima dizajniranim da pojednostave ovaj proces, koji se mogu uvesti uključivanjem biblioteke #include za korištenje watchdog-a AVR čipa.
Na ovaj način možemo konfigurirati watchdog omogućavajući ga putem funkcije wdt_enable().. Argument ove funkcije određuje vrijeme prije nego što se ploča resetira u slučaju da tajmer nije resetovan. Što se tiče vrijednosti koje možete konfigurirati u kodu, ovdje ih uključujem:
| Vrijeme prije nego što se čuvar aktivira | 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 |
Primjer korištenja watchdog-a u Arduinu

Konačno, vidjet ćemo kako se watchdog koristi na praktičan način na primjeru u Arduino IDE. Kao što vidimo, prilično je jednostavno, možete pronaći razne izvorne kodove kao što je ovaj na internetu, tako da možete vježbati, modificirati i kreirati vlastite kodove za korištenje watchdog-a u svojim projektima. da vidimo naš primjer:
#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...
}
Kao što se može vidjeti u ovom primjeru skice za Arduino, postoje tri funkcije od značajnih programskih jezika za upravljanje watchdog-om, a to su:
- wdt_disable() da onemogućite tajmer dok konfigurišete Arduino.
- wdt_enable(vrijeme) da dodijelite interval tajmeru i pokrenete ga, specificirajući odgovarajuće vrijeme kao što sam pokazao u gornjoj tabeli.
- wdt_reset() da obnovite dodeljeni interval i program se ne pokrene ponovo.