Watchdog timer ตัวช่วยในการป้องกันไมโครคอนโทรเลอร์ค้าง หรือ แฮงค์

Watchdog แปลแบบไทย ๆ ก็คือ สุนัขเฝ้าบ้าน น้องจะคอยตรวจสอบความผิดปกติและเห่าเตือนภัยให้เรารู้ตัว ในแง่ของโลกอิเล็กทรอนิกส์ก็มีอุปกรณ์ที่ช่วยตรวจสอบการทำงานของหน่วยประมวลผลเมื่อมีอาการค้างเช่นกัน ที่มีชื่อว่า “Watchdog Timer” … ลุยกันเลย

Sarawoot Chaichana
Chiang Mai Maker Club
2 min readApr 23, 2019

--

หลักการทำงาน Watchdog

  • ภายใน Watchdog จะประกอบไปด้วย Oscillator และ Timer การทำงานของตัว Timer จะเริ่มนับไปเรื่อย ๆ ตั้งแต่จ่ายไฟให้กับวงจร เมื่อนับไปถึงค่าสูงสุดของมัน มันก็ส่งสัญญาณไป Reset ไมโครคอนโทรเลอร์ แต่ถ้า ไมโครคอนโทรลเลอร์ส่งสัญญาณไป Clear Timer ของ Watchdog ก่อนที่ Watchdog จะนับถึงค่าสูงสุด Watchdog ก็จะไม่ Reset ไมโครคอนโทรลเลอร์
  • ฉะนั้นในการทำงานปกติ ไมโครคอนโทรลเลอร์ต้อง Clear Timer ของ Watchdog ภายในเวลาที่กำหนดอยู่ตลอดเวลา ถ้า ไมโครคอนโทรลเลอร์แฮงค์ ไม่ทำงานก็จะไม่มีการ Clear Timer ของ Watchdog ทำให้ตัว Watchdog ส่งสัญญาณมา Reset ไมโครคอนโทรลเลอร์

ทำไมต้องมี Watchdog

ในงานบางระบบต้องทำงานตลอด 24 ชม. เช่นระบบ IoT ต่าง ๆ ระบบที่ต้องอ่านค่าจากเซนเซอร์ตลอดเวลา ถ้าเกิดการผิดพลาดหรือมี Noise เข้ามากวนทำให้ ไมโครคอนโทรลเลอร์ค้างได้ เมื่ออาการดังกล่าว Watchdog จะทำการ Reset ไมโครคอนโทรลเลอร์ขึ้นมาทำงานใหม่

ตัวอย่าง Block การทำงานของ Watchdog Timer

ไมโครคอนโทรลเลอร์มี Watchdog อยู่แล้วหรือไม่

ไมโครคอนโทรลเลอร์ตระกูลใหม่ ๆ เช่น ESP32, PIC, AVR มี Watchdog อยู่ในตัวอยู่แล้ว จึงไม่ต้องต่อ Watchdog ภายนอก แต่ถ้าไมโครคอนโทรลเลอร์ตัวนั้นไม่มีก็สามารถต่อ Watchdog ภายนอกได้เช่นเบอร์ MCP1320

ตัวอย่างการทำงานของเจ้า Watchdog Timer

ผมหา Watchdog มารีวิวเพื่อให้ทุกท่านได้เข้าใจการทำงานของมันมากยิ่งขึ้น ซึ่งผมเลือกเบอร์ MCP1320–29 ของ Microchip ที่ราคาถูกมาก ๆ

บอร์ด Nano32 กับ Watchdog Timer

การทำงานของ Watchdog Timer แต่ละตัวมีความแตกต่างกันออกไป ขึ้นอยู่กับลักษณะการออกแบบวงจรและ การนำไปใช้งาน ข้อดีของเจ้าเบอร์นี้คือ นอกจากจะมี Watchdog Timer แล้วยังมี Voltage Supervisor ไว้คอยตรวจสอบระดับแรงดันที่เปลี่ยนแปลง

ทดสอบการทำงานของ Voltage Supervisor

  • เส้นสีเหลือง = สัญญาณรีเซต RST
  • เส้นสีฟ้า = แรงดัน VCC ที่จ่ายให้กับ Watchdog
ภาพการทำงานในโหมดของ Voltage Supervisor

จากภาพโดยปกติจ่ายแรงดัน 3V แล้วทำการปรับลดแรงดันลงเรื่อย ๆ เมื่อแรงดันต่ำกว่าประมาณ 2.9V ตัว Watchdog จะทำการ ส่งลอจิก “0” ไปที่ขา RST ทำให้บอร์ด Reset ตลอดเวลาจนกว่าระดับแรงดันจะกลับมาปกติ หรือมากกว่า 2.9V นั่นเอง

ทดสอบการทำงานของ Watchdog Timer

  • เส้นสีเหลือง = สัญญาณรีเซต RST
  • เส้นสีฟ้า = สัญญาณ Clock ที่ป้อนให้กับ Watchdog Timer
สัญญาณ Clock ค้างที่ลอจิก “0” ทำให้ Watchdog ส่งสัญญาณ Reset

จากภาพทำการป้อนสัญญาณ Clock เป็นลูกคลื่นสี่เหลี่ยม (Square Wave) ที่ความถี่ 0.5Hz จำนวน 2 ลูกคลื่น แล้วค้างไว้ที่ Low ลอจิก “0” เจ้าตัว Watchdog ส่งสัญญาณรีเซตออกมา

สัญญาณ Clock ค้างที่ลอจิก “1” ทำให้ Watchdog ส่งสัญญาณ Reset

จากภาพทำการป้อนสัญญาณ Clock เป็นลูกคลื่นสี่เหลี่ยม (Square Wave) ที่ความถี่ 0.5Hz จำนวน 2 ลูกคลื่น แล้วค้างไว้ที่ HIGH ลอจิก “1” เจ้าตัว Watchdog ส่งสัญญาณรีเซตออกมาเช่นกัน

ทดสอบการทำงานของ Watchdog Timer เชื่อมต่อกับ Nano32

ภาพแสดงการทำงาน Watchdog Timer ทำงานร่วมกับบอร์ด Nano32
  • เส้นสีเหลือง = สัญญาณรีเซต RST ต่อกับขา EN ของบอร์ด Nano32
  • เส้นสีฟ้า = สัญญาณ Clock ที่ป้อนให้กับ Watchdog Timer

จากภาพทำการป้อนสัญญาณ Clock เป็นลูกคลื่นสี่เหลี่ยม (Square Wave) ที่ความถี่ 0.5Hz หลังจากลูกคลื่นที่ 3 มีช่วงเวลาที่สัญญาณ Clock ขาดหายไปเกิน 1.6 วินาที ทำให้ตัว Watchdog Timer มองว่า บอร์ด Nano32 ค้างเลยส่งสัญญาณ Reset 200ms Active Low ให้บอร์ด Nano32 เริ่มต้นทำงานใหม่อีกครั้งนั่นเอง

ลิงค์ DataSheet ของตัว Watchdog Timer >>> คลิกที่นี่

Watchdog Timer เป็นเพียงตัวช่วยในการ ตรวจสอบการทำงานของไมโครคอนโทรเลอร์ที่ทำงานผิดปกติ แล้วทำการรีเซตให้เริ่มทำงานใหม่ แต่การเขียนโปรแกรมที่ดี บางทีอาจจะไม่จำเป็นต้องพึ่ง Watchdog Timer อีกเลย

--

--

Chiang Mai Maker Club
Chiang Mai Maker Club

Published in Chiang Mai Maker Club

Chiang Mai Maker Club is an open community to establish partnership among students, instructors, entrepreneurs and professionals interested in fusing engineering, art, design and technology into innovative products and media.

Sarawoot Chaichana
Sarawoot Chaichana

Written by Sarawoot Chaichana

Maker ตัวน้อยผู้แสวงหาความกระจ่าง