ในบทความใหม่นี้เราจะมาดูกันว่ามีอะไรบ้าง สุนัขเฝ้าบ้านใช้ทำอะไรได้บ้าง และจะใช้ในโครงการของคุณอย่างไร แพลตฟอร์มฮาร์ดแวร์. ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับฟังก์ชันที่น่าสนใจแต่ยังไม่เป็นที่รู้จักนี้ และใช่ ตามชื่อของมัน (สุนัขเฝ้าบ้าน) มันสามารถใช้เพื่อติดตามปัญหาบางอย่างได้
ที่นี่เราจะเห็น สิ่งที่คุณต้องรู้ เกี่ยวกับ…
สุนัขเฝ้าบ้านคืออะไร?
ในการคำนวณ a สุนัขเฝ้าบ้าน เป็นกลไกกำกับดูแลที่ใช้ในการติดตามประสิทธิภาพของระบบหรือโปรแกรม หน้าที่หลักคือการตรวจจับและตอบสนองต่อสถานการณ์ที่ผิดปกติหรือความล้มเหลวในระบบ เช่น การขัดข้องหรือการค้าง และเพื่อใช้มาตรการแก้ไขเพื่อรับประกันความต่อเนื่องของการทำงานหรือการกู้คืนระบบ
สุนัขเฝ้าบ้าน ทำงานบนตัวจับเวลา ซึ่งถูกกำหนดไว้ตามช่วงเวลาที่กำหนด หากระบบหรือโปรแกรมไม่ดำเนินการเฉพาะหรือจ่ายไฟให้กับโปรแกรมเฝ้าระวัง (นั่นคือ ไม่มีการรีสตาร์ท) ภายในช่วงเวลานั้น โปรแกรมเฝ้าระวังจะถือว่าระบบอยู่ในสถานะที่ไม่ต้องการหรือหยุดการตอบสนองอย่างถูกต้องและใช้ค่าเริ่มต้น การกระทำ. การดำเนินการนี้อาจแตกต่างกันไปตามการใช้งาน และอาจรวมถึงการรีบูตระบบ การสร้างบันทึกข้อผิดพลาด การแจ้งเตือน หรือการดำเนินการเฉพาะเพื่อแก้ไขปัญหา
สุนัขเฝ้าบ้านถูกใช้ในระบบคอมพิวเตอร์และอุปกรณ์ต่างๆ ตั้งแต่ระบบปฏิบัติการ เซิร์ฟเวอร์ ไปจนถึงอุปกรณ์ต่างๆ ระบบเรียลไทม์แบบฝังตัวและสำคัญ รวมถึง Arduino. เป้าหมายหลักคือการปรับปรุงความน่าเชื่อถือและความพร้อมใช้งานของระบบโดยการตรวจจับและตอบสนองต่อปัญหาโดยอัตโนมัติ ซึ่งช่วยลดความจำเป็นในการแทรกแซงด้วยตนเองในสถานการณ์ความล้มเหลว
สุนัขเฝ้าบ้าน Arduino คืออะไร?
ต้องตั้งค่าตัวจับเวลา Watchdog Arduino ตามความต้องการของแอปพลิเคชัน เขา นาฬิกาจับเวลา ใช้แหล่งสัญญาณนาฬิกาภายใน 128 kHz (อาจแตกต่างกันไปขึ้นอยู่กับบอร์ดและ MCU ที่ใช้) เมื่อเปิดใช้งาน ระบบจะเริ่มนับจากศูนย์ถึงค่าที่ผู้ใช้กำหนดไว้ล่วงหน้า หาก Watchdog Timer ไม่รีเซ็ตเมื่อถึงค่าดังกล่าว ระบบจะรีเซ็ตไมโครคอนโทรลเลอร์
ตัวจับเวลาสุนัขเฝ้าบ้าน ATmega328Pซึ่งดำเนินการใน Arduino UNOเสนอการตั้งค่าเวลาที่แตกต่างกัน 10 แบบ โดยแต่ละรายการจะกำหนดว่าตัวจับเวลาจะล้นเมื่อใดจึงทำให้เกิดการรีเซ็ต ช่วงเวลาที่แตกต่างกันมีดังต่อไปนี้: 16 ms, 32 ms, 64 ms, 0.125 วินาที, 0.25 วินาที, 0.5 วินาที, 1 วินาที, 2 วินาที, 4 วินาที และ 8 วินาที ดังที่เราจะเห็นในตารางที่ฉันรวมไว้ในภายหลัง
หากยังไม่ชัดเจนสำหรับคุณว่าคุณสามารถใช้ Watchdog Timer ทำอะไรได้บ้าง Arduino UNOเราจะเห็น ตัวอย่าง เพื่อให้คุณเข้าใจอย่างชัดเจน ในตัวอย่างนี้ เราจะใช้การกะพริบของไฟ LED ไฟ LED จะกะพริบเป็นระยะเวลาหนึ่งก่อนที่จะเข้าสู่ลูป while() while() ลูปนี้ใช้เป็นทางเลือกแทนระบบที่ถูกล็อค เนื่องจาก Watchdog Timer ไม่ได้ถูกรีเซ็ตในขณะที่อยู่ในลูป while() มันจะทำให้เกิดการรีบูตระบบ และไฟ LED จะเริ่มกะพริบอีกครั้งก่อนที่ระบบจะขัดข้องและรีบูต รอบนี้จะดำเนินต่อไป...
ข้อควรพิจารณาและคุณสมบัติ
ตัวจับเวลาสุนัขเฝ้าบ้าน ถูกปิดใช้งานเมื่อเริ่มต้นโค้ด. มีการหน่วงเวลา x วินาทีก่อนเปิดใช้งาน Watchdog ความล่าช้านี้เป็นสิ่งสำคัญในการอนุญาตให้ Arduino bootloader ตรวจสอบว่ามีการโหลดโค้ดใหม่หรือไม่ และเพื่อให้มีเวลาเพียงพอในการเขียนโค้ดลงในหน่วยความจำแฟลช ด้านนี้มีความเกี่ยวข้องเพื่อเป็นการป้องกันไว้ก่อน สถานการณ์อาจเกิดขึ้นเนื่องจากการเข้ารหัสผิดพลาดหรือการพิจารณาที่ไม่เหมาะสม โค้ดที่เขียนจะรีเซ็ตไมโครคอนโทรลเลอร์ในช่วงเวลาที่สั้นมากอย่างไม่สิ้นสุด สิ่งนี้สามารถสร้างความเสียหายให้กับบอร์ด Arduino และป้องกันไม่ให้โค้ดถูกอัพโหลดอย่างถูกต้อง หากสิ่งนี้เกิดขึ้น จำเป็นต้องเบิร์นบูตโหลดเดอร์โดยใช้ Arduino อื่นเป็น ISP บน Arduino ที่ล็อคไว้...
เมื่อเราใช้ Watchdog Arduino ก็จำเป็นต้องใช้ บิตรีจิสเตอร์ เพื่อกำหนดพฤติกรรมของชิป รีจิสเตอร์ที่เกี่ยวข้องและความหมายมีรายละเอียดอยู่ในเอกสารข้อมูลไมโครคอนโทรลเลอร์ที่แสดงอยู่บนบอร์ด Arduino อย่างไรก็ตาม Arduino Integrated Development Environment (IDE) มาพร้อมกับฟังก์ชันและมาโครบางอย่างที่ออกแบบมาเพื่อทำให้กระบวนการนี้ง่ายขึ้น ซึ่งสามารถนำเข้าได้โดยการรวมไลบรารี #รวม เพื่อใช้เฝ้าระวังของชิป AVR
ด้วยวิธีนี้เราสามารถกำหนดค่า Watchdog ได้ เปิดใช้งานผ่านฟังก์ชัน wdt_enable(). อาร์กิวเมนต์ของฟังก์ชันนี้จะกำหนดเวลาก่อนที่บอร์ดจะรีเซ็ตในกรณีที่ไม่ได้รีเซ็ตตัวจับเวลา เกี่ยวกับค่าที่คุณสามารถกำหนดค่าในโค้ดได้ ฉันรวมไว้ที่นี่:
เวลาก่อนที่สุนัขเฝ้าบ้านจะถูกกระตุ้น | อาร์กิวเมนต์ wtd_enable() |
ms 15 | WDTO_15MS |
ms 30 | WDTO_30MS |
ms 60 | WDTO_60MS |
ms 120 | WDTO_120MS |
ms 250 | WDTO_250MS |
ms 500 | WDTO_500MS |
1 s | WDTO_1S |
2 s | WDTO_2S |
4 s | WDTO_4S |
8 s | WDTO_8S |
ตัวอย่างการใช้ Watchdog ใน Arduino
สุดท้ายนี้ เราจะมาดูกันว่าสุนัขเฝ้าบ้านใช้งานจริงอย่างไรพร้อมตัวอย่างใน Arduino IDE ดังที่เราเห็น มันค่อนข้างง่าย คุณสามารถค้นหาซอร์สโค้ดต่างๆ เช่นนี้ได้บนอินเทอร์เน็ต เพื่อให้คุณสามารถฝึกฝน แก้ไข และสร้างโค้ดของคุณเองเพื่อใช้ Watchdog ในโปรเจ็กต์ของคุณ มาดูกัน ตัวอย่างของเรา:
#include <avr/wdt.h> // Incluir la biblioteca watchdog (wdt.h) void setup() { wdt_disable(); // Desactivar el watchdog mientras se configura, para que no se resetee wdt_enable(WDTO_2S); // Configurar watchdog a dos segundos } void loop() { wdt_reset(); // Actualizar el watchdog para que no produzca un reinicio //Aquí iría el código de tu programa... }
ดังที่เห็นได้จากตัวอย่างร่างของ Arduino สามฟังก์ชั่น ของภาษาโปรแกรมที่โดดเด่นสำหรับการจัดการ Watchdog และสิ่งเหล่านี้คือ:
- wdt_disable() เพื่อปิดการใช้งานตัวจับเวลาขณะกำหนดค่า Arduino
- wdt_enable(เวลา) เพื่อกำหนดช่วงเวลาให้กับตัวจับเวลาและเริ่มต้น โดยระบุเวลาที่สอดคล้องกันดังที่ผมแสดงในตารางด้านบน
- wdt_reset() เพื่อต่ออายุช่วงเวลาที่กำหนดและโปรแกรมไม่รีสตาร์ท