Arduino Watchdog: איך זה עובד

כלב השמירה ארדואינו

במאמר חדש זה אנו הולכים לראות מה א כלב שמירה, למה זה יכול לשמש וכיצד להשתמש בו בפרויקטים שלך Arduino. כל מה שאתה צריך לדעת על הפונקציה המעניינת אך הלא ידועה הזו. וכן, כפי שהשם שלו מרמז (כלב שמירה), זה יכול לשמש כדי לעקוב אחר כמה בעיות.

כאן נראה כל מה שאתה צריך לדעת לגבי…

מה זה כלב שמירה?

בתחום המחשוב, א כֶּלֶב שְׁמִירָה הוא מנגנון פיקוח המשמש לניטור פעולת מערכת או תוכנית. תפקידו העיקרי הוא לזהות ולהגיב למצבים חריגים או כשלים במערכת, כגון קריסות או הקפאות, ולנקוט באמצעי תיקון כדי להבטיח המשך פעולה או שחזור מערכת.

כלב השמירה פועל על טיימר אשר מוגדר עבור מרווח זמן מסוים. אם המערכת או התוכנית לא מבצעות פעולה ספציפית או מפעילה את כלב השמירה (כלומר, מפעילים אותו מחדש) בתוך מרווח זמן זה, הכלב מניח שהמערכת במצב לא רצוי או הפסיקה להגיב כראוי ומבצע פעולה שנקבעה מראש. פעולה זו עשויה להשתנות בהתאם ליישום ועשויה לכלול אתחול המערכת, יצירת יומני שגיאות, הפעלת אזעקות או נקיטת צעדים ספציפיים לתיקון הבעיה.

כלב השמירה משמש במגוון מערכות מחשב ומכשירים, ממערכות הפעלה ושרתים ועד למכשירים מערכות משובצות וקריטיות בזמן אמת, כולל Arduino. מטרתו העיקרית היא לשפר את המהימנות והזמינות של המערכת על ידי זיהוי אוטומטי ותגובה לבעיות, ובכך להפחית את הצורך בהתערבות ידנית במצבי כשל.

מהו כלב השמירה של ארדואינו?

ספרים על ארדואינו

יש להתאים את טיימר כלב השמירה של Arduino בהתאם לצרכי האפליקציה. הוא שעון עצר כלבי שמירה עושה שימוש במקור שעון פנימי של 128 קילו-הרץ (עשוי להשתנות בהתאם ללוח ול-MCU בשימוש). כאשר הוא מופעל, הוא מתחיל לספור מאפס עד לערך שנקבע מראש על ידי המשתמש. אם ה-Watchdog Timer לא מתאפס כאשר הוא מגיע לערך זה, הוא מאפס את המיקרו-בקר.

מיקרו-בקר, או MCU, הוא מכשיר אלקטרוני קטן המשלב יחידת עיבוד מרכזית (CPU), זיכרון, ציוד היקפי קלט/פלט, ולפעמים ממשקי תקשורת בשבב בודד. הוא נועד לשלוט ולבצע משימות ספציפיות.

טיימר כלב השמירה ATmega328P, אשר מיושם ב Arduino UNO, מציע 10 הגדרות זמן שונות, כל אחת קובעת מתי הטיימר יעלה על גדותיו ולכן יגרום לאיפוס. מרווחי הזמן השונים הם הבאים: 16 שניות, 32 שניות, 64 שניות, 0.125 שניות, 0.25 שניות, 0.5 שניות, שנייה אחת, 1 שניות, 2 שניות ו-4 שניות, כפי שנראה בהמשך הטבלה שאכלול.

אם עדיין לא ברור לך מה אתה יכול לעשות עם Watchdog Timer Arduino UNO, נראה דוגמה כך שתוכלו להבין זאת בצורה גרפית. בדוגמה זו, נשתמש ב-LED פשוט מהבהב (מצמוץ). הנוריות מהבהבות למשך תקופה מוגדרת לפני הכניסה ללולאת while(). לולאת while() זו משמשת כחלופה למערכת חסימה. מכיוון ש-Watchdog Timer אינו מאופס בזמן לולאת while(), הוא יגרום לאתחול מחדש של המערכת, והנוריות יתחילו להבהב שוב לפני שהמערכת תתרסק ותאתחל מחדש. המחזור הזה יימשך…

שיקולים ותכונות

טיימר כלב השמירה זה מושבת בתחילת הקוד. השהייה של x שניות שולבה לפני הפעלת כלב השמירה. עיכוב זה חיוני כדי לאפשר למטען האתחול Arduino לבדוק אם קוד חדש נטען וכדי לאפשר מספיק זמן לצרוב את הקוד בזיכרון הבזק. היבט זה רלוונטי כאמצעי זהירות. עלול להיווצר מצב שבו, עקב קידוד שגוי או שיקולים לא נאותים, הקוד הכתוב מאפס את המיקרו-בקר במרווחים קצרים מאוד באינסוף. זה יכול להזיק ללוח Arduino ולמנוע העלאת קודים אליו כראוי. אם זה קורה, עליך לצרוב את טוען האתחול באמצעות Arduino אחר כ-ISP ב-Arduino הנעול...

כאשר אנו משתמשים בכלב השמירה של Arduino, יש צורך להשתמש בו רגיסטר סיביות כדי להגדיר את התנהגות השבב. הרגיסטרים הרלוונטיים ומשמעותם מפורטים בגיליון הנתונים של המיקרו-בקר הקיים בלוח Arduino. עם זאת, סביבת הפיתוח המשולבת של Arduino (IDE) מגיעה עם כמה פונקציות ופקודות מאקרו שנועדו לפשט תהליך זה, שניתן לייבא על ידי הכללת הספרייה #לִכלוֹל להשתמש בכלב השמירה של שבבי AVR.

בדרך זו, נוכל להגדיר את כלב השמירה הפעלתו באמצעות הפונקציה wdt_enable().. הארגומנט של פונקציה זו קובע את הזמן לפני איפוס הלוח אם הטיימר לא אופס. לגבי הערכים שאתה יכול להגדיר בקוד, אני כולל אותם כאן:

זמן לפני הפעלת כלב השמירה ארגומנט wtd_enable()
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
למידע נוסף, ניתן לעיין בגיליון הנתונים של Arduino, בו תוכלו למצוא פרטים נוספים על המיקרו-בקר המשולב עצמו, הרגיסטרים שניתן להשתמש בהם עם כלב השמירה, pinout, ציוד היקפי, מפרט טכני, מתחים, צריכת חשמל וכו'.

דוגמה לשימוש ב-watchdog ב- Arduino

Arduino IDE, סוגי נתונים, תכנות

לבסוף, בואו נראה כיצד נעשה שימוש מעשי בכלב השמירה עם דוגמה ב- Arduino IDE. כפי שאנו רואים, זה די פשוט, אתה יכול למצוא קודי מקור שונים כמו זה באינטרנט, כדי להיות מסוגל לתרגל, לשנות וליצור קודים משלך כדי להשתמש בכלב השמירה בפרויקטים שלך. בוא נראה הדוגמה שלנו:

#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, יש שלוש פונקציות מבין שפות התכנות הבולטות לניהול כלב השמירה, ואלו הן:

  • wdt_disable() כדי להשבית את הטיימר בזמן קביעת התצורה של Arduino.
  • wdt_enable(זמן) להקצות מרווח לטיימר ולהפעיל אותו, תוך ציון הזמן המתאים כפי שהראיתי בטבלה הקודמת.
  • wdt_reset() כדי לחדש את המרווח שהוקצה וכדי שהתוכנית לא תתחיל מחדש.

היה הראשון להגיב

השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.