Arduino Watchdog: Si funksionon

Mbrojtësi Arduino

Në këtë artikull të ri do të shohim se çfarë a rojtar, për çfarë mund të përdoret dhe si ta përdorni në projektet tuaja Arduino. Gjithçka që duhet të dini për këtë funksion interesant por të panjohur. Dhe po, siç sugjeron emri i tij (watchdog), mund të përdoret për të gjurmuar disa probleme.

këtu do të shohim Të gjithë ju duhet të dini në lidhje me…

Çfarë është një roje?

Në kompjuter, a qen roje është një mekanizëm mbikëqyrës që përdoret për të monitoruar funksionimin e një sistemi ose programi. Funksioni i tij kryesor është të zbulojë dhe t'u përgjigjet situatave ose dështimeve jonormale në sistem, të tilla si përplasjet ose ngrirjet, dhe të marrë masa korrigjuese për të garantuar vazhdimësinë e funksionimit ose rikuperimin e sistemit.

rojtari funksionon në një kohëmatës i cili është konfiguruar për një interval kohor të caktuar. Nëse sistemi ose programi nuk kryen një veprim specifik ose nuk e fuqizon mbikëqyrësin (d.m.th., rinisni atë) brenda atij intervali kohor, mbikëqyrësi supozon se sistemi është në një gjendje të padëshiruar ose ka ndaluar të përgjigjet saktë dhe ndërmerr një veprim të paracaktuar. Ky veprim mund të ndryshojë sipas zbatimit dhe mund të përfshijë rindezjen e sistemit, gjenerimin e regjistrave të gabimeve, ngritjen e alarmeve ose marrjen e veprimeve specifike për të korrigjuar problemin.

Mbrojtësi përdoret në një sërë sistemesh dhe pajisjesh kompjuterike, nga sistemet operative dhe serverët tek pajisjet sisteme të ngulitura dhe kritike në kohë reale, duke përfshirë Arduino. Qëllimi i tij kryesor është të përmirësojë besueshmërinë dhe disponueshmërinë e sistemit duke zbuluar automatikisht dhe duke iu përgjigjur problemeve, duke reduktuar kështu nevojën për ndërhyrje manuale në situatat e dështimit.

Çfarë është rojtari Arduino?

libra rreth arduino

Kohëmatësi i rojes Arduino duhet të vendoset sipas nevojave të aplikacionit. Ai Kohëmatësi vëzhgues përdor një burim të brendshëm të orës 128 kHz (mund të ndryshojë në varësi të tabelës dhe MCU-së së përdorur). Kur aktivizohet, fillon të numërojë nga zero në një vlerë të paracaktuar nga përdoruesi. Nëse Watchdog Timer nuk rivendoset kur arrin atë vlerë, ai rivendos mikrokontrolluesin.

Një mikrokontrollues, ose MCU, është një pajisje e vogël elektronike që integron një njësi të përpunimit qendror (CPU), memorie, pajisje periferike hyrëse/dalëse dhe nganjëherë ndërfaqe komunikimi në një çip të vetëm. Ai është krijuar për të kontrolluar dhe ekzekutuar detyra specifike.

Watchdog Timer ATmega328P, e cila zbatohet në Arduino UNO, ofron 10 cilësime të ndryshme kohore, secila duke përcaktuar se kur kohëmatësi do të tejmbushet dhe për këtë arsye do të shkaktojë një rivendosje. Intervalet e ndryshme kohore janë si më poshtë: 16 ms, 32 ms, 64 ms, 0.125 sekonda, 0.25 sekonda, 0.5 sekonda, 1 sekondë, 2 sekonda, 4 sekonda dhe 8 sekonda, siç do ta shohim më vonë në tabelën që përfshij.

Nëse ende nuk është e qartë për ju se çfarë mund të bëni me Watchdog Timer Arduino UNO, do ta shohim Nje shembull kështu që ju mund ta kuptoni grafikisht. Në këtë shembull, ne do të përdorim një ndezje të thjeshtë të LED-ve. LED-et pulsojnë për një periudhë të caktuar përpara se të hyjnë në ciklin while(). Ky lak while() përdoret si një alternativë ndaj një sistemi të kyçur. Meqenëse Timer Watchdog nuk rivendoset gjatë ciklit while(), ai do të shkaktojë një rindezje të sistemit dhe LED-et do të fillojnë të pulsojnë përsëri përpara se sistemi të rrëzohet dhe të rindizet. Ky cikël do të vazhdojë…

Konsideratat dhe veçoritë

Watchdog Timer Është çaktivizuar në fillim të kodit. Një vonesë prej x sekondash është inkorporuar përpara se të aktivizohet Watchdog. Kjo vonesë është thelbësore për të lejuar ngarkuesin e arduino-s të kontrollojë nëse kodi i ri po ngarkohet dhe të lejojë kohë të mjaftueshme për të djegur kodin në memorien flash. Ky aspekt është i rëndësishëm si masë paraprake. Mund të lindë një situatë ku, për shkak të kodimit të gabuar ose konsideratave të pahijshme, kodi i shkruar rivendos mikrokontrolluesin në intervale shumë të shkurtra pafundësisht. Kjo mund të dëmtojë bordin Arduino dhe të parandalojë që kodi të ngarkohet siç duhet në të. Nëse kjo ndodh, është e nevojshme të digjni ngarkuesin duke përdorur një Arduino tjetër si ISP në Arduino të kyçur...

Kur përdorim vëzhguesin Arduino, është e nevojshme të përdoret regjistrat e biteve për të përcaktuar sjelljen e çipit. Regjistrat përkatës dhe kuptimi i tyre janë të detajuara në fletën e të dhënave të mikrokontrolluesit që gjendet në tabelën Arduino. Sidoqoftë, mjedisi i zhvillimit të integruar të Arduino (IDE) vjen me disa funksione dhe makro të krijuara për të thjeshtuar këtë proces, të cilat mund të importohen duke përfshirë bibliotekën #përfshi për të përdorur rojet e çipit AVR.

Në këtë mënyrë, ne mund të konfigurojmë vëzhguesin duke e aktivizuar duke përdorur funksionin wdt_enable().. Argumenti i këtij funksioni përcakton kohën përpara se tabela të rivendoset në rast se kohëmatësi nuk është rivendosur. Lidhur me vlerat që mund të konfiguroni në kod, këtu i përfshij ato:

Koha para se të aktivizohet qeni mbikëqyrës 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ër më shumë informacion, mund të konsultoni fletën e të dhënave Arduino, ku mund të gjeni më shumë detaje për vetë mikrokontrolluesin e integruar, regjistrat që mund të përdoren me watchdog, pinout, pajisjet periferike, specifikimet teknike, tensionet, konsumi i energjisë etj.

Shembull i përdorimit të Watchdog në Arduino

Arduino IDE, llojet e të dhënave, programimi

Së fundi, le të shohim se si përdoret praktikisht rojtari me një shembull në Arduino IDE. Siç mund ta shohim, është mjaft e thjeshtë, ju mund të gjeni kode burimore të ndryshme si ky në internet, kështu që mund të praktikoni, modifikoni dhe krijoni kodet tuaja për të përdorur mbikëqyrësin në projektet tuaja. Le të shohim shembullin tonë:

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

Siç mund të shihet në këtë shembull skicë për Arduino, ka tre funksione të gjuhës së shquar të programimit për menaxhimin e rojes, dhe këto janë:

  • wdt_disable() për të çaktivizuar kohëmatësin gjatë konfigurimit të Arduino.
  • wdt_enable(kohë) për t'i caktuar një interval kohëmatësit dhe për ta nisur atë, duke specifikuar kohën përkatëse siç e kam treguar në tabelën e mësipërme.
  • wdt_reset() për të rinovuar intervalin e caktuar dhe programi nuk riniset.

Bëhu i pari që komenton

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.