สอนใช้งาน Arduino คำสั่ง Watch Dog Timer ตรวจสอบการทำงานของโปรแกรม
การที่เราเปิดโปรแกรมให้บอร์ด Arduino ทำงานตลอดเวลา เราจะมั่นใจได้อย่างไรว่าบอร์ดจะไม่รวนไม่แฮงค์ หรือถ้าแฮงค์แล้วจะแก้ไขแบบอัตโนมัติได้อย่างไร
ใน Arduino มีวงจรตรวจสอบที่เป็นเหมือนชีพจรของบอร์ด ถ้าชีพจรยังเต้นอยู่แสดงว่าบอร์ดทำงานปกติ ถ้าหยุดเต้นให้สั่ง Restart บอร์ดเพื่อเริ่มทำงานใหม่
โดยตัวที่ติดตามเราเรียกว่า Watch Dog Timer 1. คำสั่ง wdt_enable(WDTO_2S);
สั่งให้ Watch Dog เริ่มจับเวลา Timer ถ้าทำงานช้ากว่าเวลาที่ตั้งไว้ จะสั่งให้บอร์ด Reset ทันที
รูปแบบคำสั่ง wdt_enable(WDTO_2S); wdt_enable(WDTO_2S);
WDTO_2S เป็นค่าตัวแปรสำหรับจับเวลา สามารถตั้งค่าได้หลายค่า ดังตารางนี้
ตัวอย่างคำสั่ง wdt_enable();
ปกติโปรแกรมทำงานประมาณ 15 ms ถ้าโปรแกรมทำงานเกินนี้ แสดงว่าบอร์ดอาจมีปัญหา วงจรจะสั่ง Reset บอร์ดให้เริ่มต้นทำงานใหม่
เขียนคำสั่งได้ดังนี้
wdt_enable(WDTO_2S);
อัพโหลดโคดตัวอย่างลงบอร์ด Arduino แล้วดูผลลัพธ์
---
เมื่อทำงาน บอร์ด Arduino จะ Reset โปรแกรมใหม่ ซึ่งสั่งเกตได้จากมีการทำคำสั่งในฟังก์ชั่น setup() สาเหตุเป็นเพราะ Wath Dog จับเวลาที่ 2 วินาที แต่โปรแกรมเราทำงานที่ 3 วินาที

ให้อัพโหลดโค้ดตัวอย่างลงบอร์ด Arduino โค้ดนี้ใน void loop จะทำงานเกิน ไม่เกิน 2 วินาที
---
จะเห็นว่าถ้าโปรแกรมทำงานเร็วกว่าที่ Watch Dog Timer ทำงาน ก็จะไม่มีการ Reset เกิดขี้น
2. คำสั่ง wdt_disable();
เป็นคำสั่ง ปิดการทำงาน Watch Dog Timer
ถ้าเอาคำสั่ง wdt_disable(); มาอยู่ใน void loop จะเป็นการปิดการทำงาน Watch Dog Timer ถึงจะกดหนด Delay เกิน 2วินาที โปรแกรมก็จะไม่ Reset
ดูการใช้งาน Arduino watch Dog Timer แบบละเอียดเพิ่มเติมได้ที่นี่
ดูสอนวิธีใช้งาน Arduino บทต่อไป
#56 สอนใช้งาน Arduino คำสั่งการหน่วงเวลา
#58 สอนใช้งาน Arduinoบันทึกข้อมูลเก็บไว้ใน บอร์ด Arduino EEPROM
หน้าหลักบทความสอน Arduino แบบย่อทั้งหมด