Πίνακας περιεχομένων:

The Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 βήματα
The Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 βήματα

Βίντεο: The Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 βήματα

Βίντεο: The Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 βήματα
Βίντεο: The Arduino hang guardian - Arduino watchdog timer tutorial 2024, Δεκέμβριος
Anonim
Image
Image

Γεια σε όλους, Συμβαίνει σε όλους μας. Δημιουργείτε ένα έργο, συνδέετε με ενθουσιασμό όλους τους αισθητήρες και ξαφνικά, το Arduino κολλάει και καμία επεξεργασία δεν γίνεται.

«Τι συμβαίνει;», θα ρωτήσετε και θα αρχίσετε να ψάχνετε τον κώδικά σας, μόνο για να συνειδητοποιήσετε ότι έχετε κολλήσει σε έναν άπειρο βρόχο. Δόξα τω Θεώ, το Arduino ήταν στον πάγκο σας και όχι σε απομακρυσμένη τοποθεσία.

Σήμερα, θα εξετάσουμε πώς μπορούμε να χρησιμοποιήσουμε το χρονόμετρο φύλαξης στο Arduino για να αποτρέψουμε αυτό.

Βήμα 1: Τι είναι αυτό το χρονόμετρο Watchdog;

Πώς να ενεργοποιήσετε το χρονόμετρο Watchdog
Πώς να ενεργοποιήσετε το χρονόμετρο Watchdog

Το χρονόμετρο Arduino watchdog όπως υποδηλώνει το όνομα είναι ένα χρονόμετρο που λειτουργεί χωριστά από την κύρια CPU στον πίνακα. Αυτός ο χρονοδιακόπτης μπορεί να χρησιμοποιηθεί για περιοδικό έλεγχο της κατάστασης του πίνακα και σε περιπτώσεις όπου ο πίνακας έχει κολλήσει σε έναν βρόχο λογισμικού ή έχει κολλήσει λόγω αστοχίας υλικού, ο χρονοδιακόπτης φύλαξης μπορεί να επαναφέρει το Arduino και να το ξεκινήσει από την αρχή.

Από προεπιλογή, όταν δεν χρησιμοποιείται, αυτός ο χρονοδιακόπτης είναι απενεργοποιημένος σε όλα τα έργα και μόνο όταν τον ενεργοποιούμε, πρέπει να φροντίζουμε να του λέμε περιοδικά να μην επαναφέρει την πλακέτα μας εάν εξακολουθεί να λειτουργεί όπως αναμενόταν.

Για να μπορέσουμε να χρησιμοποιήσουμε το χρονόμετρο του φύλακα, πρέπει πρώτα να συμπεριλάβουμε το αρχείο avr/wdt.h στο σκίτσο του Arduino. Αυτή είναι η τυπική βιβλιοθήκη που περιέχει τις ενέργειες του φύλακα.

Βήμα 2: Πώς να ενεργοποιήσετε το χρονόμετρο Watchdog;

Πώς να ενεργοποιήσετε το χρονόμετρο Watchdog
Πώς να ενεργοποιήσετε το χρονόμετρο Watchdog
Πώς να ενεργοποιήσετε το χρονόμετρο Watchdog
Πώς να ενεργοποιήσετε το χρονόμετρο Watchdog

Για να ενεργοποιήσουμε το χρονόμετρο, χρησιμοποιούμε τη συνάρτηση "wdt_enable" όπου πρέπει να περάσουμε στο διάστημα κατωφλίου στο οποίο θα γίνει επαναφορά της πλακέτας. Ανάλογα με την περίπτωση χρήσης μας, μπορεί να είναι από 15 χιλιοστά του δευτερολέπτου έως και 8 δευτερόλεπτα σε προκαθορισμένες ρυθμίσεις που περιέχονται στη βιβλιοθήκη του φύλακα.

THRESHOLD - ΣΤΑΘΕΡΟ ΟΝΟΜΑ

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: Διατηρήστε το πρόγραμμα σε λειτουργία

Κρατήστε το πρόγραμμά σας σε λειτουργία
Κρατήστε το πρόγραμμά σας σε λειτουργία

Τώρα, με ενεργοποιημένο το χρονόμετρο, για να αποτρέψουμε την επαναφορά του Arduino μας, πρέπει να καλούμε περιοδικά τη λειτουργία "wdt_reset" για να επαναφέρετε το χρονόμετρο του φύλακα προτού λήξει το διάστημα κατωφλίου.

Κατά την επιλογή ενός διαστήματος επαναφοράς, είναι ζωτικής σημασίας να λάβουμε υπόψη οποιαδήποτε μακρά λειτουργία, όπως η ανάγνωση ή η αποστολή δεδομένων ή η σύνδεση με εξωτερικούς αισθητήρες. Το όριο επαναφοράς πρέπει να είναι τουλάχιστον μιάμιση φορά μεγαλύτερο από αυτές τις φορές για να αποφευχθεί τυχαία επαναφορά.

Βήμα 4: Παράδειγμα χρήσης

Παράδειγμα Χρήσης
Παράδειγμα Χρήσης
Παράδειγμα Χρήσης
Παράδειγμα Χρήσης
Παράδειγμα Χρήσης
Παράδειγμα Χρήσης

Στο παράδειγμα του προγράμματος που μπορείτε να κατεβάσετε εδώ, πρώτα ρυθμίσαμε το χρονόμετρο του φύλακα με διάστημα επαναφοράς 4 δευτερολέπτων. Στη συνέχεια, για να γνωρίζουμε ότι είμαστε στη λειτουργία ρύθμισης, αναβοσβήνουμε μια λυχνία LED 3 φορές γρήγορα και, στη συνέχεια, στον κύριο βρόχο επαναφέρουμε πρώτα το χρονόμετρο, ανάβουμε ένα LED με προοδευτικά μεγαλύτερα διαστήματα και στη συνέχεια το σβήνουμε. Ο επόμενος βρόχος επαναφέρει ξανά το χρονόμετρο έως ότου ο χρόνος φωτισμού είναι μεγαλύτερος από 4 δευτερόλεπτα.

Όταν συμβεί αυτό, το χρονόμετρο του φύλακα επαναφέρει τον πίνακα και η ρύθμιση εκτελείται ξανά.

Βήμα 5: Ζητήματα χρονομέτρου Watchdog

Ένα πιθανό ζήτημα με το χρονόμετρο του φύλακα, ανάλογα με το πρόγραμμα εκκίνησης του Arduino σας, είναι ότι εάν η τιμή του χρονομέτρου ρολογιού είναι πολύ χαμηλή και ο φορτωτής εκκίνησης δεν επαναφέρει το χρονόμετρο κατά τη μεταφόρτωση νέου κώδικα, μπορεί να καταλήξετε να καταστρέψετε τον πίνακα Arduino σας με τρόπο που θα είναι πάντα κολλημένο στη φάση εκκίνησης. Ο φορτωτής εκκίνησης θα προσπαθήσει να ξεκινήσει, αλλά ο χρονοδιακόπτης θα συνεχίσει να επαναφέρει την πλακέτα, χωρίς ποτέ να της επιτρέψει να ξεκινήσει σωστά. Για να αποφύγετε τέτοια προβλήματα, βεβαιωθείτε ότι χρησιμοποιείτε πάντα διαστήματα κατωφλίου 2 δευτερολέπτων ή και περισσότερο.

Βήμα 6: Απολαύστε

Απολαμβάνω
Απολαμβάνω

Εάν έχετε ένα παράδειγμα για το πού έχετε χρησιμοποιήσει το χρονόμετρο ρολογιού σε ένα πραγματικό έργο, ενημερώστε με στα σχόλια, βεβαιωθείτε ότι σας αρέσει το βίντεο και μην ξεχάσετε να εγγραφείτε.

Μπράβο και ευχαριστώ για την ανάγνωση/παρακολούθηση!

Συνιστάται: