1. Ρύθμιση χρονοδιακόπτη υλικού:
* Αρχικοποίηση: Ο χρονοδιακόπτης αρχικοποιείται με μια συγκεκριμένη τιμή (count) που αντιπροσωπεύει το επιθυμητό χρονικό διάστημα. Αυτό μπορεί να περιλαμβάνει τη ρύθμιση των καταχωρητών στο υλικό του χρονοδιακόπτη. Ο χρονοδιακόπτης χρειάζεται επίσης τη λειτουργία του (π.χ., μία βολή για μία μόνο σκανδάλη, περιοδική για επαναλαμβανόμενες διακοπές).
* Πηγή ρολογιού: Ο χρονομετρητής συνδέεται με μια πηγή ρολογιού (π.χ. ρολόι συστήματος). Αυτό το ρολόι αυξάνει τον μετρητή του χρονοδιακόπτη.
2. Χρονοδιακόπτη παραγωγή διακοπής:
* Αντίστοιχος που φτάνει στο μηδέν: Καθώς το ρολόι αυξάνει τον μετρητή του χρονοδιακόπτη, τελικά φτάνει στο μηδέν (ή έναν καθορισμένο αριθμό τερματικών). Αυτό το συμβάν ενεργοποιεί ένα σήμα διακοπής υλικού.
* Αίτημα διακοπής (IRQ): Ο χρονομετρητής υλικού στέλνει ένα αίτημα διακοπής (IRQ) στον επεξεργαστή. Αυτό το αίτημα σηματοδοτεί ότι ένα συμβάν χρειάζεται άμεση προσοχή.
3. Διακοπή χειρισμού από τη CPU:
* Διακοπή αναγνωρισμένος: Η CPU αναγνωρίζει τη διακοπή, αναστέλλοντας την τρέχουσα εκτέλεση της. Η προτεραιότητα της διακοπής του χρονοδιακόπτη καθορίζει εάν χειρίζεται αμέσως ή μετά από διακοπές υψηλότερης προτεραιότητας.
* Εξοικονόμηση πλαισίου: Η CPU αποθηκεύει την κατάσταση του τρέχοντος προγράμματος (μητρώα, μετρητής προγράμματος κ.λπ.) σε μια στοίβα. Αυτό είναι ζωτικής σημασίας για την επανάληψη της εκτέλεσης αργότερα.
* Πίνακας διάνυσμα διακοπής: Η CPU συμβουλεύει τον πίνακα διανυσμάτων διακοπής για να εντοπίσει τη διεύθυνση μνήμης της ρουτίνας υπηρεσίας διακοπής (ISR) που σχετίζεται με τη διακοπή του χρονοδιακόπτη.
* Μεταβείτε στο ISR: Η CPU πηδάει στη θέση μνήμης του ISR του Timer Cutrupt.
4. Ρουτίνα διακοπής (ISR) εκτέλεση:
* Κωδικός ISR: Αυτό είναι το συγκεκριμένο κομμάτι κώδικα που έχει σχεδιαστεί για να χειρίζεται τη διακοπή του χρονοδιακόπτη. Τα καθήκοντά του μπορεί να περιλαμβάνουν:
* Ενημέρωση ενός μετρητή: Παρακολούθηση του χρόνου που παρέμενε.
* Ενεργοποίηση μιας εξόδου: Έλεγχος LED ή άλλου περιφερειακού.
* Εργασίες προγραμματισμού: Εκτέλεση άλλων λειτουργιών του προγράμματος σε συγκεκριμένα διαστήματα.
* Δεδομένα αισθητήρα ανάγνωσης: Δειγματοληψία δεδομένων από αισθητήρες σε τακτά χρονικά διαστήματα.
* Επικοινωνία: Αποστολή/λήψη δεδομένων μέσω δικτύου ή σειριακής θύρας.
* Κρατώντας το σύντομο: Τα ISR πρέπει να διατηρούνται όσο το δυνατόν συντομότερα για να ελαχιστοποιηθεί ο χρόνος που διακόπτεται το κύριο πρόγραμμα. Οι μακροχρόνιες εργασίες θα πρέπει να εκφορτωθούν στο κύριο πρόγραμμα μετά το ISR θέτει μια σημαία ή ενημερώνει μια κοινή δομή δεδομένων.
5. Επιστροφή από τη διακοπή:
* Πλαίσιο αποκατάστασης: Το ISR αποκαθιστά την κατάσταση της CPU που σώθηκε νωρίτερα (μητρώα, μετρητής προγράμματος κλπ.).
* Επιστροφή από τη διακοπή (IRET ή RTI): Μια ειδική εντολή (IRET ή RTI, ανάλογα με την αρχιτεκτονική) εκτελείται για να επιστρέψει τον έλεγχο στο κύριο πρόγραμμα. Η CPU συνεχίζει την εκτέλεση από το σημείο όπου έμεινε πριν από τη διακοπή.
Παράδειγμα (εννοιολογικός κώδικας C):
`` `c
// χρονοδιακόπτης ISR
void timer_isr () {
Στατικός μη υπογεγραμμένος μετρητής int =0; // Αντιμετωπίστε το χρόνο παρακολούθησης
μετρητής ++;
αν (Counter ==1000) {// Ελέγξτε αν έχουν συμβεί διακοπές 1000 χρονοδιακόπτη
Counter =0;
// Εκτελέστε κάποια ενέργεια, π.χ., εναλλαγή LED
TOGGLE_LED ();
}
}
`` `
Σημαντικές εκτιμήσεις:
* Διακοπή καθυστέρησης: Ο χρόνος που απαιτείται μεταξύ του αιτήματος διακοπής και της έναρξης του ISR είναι η καθυστέρηση διακοπής. Είναι σημαντικό να διατηρείτε αυτό το χαμηλό για εφαρμογές σε πραγματικό χρόνο.
* Διακοπή προτεραιότητα: Οι πολλαπλές διακοπές μπορούν να εμφανιστούν ταυτόχρονα. Η CPU χειρίζεται αυτά με βάση τις προτεραιότητές τους.
* Επαναπροσδιορισμός: Οι ISR πρέπει να είναι επανεισερχόμενες. Σημαίνει ότι μπορούν να διακοπεί ξανά πριν ολοκληρώσουν την εκτέλεση τους χωρίς να προκαλέσουν διαφθορά δεδομένων.
* Κοινόχρηστοι πόροι: Απαιτούνται προσεκτικοί μηχανισμοί συγχρονισμού (π.χ. σηματοφόρα, mutexes) εάν το ISR αποκτήσει πρόσβαση σε κοινούς πόρους που χρησιμοποιούνται επίσης από το κύριο πρόγραμμα.
Αυτή η διαδικασία ισχύει για ένα ευρύ φάσμα μικροελεγκτών και ενσωματωμένων συστημάτων. Οι συγκεκριμένες λεπτομέρειες (ονόματα μητρώου, οδηγίες) θα διαφέρουν ανάλογα με την αρχιτεκτονική υλικού.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα