תוכן עניינים:

The Arduino Hang Guardian - Arduino Watchdog Timer הדרכה: 6 שלבים
The Arduino Hang Guardian - Arduino Watchdog Timer הדרכה: 6 שלבים

וִידֵאוֹ: The Arduino Hang Guardian - Arduino Watchdog Timer הדרכה: 6 שלבים

וִידֵאוֹ: The Arduino Hang Guardian - Arduino Watchdog Timer הדרכה: 6 שלבים
וִידֵאוֹ: The Arduino hang guardian - Arduino watchdog timer tutorial 2024, נוֹבֶמבֶּר
Anonim
Image
Image

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

"מה קורה?", תשאל ותתחיל לחפור בקוד שלך, רק כדי להבין שנתקעת בלולאה אינסופית. תודה לאל שהארדואינו היה על הספסל שלך ולא במיקום מרוחק.

היום נבחן כיצד אנו יכולים להשתמש בטיימר של כלב השמירה בארדואינו כדי למנוע זאת.

שלב 1: מהו טיימר כלב השמירה הזה?

כיצד להפעיל את טיימר כלב השמירה?
כיצד להפעיל את טיימר כלב השמירה?

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

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

על מנת שנוכל להשתמש בטיימר של כלב השמירה, תחילה עלינו לכלול את קובץ avr/wdt.h במערכון הארדואינו שלנו. זוהי הספרייה הסטנדרטית המכילה את פעולות כלב השמירה.

שלב 2: כיצד להפעיל את טיימר כלב השמירה?

כיצד להפעיל את טיימר כלב השמירה?
כיצד להפעיל את טיימר כלב השמירה?
כיצד להפעיל את טיימר כלב השמירה?
כיצד להפעיל את טיימר כלב השמירה?

כדי להפעיל את הטיימר, אנו משתמשים בפונקציה "wdt_enable" שבה עלינו לעבור במרווח הסף שבו יתאפס הלוח. בהתאם למקרה השימוש שלנו, זה יכול להיות בין 15 אלפיות השנייה ועד 8 שניות בהגדרות מוגדרות מראש הכלולות בספריית כלבי השמירה.

סף - שם קבוע

15 ms WDTO_15MS 30 ms WDTO_30MS 60 ms WDTO_60MS 120 ms WDTO_120MS 250 ms WDTO_250MS 500 ms WDTO_500MS 1s WDTO_1S 2s WDTO_2S 4s WDTO_4S 8s WDTO_8S

שלב 3: שמור על הפעלת התוכנית שלך

שמור על הפעלת התוכנית שלך
שמור על הפעלת התוכנית שלך

כעת, כשהטיימר מופעל, כדי למנוע ממנו לאפס את הארדואינו, עלינו לקרוא מעת לעת לפונקציית "wdt_reset" כדי לאפס את טיימר כלב השמירה לפני פקיעת תום מרווח הסף.

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

שלב 4: שימוש לדוגמא

שימוש לדוגמא
שימוש לדוגמא
שימוש לדוגמא
שימוש לדוגמא
שימוש לדוגמא
שימוש לדוגמא

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

כאשר זה קורה, טיימר כלב השמירה מאפס את הלוח וההגדרה מבוצעת שוב.

שלב 5: בעיות טיימר של כלב השמירה

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

שלב 6: תהנה

תהנה
תהנה

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

כל הכבוד ותודה על הקריאה/הצפייה!

מוּמלָץ: