สารบัญ:
- ขั้นตอนที่ 1: ตัวจับเวลา Watchdog นี้คืออะไร?
- ขั้นตอนที่ 2: วิธีเปิดใช้งาน Watchdog Timer?
- ขั้นตอนที่ 3: ทำให้โปรแกรมของคุณทำงานต่อไป
- ขั้นตอนที่ 4: ตัวอย่างการใช้งาน
- ขั้นตอนที่ 5: ปัญหาตัวจับเวลา Watchdog
- ขั้นตอนที่ 6: สนุก
วีดีโอ: Arduino Hang Guardian - บทช่วยสอนตัวจับเวลา Arduino Watchdog: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
สวัสดีทุกคน, มันเกิดขึ้นกับพวกเราทุกคน คุณสร้างโปรเจ็กต์ เชื่อมต่อเซ็นเซอร์ทั้งหมดอย่างกระตือรือร้น และในทันใด Arduino ก็หยุดทำงานและจะไม่มีการประมวลผลอินพุต
“เกิดอะไรขึ้น” คุณจะถามและเริ่มขุดโค้ดของคุณ เพียงเพื่อจะรู้ว่าคุณติดอยู่ในลูปที่ไม่มีที่สิ้นสุด ขอบคุณพระเจ้าที่ Arduino อยู่บนม้านั่งของคุณและไม่ได้อยู่ในสถานที่ห่างไกล
วันนี้ เราจะมาดูวิธีที่เราสามารถใช้ตัวจับเวลาการเฝ้าระวังบน Arduino เพื่อป้องกันไม่ให้สิ่งนี้เกิดขึ้น
ขั้นตอนที่ 1: ตัวจับเวลา Watchdog นี้คืออะไร?
ตัวจับเวลาจ้องจับผิดของ Arduino ตามชื่อหมายถึงเป็นตัวจับเวลาที่ทำงานแยกจาก CPU หลักบนบอร์ด ตัวจับเวลานี้สามารถใช้เพื่อตรวจสอบสถานะของบอร์ดเป็นระยะๆ และในสถานการณ์ที่บอร์ดติดอยู่ในลูปของซอฟต์แวร์หรือติดขัดเนื่องจากความล้มเหลวของฮาร์ดแวร์ ตัวจับเวลาจ้องจับผิดสามารถรีเซ็ต Arduino และเริ่มต้นใหม่ทั้งหมดได้
โดยค่าเริ่มต้นเมื่อไม่ได้ใช้งานตัวจับเวลานี้จะถูกปิดใช้งานในทุกโครงการและเฉพาะเมื่อเราเปิดใช้งานเท่านั้น เราจำเป็นต้องตรวจสอบให้แน่ใจว่าได้บอกเป็นระยะว่าจะไม่รีเซ็ตบอร์ดของเราหากยังคงทำงานตามที่คาดไว้
เพื่อให้สามารถใช้ตัวจับเวลาจ้องจับผิด อันดับแรกเราต้องรวมไฟล์ avr/wdt.h ไว้ในร่าง Arduino ของเรา นี่คือไลบรารีมาตรฐานที่มีการดำเนินการเฝ้าระวัง
ขั้นตอนที่ 2: วิธีเปิดใช้งาน Watchdog Timer?
ในการเปิดใช้งานตัวจับเวลา เราใช้ฟังก์ชัน "wdt_enable" ซึ่งเราต้องผ่านช่วงเกณฑ์ที่จะรีเซ็ตบอร์ด ขึ้นอยู่กับกรณีการใช้งานของเรา ค่านี้สามารถอยู่ที่ใดก็ได้ตั้งแต่ 15 มิลลิวินาทีจนถึง 8 วินาทีในการตั้งค่าที่กำหนดไว้ล่วงหน้าซึ่งมีอยู่ในไลบรารี watchdog
THRESHOLD - ชื่อคงที่
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 วินาที WDTO_1S 2 วินาที WDTO_2S 4 วินาที WDTO_4S 8 วินาที WDTO_8S
ขั้นตอนที่ 3: ทำให้โปรแกรมของคุณทำงานต่อไป
ขณะนี้ เมื่อเปิดใช้งานตัวจับเวลา เพื่อป้องกันไม่ให้รีเซ็ต Arduino ของเรา เราจำเป็นต้องเรียกใช้ฟังก์ชัน "wdt_reset" เป็นระยะ เพื่อรีเซ็ตตัวจับเวลาจ้องจับผิดก่อนที่ช่วงเกณฑ์จะหมดอายุ
เมื่อเลือกช่วงเวลาการรีเซ็ต สิ่งสำคัญคือเราต้องคำนึงถึงการทำงานที่ใช้เวลานาน เช่น การอ่านหรือส่งข้อมูล หรือการเชื่อมต่อกับเซ็นเซอร์ภายนอก เกณฑ์การรีเซ็ตควรมากกว่าเวลาเหล่านี้อย่างน้อยหนึ่งเท่าครึ่งเพื่อป้องกันการรีเซ็ตโดยไม่ได้ตั้งใจ
ขั้นตอนที่ 4: ตัวอย่างการใช้งาน
ในโปรแกรมตัวอย่างที่คุณสามารถดาวน์โหลดได้ที่นี่ ก่อนอื่นเราจะตั้งค่าตัวจับเวลาจ้องจับผิดด้วยช่วงเวลาการรีเซ็ต 4 วินาที จากนั้นเพื่อให้รู้ว่าเราอยู่ในฟังก์ชันการตั้งค่า เรากะพริบไฟ LED 3 ครั้งอย่างรวดเร็ว จากนั้นในลูปหลัก เราจะรีเซ็ตตัวจับเวลาก่อน ให้ไฟ LED สว่างขึ้นด้วยระยะห่างที่ยาวขึ้นเรื่อยๆ แล้วจึงปิด วนรอบถัดไปจะรีเซ็ตตัวจับเวลาอีกครั้งจนกระทั่งเวลาสว่างขึ้นนานกว่า 4 วินาที
เมื่อสิ่งนี้เกิดขึ้น ตัวจับเวลาจ้องจับผิดจะรีเซ็ตบอร์ดและดำเนินการตั้งค่าอีกครั้ง
ขั้นตอนที่ 5: ปัญหาตัวจับเวลา Watchdog
ปัญหาหนึ่งที่อาจเกิดขึ้นกับตัวจับเวลาจ้องจับผิด ขึ้นอยู่กับ bootloader ของ Arduino ของคุณคือหากค่าตัวจับเวลาจ้องจับผิดต่ำเกินไปและ bootloader ไม่รีเซ็ตตัวจับเวลาเมื่ออัปโหลดรหัสใหม่ คุณอาจลงเอยกับบอร์ด Arduino ของคุณในลักษณะที่ มันจะติดอยู่ในระยะบูตเสมอ bootloader จะพยายามเริ่มต้น แต่ตัวจับเวลาจะทำการรีเซ็ตบอร์ดต่อไป ไม่ยอมให้มันเริ่มทำงานอย่างถูกต้อง เพื่อป้องกันปัญหาเช่นนี้ โปรดใช้ช่วงเวลาเกณฑ์ 2 วินาทีขึ้นไปเสมอ
ขั้นตอนที่ 6: สนุก
หากคุณมีตัวอย่างที่ที่คุณใช้ตัวจับเวลาเฝ้าระวังในโครงการจริง แจ้งให้เราทราบในความคิดเห็น อย่าลืมชอบวิดีโอและอย่าลืมสมัครรับข้อมูล
ไชโยและขอบคุณสำหรับการอ่าน/ดู!
แนะนำ:
Steampunked Dream Guardian Night Light: 9 ขั้นตอน (พร้อมรูปภาพ)
Steampunked Dream Guardian Night Light: สวัสดีทุกคน เพื่อนสนิทคนหนึ่งของฉันขอให้ฉันสร้างของขวัญหมั้น (แน่นอนว่านอกจากแหวนแล้ว!) ให้กับแฟนสาวของเขาเมื่อหลายสัปดาห์ก่อน ทั้งคู่เป็นเหมือนฉัน เป็นอาสาสมัครดับเพลิง และพวกเขารัก Steampunk Objects เพื่อนของฉันนึกถึงการเ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
ง่ายต่อการสร้าง MIDI Hang Drum: 4 ขั้นตอน
ง่ายต่อการสร้าง MIDI Hang Drum: กลองแบบแขวนหรือที่เรียกว่า handpan, กลองแทงค์หรือดรัมลิ้นเหล็กเป็นเครื่องมือที่ทำมาจากถังโพรเพน (ว่างเปล่าแน่นอน) โดยมีลิ้นบางอันตัดในโลหะ ระดับเสียงของโน้ตขึ้นอยู่กับขนาดและน้ำหนักของลิ้นรองเท้า โปร
Eye Guardian: Sound Triggered Eye Protection: 9 ขั้นตอน (พร้อมรูปภาพ)
Eye Guardian: การป้องกันเสียงที่กระตุ้นดวงตา: Eye Guardian คือ Arduino ที่ขับเคลื่อนด้วยเสียงเดซิเบลสูงอย่างต่อเนื่องซึ่งกระตุ้นการสวมใส่อุปกรณ์ป้องกันดวงตา โดยจะตรวจจับเสียงของเครื่องจักรกลหนักและลดแว่นตาป้องกันขณะใช้งานอุปกรณ์ โครงร่างในขั้นตอนแรก ฉันจะอธิบาย Inspirati
Pi Guardian: 6 ขั้นตอน (พร้อมรูปภาพ)
The Pi Guardian: คุณเคยต้องการที่จะจับคนที่คอยขโมยขนมฮัลโลวีนของคุณหรือไม่? หรือเพื่อนร่วมห้องที่น่ารำคาญที่ไม่ทิ้งตู้เย็นไว้คนเดียวล่ะ? ด้วยการใช้ Raspberry Pi 3, Pi Camera และเซ็นเซอร์ PIR ทั้งหมดนี้เป็นไปได้ ง่าย