Агуулгын хүснэгт:
- Алхам 1: Энэ харуулын нохойны таймер гэж юу вэ?
- Алхам 2: Watchdog таймерыг хэрхэн идэвхжүүлэх вэ?
- Алхам 3: Хөтөлбөрөө ажиллуулж байгаарай
- Алхам 4: Хэрэглээний жишээ
- Алхам 5: Watchdog таймерын асуудлууд
- Алхам 6: Таашаал аваарай
Видео: Arduino Hang Guardian - Arduino Watchdog Timer хичээл: 6 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
Бүгдээрээ сайн уу, Энэ нь бид бүгдэд тохиолддог. Та төсөл барьж, бүх мэдрэгчийг урам зоригтой холбож, гэнэт Arduino унтарч, оролт боловсруулагдахгүй байна.
"Юу болж байна вэ?", Та асууж, кодоо ухаж эхлэх болно, гэхдээ та хязгааргүй гогцоонд гацсан гэдгээ ойлгох болно. Бурханд талархъя, Arduino нь алс холын газар биш харин таны вандан сандал дээр байсан.
Өнөөдөр бид үүнээс урьдчилан сэргийлэхийн тулд Arduino дээр харуулын цаг хэмжигчийг хэрхэн ашиглах талаар авч үзэх болно.
Алхам 1: Энэ харуулын нохойны таймер гэж юу вэ?
Arduino watchdog таймер нь нэрнээсээ харахад самбар дээрх үндсэн CPU -ээс тусдаа ажилладаг таймер юм. Энэхүү таймерыг самбарын төлөв байдлыг үе үе шалгаж байх боломжтой бөгөөд самбар нь програм хангамжийн гогцоонд гацсан эсвэл тоног төхөөрөмжийн эвдрэлээс болж гацсан тохиолдолд харуулын нохой нь Arduino -г дахин тохируулж, дахин эхлүүлэх боломжтой болно.
Анхдагч байдлаар, энэ таймерыг ашиглаагүй тохиолдолд бүх төслүүд дээр идэвхгүй болдог бөгөөд зөвхөн үүнийг идэвхжүүлсэн тохиолдолд самбарыг хүлээгдэж байсны дагуу ажиллуулахгүй байгаа эсэхийг үе үе хэлж байх ёстой.
Харуулын нохойны цаг хэмжигчийг ашиглахын тулд бид эхлээд avr/wdt.h файлыг Arduino эскиздээ оруулах ёстой. Энэ бол манаачийн үйлдлийг хийдэг стандарт номын сан юм.
Алхам 2: Watchdog таймерыг хэрхэн идэвхжүүлэх вэ?
Таймерыг идэвхжүүлэхийн тулд бид "wdt_enable" функцийг ашигладаг бөгөөд самбарыг дахин тохируулах босго интервалыг давах шаардлагатай болно. Бидний хэрэглээний тохиолдлоос хамааран энэ нь 15 миллисекундээс 8 секунд хүртэл ажиглагчийн номын санд байгаа урьдчилан тохируулсан тохиргоонд байж болно.
Босго - Байнгын нэр
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
Алхам 3: Хөтөлбөрөө ажиллуулж байгаарай
Одоо таймерыг идэвхжүүлсэн байхад Arduino -г дахин тохируулахаас урьдчилан сэргийлэхийн тулд бид "wdt_reset" функцийг дуудаж, босгоны интервал дуусахаас өмнө харуулын цагийг дахин тохируулах хэрэгтэй.
Дахин тохируулах интервалыг сонгохдоо өгөгдөл унших, илгээх эсвэл гадны мэдрэгчтэй холбогдох гэх мэт урт хугацааны үйлдлийг анхаарч үзэх нь маш чухал юм. Санамсаргүй байдлаар дахин тохируулахаас урьдчилан сэргийлэхийн тулд дахин тохируулах босго нь эдгээр хугацаанаас дор хаяж нэг хагас дахин их байх ёстой.
Алхам 4: Хэрэглээний жишээ
Эндээс татаж авах боломжтой програмын програм дээр бид эхлээд 4 секундын завсарлагаатай ажиглагч таймерыг тохируулсан болно. Дараа нь бид тохиргооны функцэд байгаа гэдгээ мэдэхийн тулд LED -ийг 3 удаа хурдан асаагаад үндсэн давталтад эхлээд таймерыг дахин тохируулж, аажмаар урт интервал бүхий LED асааж, дараа нь унтраадаг. Дараагийн давталт нь гэрэлтүүлгийн хугацаа 4 секундээс урт болтол таймерыг дахин тохируулна.
Ийм зүйл тохиолдвол харуулын цаг хэмжигч самбарыг дахин тохируулж, тохиргоог дахин хийнэ.
Алхам 5: Watchdog таймерын асуудлууд
Arduino -ийн ачаалагчаас хамаарч харуулын цаг хэмжигчтэй холбоотой байж болох нэг асуудал бол хэрэв харуулын цаг хэмжигчийн утга хэт доогуур, ачаалагч нь шинэ код байршуулахдаа таймерыг дахин тохируулаагүй бол та Arduino самбараа гэмтээж болзошгүй юм. энэ нь ачаалах үе шатанд үргэлж гацах болно. Ачаалагч эхлүүлэхийг оролдох боловч таймер нь самбарыг дахин тохируулах бөгөөд үүнийг зөв эхлүүлэхийг хэзээ ч зөвшөөрөхгүй. Ийм асуудал гарахаас урьдчилан сэргийлэхийн тулд 2 секунд ба түүнээс дээш хугацааны босгыг үргэлж хэрэглэж байх хэрэгтэй.
Алхам 6: Таашаал аваарай
Хэрэв танд харуулын цаг хэмжигчийг бодит төсөлд хаана ашиглаж байсан жишээ байгаа бол сэтгэгдлээ үлдээгээрэй, бичлэг таалагдсан эсэхийг шалгаад захиалахаа бүү мартаарай.
Баяр хүргэе, уншсан/үзсэн танд баярлалаа!
Зөвлөмж болгож буй:
AVR Assembler хичээл 7: 12 алхам
AVR Assembler Tutorial 7: Tutorial 7 -д тавтай морилно уу! Өнөөдөр бид эхлээд товчлуурыг хэрхэн яаж цэвэрлэхээ, дараа нь аналог оролтын портуудыг товчлууртай хэрхэн харьцахыг харуулах болно. оролт. Бид товчлуурыг утсаар холбоно
Raspberry Pi - ADXL345 3 тэнхлэг бүхий акселерометр Python хичээл: 4 алхам
Raspberry Pi-ADXL345 3 тэнхлэгт акселерометр Python заавар: ADXL345 нь жижиг, нимгэн, хэт өндөр хүчдэлтэй, 3 тэнхлэг бүхий хурдасгуур хэмжигч бөгөөд өндөр нарийвчлалтай (13 битийн) хэмжилтийг ± 16 гр хүртэл гүйцэтгэдэг. Дижитал гаралтын өгөгдлийг 16 битийн хос хэлбэрээр форматладаг бөгөөд I2 C дижитал интерфэйсээр дамжуулан авах боломжтой. Үүнийг хэмждэг
Raspberry Pi SHT25 чийгшил ба температур мэдрэгч Python хичээл: 4 алхам
Raspberry Pi SHT25 чийгшил ба температур мэдрэгч Python заавар: SHT25 I2C чийгшил ба температур мэдрэгч ± 1.8%RH ± 0.2 ° C I2C мини модуль. SHT25 өндөр нарийвчлалтай чийгшил, температур мэдрэгч нь тохируулагдсан, шугаман мэдрэгчийн дохиог өгдөг хэлбэрийн хүчин зүйл, оюун ухааны хувьд салбарын стандарт болсон
Хичээл - Мэдээллийн талбай: 4 алхам
Зааварчилгаа - Өгөгдлийн сангийн талбар: INTRODUCCI Ó Асуудал нь компьютерийн програм хангамжийн хамгийн чухал асуудлуудын нэг юм. Энэ бол хамгийн их ашиг тустай програм юм
Ухаалаг хичээл: 6 алхам
Ухаалаг хичээл: Ухаалаг хичээлийн визний товч танилцуулга хийх шаардлагагүй болно