Përmbajtje:

Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 hapa
Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 hapa

Video: Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 hapa

Video: Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 hapa
Video: The Arduino hang guardian - Arduino watchdog timer tutorial 2024, Korrik
Anonim
Image
Image

Pershendetje te gjitheve, Na ndodh të gjithëve. Ju ndërtoni një projekt, lidhni me entuziazëm të gjithë sensorët dhe papritmas, Arduino varet dhe asnjë input nuk përpunohet.

"Çfarë po ndodh?", Do të pyesni dhe do të filloni të gërmoni nëpër kodin tuaj, vetëm për të kuptuar se keni ngecur në një lak të pafund. Falë Zotit, Arduino ishte në stolin tuaj dhe jo në një vend të largët.

Sot, ne do të shikojmë se si mund ta përdorim kohëmatësin vëzhgues në Arduino për të parandaluar që kjo të ndodhë.

Hapi 1: Çfarë është ky kohëmatës vëzhgues?

Si të aktivizoni kohëmatësin Watchdog?
Si të aktivizoni kohëmatësin Watchdog?

Kohëmatësi Arduino mbikëqyrës siç nënkupton edhe emri është një kohëmatës që funksionon veçmas nga CPU -ja kryesore në tabelë. Ky kohëmatës mund të përdoret për të kontrolluar periodikisht gjendjen e tabelës dhe në rrethanat kur bordi ka ngecur në një lak softuerik ose ka ngecur për shkak të dështimit të harduerit, kohëmatësi mbikëqyrës mund të rivendosë Arduino -n dhe ta fillojë nga e para.

Si parazgjedhje kur nuk është në përdorim, ky kohëmatës është i çaktivizuar në të gjitha projektet dhe vetëm kur e aktivizojmë, duhet të sigurohemi që periodikisht t'i themi që të mos e rivendosë bordin tonë nëse ai ende funksionon siç pritej.

Për të qenë në gjendje të përdorim kohëmatësin mbikëqyrës, së pari duhet të përfshijmë skedarin avr/wdt.h në skicën tonë Arduino. Kjo është biblioteka standarde që mban veprimet e mbikëqyrësit.

Hapi 2: Si të aktivizoni kohëmatësin mbikëqyrës?

Si të aktivizoni kohëmatësin Watchdog?
Si të aktivizoni kohëmatësin Watchdog?
Si të aktivizoni kohëmatësin Watchdog?
Si të aktivizoni kohëmatësin Watchdog?

Për të aktivizuar kohëmatësin, ne përdorim funksionin "wdt_enable" ku duhet të kalojmë në intervalin e pragut në të cilin bordi do të rivendoset. Në varësi të rastit tonë të përdorimit, kjo mund të jetë diku nga 15 milisekonda deri në 8 sekonda në cilësimet e paracaktuara që gjenden në bibliotekën e rojeve.

THRESHOLD - EMRI KONSTANT

15 ms WDTO_15MS 30 ms WDTO_30MS 60 ms WDTO_60MS 120 ms WDTO_120MS 250 ms WDTO_250MS 500 ms WDTO_500MS 1s WDTO_1S 2s WDTO_2S 4s WDTO_4S 8s WDTO_8S

Hapi 3: Mbani programin tuaj në punë

Mbani programin tuaj në punë
Mbani programin tuaj në punë

Tani, me kohëmatësin e aktivizuar, për ta parandaluar atë nga rivendosja e Arduino -s tonë, ne duhet të thërrasim periodikisht funksionin "wdt_reset" për të rivendosur kohëmatësin mbikëqyrës para se të skadojë intervali i pragut.

Kur zgjidhni një interval rivendosjeje, është thelbësore që të marrim parasysh çdo operacion të gjatë si leximi ose dërgimi i të dhënave ose lidhja me sensorë të jashtëm. Pragu i rivendosjes duhet të jetë të paktën një herë e gjysmë më i madh se këto herë për të parandaluar çdo rivendosje aksidentale.

Hapi 4: Shembull i Përdorimit

Shembull Përdorimi
Shembull Përdorimi
Shembull Përdorimi
Shembull Përdorimi
Shembull Përdorimi
Shembull Përdorimi

Në programin shembull që mund të shkarkoni këtu, ne fillimisht vendosëm kohëmatësin mbikëqyrës me një interval rivendosjeje prej 4 sekondash. Pastaj për të ditur që jemi në funksionin e konfigurimit, ne ndezim një LED për 3 herë shpejt dhe pastaj në lakin kryesor fillimisht e rivendosim kohëmatësin, ndezim një LED me intervale progresive më të gjata dhe më pas e fikim. Cikli tjetër rivendos përsëri kohëmatësin derisa koha e ndezjes të jetë më e gjatë se 4 sekonda.

Kur kjo të ndodhë, kohëmatësi i rojes rivendos tabelën dhe konfigurimi ekzekutohet përsëri.

Hapi 5: Çështjet e Kohëmatësit të Mbikëqyrësit

Një çështje e mundshme me kohëmatësin vëzhgues, në varësi të ngarkuesit të ngarkuesit të Arduino -s tuaj është se nëse vlera e kohëmatësit të rojes është shumë e ulët dhe ngarkuesi i ngarkuesit nuk e rivendos kohëmatësin kur ngarkon kodin e ri, mund të përfundoni duke dëmtuar bordin tuaj Arduino në një mënyrë që gjithmonë do të ngecë në fazën e nisjes. Ngarkuesi i ngarkimit do të përpiqet të fillojë, por kohëmatësi do të vazhdojë të rivendosë tabelën, duke mos lejuar që ajo të fillojë siç duhet. Për të parandaluar çështje të tilla, sigurohuni që të përdorni gjithmonë intervalet e pragut prej 2 sekondash ose më shumë.

Hapi 6: Shijoni

Shijoni
Shijoni

Nëse keni një shembull se ku keni përdorur kohëmatësin vëzhgues në një projekt të vërtetë, më tregoni në komente, sigurohuni që të pëlqeni videon dhe mos harroni të regjistroheni.

Urime dhe faleminderit për leximin/shikimin!

Recommended: