Talaan ng mga Nilalaman:

Ang Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 na Hakbang
Ang Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 na Hakbang

Video: Ang Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 na Hakbang

Video: Ang Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 na Hakbang
Video: Arduino watchdog timer |Arduino sinhala tutorial | |2020 /2021 | New 2024, Hulyo
Anonim
Image
Image

Kumusta Lahat, Nangyayari ito sa ating lahat. Bumuo ka ng isang proyekto, masigasig na ikonekta ang lahat ng mga sensor, at bigla na lang, nag-hang ang Arduino at walang naprosesong input.

"Ano ang nangyayari?", Magtatanong ka at magsisimulang maghukay sa iyong code, upang mapagtanto na natigil ka sa isang walang katapusang loop. Salamat sa Diyos ang Arduino ay nasa iyong bench at wala sa isang malayuang lokasyon.

Ngayon, titingnan natin kung paano namin magagamit ang tagapantay ng relo sa Arduino upang maiwasan itong mangyari.

Hakbang 1: Ano ang Timer ng Watchdog na Ito?

Paano Paganahin ang Watchdog Timer?
Paano Paganahin ang Watchdog Timer?

Ang Arduino watchdog timer tulad ng ipinapahiwatig ng pangalan ay isang timer na tumatakbo nang hiwalay mula sa pangunahing CPU sa board. Ang timer na ito ay maaaring magamit upang pana-panahong suriin ang estado ng board at sa mga pangyayari kung saan ang board ay natigil sa isang loop ng software o natigil dahil sa pagkabigo ng hardware, maaaring mai-reset ng timer ng monitor ang Arduino at simulan muli itong muli.

Bilang default kapag hindi ginagamit ang timer na ito ay hindi pinagana sa lahat ng mga proyekto at kapag pinagana lamang namin ito, kailangan naming siguraduhin na pana-panahong sabihin ito na huwag i-reset ang aming board kung umaandar pa rin ito tulad ng inaasahan.

Upang magamit ang watchdog timer, kailangan muna naming isama ang avr / wdt.h file sa aming Arduino sketch. Ito ang karaniwang silid-aklatan na humahawak sa mga pagkilos na nagbabantay.

Hakbang 2: Paano Paganahin ang Watchdog Timer?

Paano Paganahin ang Watchdog Timer?
Paano Paganahin ang Watchdog Timer?
Paano Paganahin ang Watchdog Timer?
Paano Paganahin ang Watchdog Timer?

Upang paganahin ang timer, ginagamit namin ang pagpapaandar na "wdt_enable" kung saan kailangan naming pumasa sa agwat ng threshold kung saan i-reset ang board. Nakasalalay sa aming kaso ng paggamit, maaari itong maging kahit saan mula sa 15 milliseconds hanggang sa 8 segundo sa paunang natukoy na mga setting na nilalaman sa library ng watchdog.

THRESHOLD - CONSTANT NAME

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

Hakbang 3: Panatilihing Tumatakbo ang Iyong Program

Panatilihing Tumatakbo ang Iyong Program
Panatilihing Tumatakbo ang Iyong Program

Ngayon, na may naka-on na timer, upang maiwasang mai-reset ang aming Arduino kailangan namin pana-panawagan na tawagan ang function na "wdt_reset" upang i-reset ang timer ng watchdog bago mag-expire ang agwat ng threshold.

Kapag pumipili ng agwat ng pag-reset, mahalaga na isasaalang-alang namin ang anumang mahabang operasyon tulad ng pagbabasa o pagpapadala ng data o pagkonekta sa mga panlabas na sensor. Ang pag-reset ng threshold ay dapat na hindi bababa sa isa at kalahating beses na mas malaki kaysa sa mga oras na ito upang maiwasan ang anumang hindi sinasadyang pag-reset.

Hakbang 4: Halimbawa ng Paggamit

Halimbawa ng Paggamit
Halimbawa ng Paggamit
Halimbawa ng Paggamit
Halimbawa ng Paggamit
Halimbawa ng Paggamit
Halimbawa ng Paggamit

Sa halimbawang programa na maaari mong i-download dito, unang na-set up namin ang timer ng tagabantay na may pagitan ng pag-reset ng 4 na segundo. Pagkatapos upang malaman na nasa pag-andar kami ng pag-setup, nag-flash kami ng isang LED nang 3 beses nang mabilis at pagkatapos ay sa pangunahing loop ay una naming na-reset ang timer, ilaw ang isang LED na may mas mahabang progreso at pagkatapos ay i-off namin ito. Ang susunod na loop ay muling i-reset ang timer hanggang sa ang oras ng pag-iilaw ay mas mahaba sa 4 na segundo.

Kapag nangyari ito, itinatakda ng timer ng tagabantay ang board at naisagawa muli ang pag-setup.

Hakbang 5: Mga Isyu sa Timer ng Watchdog

Ang isang posibleng isyu sa timer ng watchdog, nakasalalay sa bootloader ng iyong Arduino ay kung ang halaga ng watchdog timer ay masyadong mababa at ang bootloader ay hindi na-reset ang timer kapag nag-a-upload ng bagong code, maaari kang mapunta sa pinsala sa iyong Arduino board sa isang paraan na palagi itong mai-stuck sa boot phase. Susubukan ng bootloader na magsimula, ngunit ang timer ay patuloy na i-reset ang board, hindi kailanman pinapayagan itong maayos na magsimula. Upang maiwasan ang mga isyu na tulad nito, tiyaking laging gumagamit ng mga agwat ng threshold na 2 segundo o higit pa.

Hakbang 6: Masiyahan

Tangkilikin
Tangkilikin

Kung mayroon kang isang halimbawa kung saan mo ginamit ang tagapantay ng relo sa isang totoong proyekto, ipaalam sa akin sa mga komento, tiyaking nagustuhan ang video at huwag kalimutang mag-subscribe.

Cheers at salamat sa pagbabasa / panonood!

Inirerekumendang: