Transcript lectures
ΣΥΣΤΗΜΑΤΑ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ
ΥΛΙΚΟ-ΛΟΓΙΣΜΙΚΟ
ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΕΙ ΣΕΡΡΩΝ Ζ΄ ΕΞΑΜΗΝΟ Διδάσκων: Ιωάννης Καλόμοιρος, Επίκουρος καθηγητής
Real-time systems: ABS, αερόσακκοι, έλεγχος τρένων
Συστήματα πλοήγησης και χειρισμού
Όραση μηχανής και συστήματα DAQ
ΠΕΡΙΕΧΟΜΕΝΟ ΤΟΥ ΜΑΘΗΜΑΤΟΣ
Παραδείγματα συστημάτων πραγματικού χρόνου Εισαγωγή στις έννοιες των συστημάτων πραγματικού χρόνου (περιοδικά και απεριοδικά συστήματα, αυστηρά κα χαλαρά συστήματα, περίοδος, προθεσμία, προβλεψιμότητα, χρονοπρογραμματισμός) Λειτουργικά συστήματα πραγματικού χρόνου (Βασικά χαρακτηριστικά, τεχνικές χρονοπρογραμματισμού) Συστήματα υλικού για εφαρμογές πραγματικού χρόνου (χρονιστές, ελεγκτές διακοπών, θύρες Ι/Ο, κανάλια επικοινωνίας) Ενσωματωμένα συστήματα πραγματικού (μικροελεγκτές/DSPs, FPGAs, ASICs) χρόνου Γλώσσες πραγματικού χρόνου (ADA, Real-Time Java)
ΤΥΠΟΙ ΣΥΣΤΗΜΑΤΩΝ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ:
Ψηφιακός Ελεγκτής
Χρονικοί περιορισμοί: περίοδος Τ της δειγματοληψίας
Ψηφιακός ελεγκτής (συνέχεια) Ένα σήμα ελέγχου u(t) (δεξιά) παράγει μια μεταβολή στη θέση y(t) (αριστερά). Η επιθυμητή απόκριση του συστήματος φαίνεται με τελείες και η απόκριση για μεγάλο Τ με συνεχή γραμμή.
ΤΥΠΟΙ ΣΥΣΤΗΜΑΤΩΝ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ:
Ψηφιακό σύστημα συλλογής δεδομένων
Χρονικοί περιορισμοί: περίοδος Τ της δειγματοληψίας και ανάγκες επεξεργασίας
ΤΥΠΟΙ ΣΥΣΤΗΜΑΤΩΝ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ:
Ιεραρχικός έλεγχος
Πολλά επίπεδα ελέγχου. Το καθένα έχει τις δικές του απαιτήσεις σε ρυθμούς δειγματοληψίας και επεξεργασίας
ΤΥΠΟΙ ΣΥΣΤΗΜΑΤΩΝ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ:
Επεξεργασία σήματος και πολυμεσικές εφαρμογές
Τυπικά, ένα σύστημα DSP πραγματικού χρόνου υπολογίζει σε κάθε περίοδο δειγματοληψίας μία ή περισσότερες εξόδους
x(k)
, χρησιμοποιώντας ένα σύνολο από
n
δείγματα εισόδου
y(i)
:
x ( k )
i n
1
a ( k , i ) y ( i )
Επεξεργασία σήματος και πολυμεσικές εφαρμογές
(συνέχεια)
Μερικές ακόμη χρήσιμες έννοιες
Περιοδικά συστήματα (εκτελούν έναν βρόγχο επεξεργασίας) Απεριοδικά συστήματα (αντιδρούν σε σποραδικά συμβάντα) Τρόποι υλοποίησης συστημάτων πραγματικού χρόνου: ενσωματωμένοι επεξεργαστές ή μικροελεγκτές, συστήματα DSP ή συστήματα υλικού όπως FPGAs και ASICs.
Κατανεμημένα συστήματα και δίκτυα
ΕΝΝΟΙΕΣ ΣΥΣΤΗΜΑΤΩΝ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ
Τα μέρη ενός συστήματος πραγματικού χρόνου: Υλικό μέρος (CPUs, χρονιστές, περιφερειακές μονάδες Ι/Ο, κανάλια επικοινωνίας, κλπ)
Τα μέρη ενός συστήματος πραγματικού χρόνου:
o Υλικό μέρος (CPUs, χρονιστές, περιφερειακές μονάδες Ι/Ο, ενεργοποιητές, κανάλια επικοινωνίας, κλπ) o Ένα λειτουργικό σύστημα πραγματικού χρόνου (RTOS ) ή απλά έναν πυρήνα πραγματικού χρόνου (Real-Time Kernel ), με προβλέψιμη συμπεριφορά και καλά καθορισμένη λειτουργικότητα.
o Ένα σύνολο από «
διεργασίες
» (tasks) πραγματικού χρόνου.
Τι είναι οι διεργασίες
Οι «διεργασίες» είναι ρουτίνες λογισμικού, γραμμένες σε κάποια γλώσσα πραγματικού χρόνου ή είναι μηχανισμοί που δημιουργεί το λειτουργικό σύστημα, για να διαχειρίζεται την εκτέλεση τμημάτων κώδικα σε ένα πρόγραμμα. Οι διεργασίες μοιράζονται τους πόρους του συστήματος, επικοινωνούν και συγχρονίζονται μεταξύ τους και με το περιβάλλον.
Χρονικοί περιορισμοί
Περιοδικά συστήματα
χρονικού περιορισμού.
: η περίοδος του βρόγχου επανάληψης αντιπροσωπεύει μια μορφή
Παράδειγμα
: Σύστημα ελέγχου φούρνων. Κάθε φούρνος πρέπει να ρυθμίζει τη θερμοκρασία του τέσσερις φορές το δευτερόλεπτο.
Χρονικοί περιορισμοί
Χρόνοι αποδέσμευσης
: 20+kx250 ms, k=0,1,2,...
Στο παραπάνω παράδειγμα οι χρόνοι αποδέσμευσης είναι 20, 270, 520, …ms
Προθεσμία
: συνήθως το πέρας της περιόδου: 270, 520, 770 ms … κλπ ή μικρότερη Π.χ. 170, 420, 670 ms…
Σχετική προθεσμία
: στη μία περίπτωση 250ms, στην άλλη 150ms.
Χρονικοί περιορισμοί
Χρόνος αποδέσμευσης, προθεσμία, περίοδος, χρόνος εκτέλεσης
Παράδειγμα:
Μηχανή εμφιάλωσης.
Οι φιάλες περνούν μπροστά από τη μηχανή με ρυθμό πέντε φιάλες το δευτερόλεπτο.
Από τη στιγμή που εμφανίζεται κάθε φιάλη υπάρχει ένα παράθυρο ευκαιρίας 150 ms, ώστε να βάλει το σύστημα το πώμα στη φιάλη.
Σχετική προθεσμία: 150ms περίοδος: 200ms
Αυστηρά και χαλαρά συστήματα πραγματικού χρόνου (Hard and soft real-time systems)
Φάσμα εφαρμογών πραγματικού χρόνου
Χρονικές παράμετροι για δυο διαφορετικές διεργασίες
Ερώτημα: πως μπορούν να οργανωθούν οι δύο διεργασίες, ώστε να τρέχουν «παράλληλα» Έστω δύο διεργασίες με Τ 1 =Τ 2 =4 ms c=2ms.
και χρόνο εκτέλεσης Θα μπορούσαν να εκτελούνται διαδοχικά.
Διαταραχή (jitter) σε διαδοχικές εκτελέσεις ενός βρόγχου επεξεργασίας
Υλοποίηση συστημάτων πραγματικού χρόνου: Πρώτη προσέγγιση: προγραμματισμός του συστήματος σε χαμηλό επίπεδο, χρησιμοποιώντας γλώσσα Assembly και προγραμματίζοντας το σύστημα με χρήση χρονιστών, διακοπών (interrupts), επαναλαμβανόμενων βρόγχων κλπ. Οι ρουτίνες σε assembly πρέπει να διαχειρίζονται τις θύρες I/O, τους μετατροπείς αναλογικού σήματος σε ψηφιακό και τα κανάλια επικοινωνίας, όπως οι UART, οι θύρες USB, οι δίαυλοι CAN (Controller Area Network) κ.λπ.
Μια άλλη προσέγγιση, πιο κατάλληλη για μεγάλα και πολύπλοκα συστήματα, είναι ο προγραμματισμός με χρήση παράλληλων (concurrent) γλωσσών πραγματικού χρόνου. Τέτοιες γλώσσες είναι η Ada 95, η Real-time Java, η RTL/2 και άλλες. Οι γλώσσες αυτές έχουν το χαρακτηριστικό ότι μπορούν να διαχειρίζονται παραπάνω από μία διεργασία (task), καθώς ένα πρόγραμμα μπορεί να αποτελείται από ένα σύνολο αυτόνομων σειριακών διεργασιών, που η λογική τους εκτέλεση γίνεται παράλληλα.
Μια τρίτη προσέγγιση είναι να χρησιμοποιήσουμε μια συμβατική σειριακή γλώσσα προγραμματισμού (π.χ.
PASCAL, C) και ένα λειτουργικό σύστημα που παρέχει υποστήριξη για διαδικασίες πραγματικού χρόνου. Τέτοια λειτουργικά συστήματα αναφέρονται ως λειτουργικά συστήματα πραγματικού χρόνου (RTOS) και παρέχουν ευκολίες για πολυδιεργασία (multitasking) και πολυνημάτωση (multithreading). Στην περίπτωση αυτή οι λειτουργίες του παραλληλισμού περνούν στο λειτουργικό σύστημα και όχι στην γλώσσα προγραμματισμού.
Λειτουργικά Συστήματα πραγματικού χρόνου (RTOS) Το λειτουργικό σύστημα είναι μέρος του λογισμικού και διαχειρίζεται τους πόρους υλικού του συστήματος
Οι έννοιες της πολυδιεργασίας και της πολυνημάτωσης
Χαρακτηριστικά RTOS Ο «εν δυνάμει» πολυνημάτωση παραλληλισμός είναι μια βασική που εισάγει ιδιότητα η των λειτουργικών συστημάτων πραγματικού χρόνου. Μια άλλη βασική ιδιότητα των λειτουργικών συστημάτων πραγματικού χρόνου είναι η
προβλεψιμότητα
(predictability) και η
καθοριστικότητα
(determinism)
Άλλα χαρακτηριστικά των RTOS Δυνατότητα διεργασιών χρονοπρογραμματισμού με βάση (preemptive scheduling based on priorities) των προτεραιότητες Γρήγορη μετάβαση ανάμεσα σε διαδικασίες (switch context) Μικρό μέγεθος Επικοινωνία και συγχρονισμό ανάμεσα σε διαδικασίες Ύπαρξη χρονιστών πραγματικού χρόνου
Τέλος, εξυπακούεται ότι ένα λειτουργικό σύστημα πραγματικού χρόνου υποστηρίζει όλες τις βασικές λειτουργίες ενός συμβατικού λειτουργικού συστήματος, όπως η διαχείριση διακοπών (interrupt handling), η διαχείριση διεργασιών (task manager), η διαχείριση της μνήμης (εκχώρηση, απελευθέρωση και προστασία της μνήμης), η διαχείριση εισόδου/εξόδου μέσω οδηγών συσκευών (device drivers) και η επικοινωνία ανάμεσα σε διεργασίες.
Η έννοια της διεργασίας Ένα λειτουργικό σύστημα πραγματικού χρόνου διαχειρίζεται τα διάφορα προγράμματα χωρίζοντάς τα σε νήματα διεργασιών, τις οποίες και ελέγχει κατάλληλα. Μια διεργασία είναι μια βασική μονάδα προγραμματιστικού έργου, μια οντότητα λογισμικού, που δημιουργείται από το λειτουργικό σύστημα προκειμένου να διαχειρίζεται την εκτέλεση ενός τμήματος κώδικα. Κάθε διεργασία είναι ανεξάρτητη από τις άλλες διεργασίες και μπορεί να συγχρονιστεί και να επικοινωνήσει μαζί τους.
Μοντέλο διεργασίας Αφού δημιουργηθεί μια διεργασία, έχει μια διάρκεια ζωής, κατά την οποία μπορεί να βρεθεί σε διάφορες «καταστάσεις», ανάλογα με το ποιες καταστάσεις διεργασιών υποστηρίζει το λειτουργικό σύστημα.
Μπορεί, λοιπόν, να δημιουργείται, να βρίσκεται σε ανενεργή κατάσταση (sleeping) ή σε κατάσταση ετοιμότητας (ready), να εκτελείται και να τερματίζεται.
Χρονικές παράμετροι διεργασίας
Τεχνικές πολυδιεργασίας
Συνεργαζόμενη πολυδιεργασία
Με την συνεργαζόμενη πολυδιεργασία (cooperative multitasking) μια διεργασία παραδίδει τον έλεγχο σε άλλη μόνον «εθελοντικά». Για να χάσει η διεργασία τον έλεγχο πρέπει να καλέσει η ίδια το λειτουργικό σύστημα (RTOS).
Με τον τρόπο αυτό οι διεργασίες μοιράζονται δίκαια τον επεξεργαστή και τους άλλους πόρους.
Ολοκληρωμένη εκτέλεση
Μια διεργασία παραδίδει τον έλεγχο μόνον όταν έχει ολοκληρώσει το έργο της (run to completion). Από πρακτική άποψη αυτή η τεχνική μπορεί να χρησιμοποιηθεί σε ένα RTOS μόνον όταν όλες οι διεργασίες είναι σχετικά σύντομες.
Διακοπή από τον προγραμματιστή διεργασιών (preemption)
Στην περίπτωση αυτή μια διεργασία παραδίδει τον έλεγχο όποτε υπαγορεύει ο χρονοπρογραμματιστής (scheduler). Η τεχνική αναφέρεται ως preemption.
Γενικά, οι schedulers που στηρίζονται σ’ αυτή την τεχνική μπορούν να ανταποκριθούν σε συγκεκριμένες χρονικές απαιτήσεις καλύτερα από άλλους.
Πυρήνας RTOS
Το κέντρο ενός λειτουργικού συστήματος ονομάζεται
πυρήνας
(kernel).
Στα λειτουργικά συστήματα πραγματικού χρόνου ο πυρήνας αποτελείται από τον χρονοπρογραμματιστή διεργασιών (scheduler), διαχειριστή διακοπών (interrupt handler), και τον τον διαχειριστή πόρων (resource manager), που διαχειρίζεται τη μνήμη και τον διαμοιρασμό της στις διάφορες διεργασίες.
Διακοπή διεργασιών (preemptivity)
Τεχνικές χρονοπρογραμματισμού
Οδήγηση από χρονιστή (clock-driven) Κυκλική εκτέλεση (round-robin) Οδήγηση από προτεραιότητες (priorities)
Οδήγηση από προτεραιότητες (priorities)
σταθερή προτεραιότητα
(fixed priority ): η τιμής της προτεραιότητας κάθε διεργασίας υπολογίζεται μια φορά, προσδίδεται στην διεργασία και παραμένει αναλλοίωτη σε όλη τη διάρκεια ζωής της διεργασίας. Στην άλλη περίπτωση, η προτεραιότητα υπολογίζεται κατά τη διάρκεια του χρόνου εκτέλεσης και συνδέεται με την προθεσμία που δίνουμε στην κάθε διεργασία. Η δεύτερη αυτή περίπτωση ονομάζεται επίσης «
οδηγούμενη από προθεσμία
» (deadline driven).
Τεχνική Μονοτονικού ρυθμού
(Rate Monotonic – RM).
Η τεχνική αυτή αντιστοιχεί μια σταθερή προτεραιότητα σε κάθε διεργασία, σύμφωνα με την εξής αρχή: όσο πιο μικρή είναι η περίοδος της διεργασίας, τόσο μεγαλύτερη είναι η προτεραιότητα. Έχει αποδειχτεί ότι η τεχνική αυτή παρουσιάζει μια βέλτιστη συμπεριφορά ανάμεσα σε άλλες παρόμοιες τεχνικές που λειτουργούν με βάση σταθερές προτεραιότητες.
Προήγηση συντομότερης προθεσμίας
(Earliest Deadline First – EDF).
Όσο συντομότερη είναι η προθεσμία μιας διεργασίας, τόσο υψηλότερη είναι η προτεραιότητά της.
Προήγηση ελάχιστου χρόνου χαλάρωσης
(Least Slack-time First – LSTF).
O χρόνος χαλάρωσης (slack-time) ορίζεται ως η διαφορά του διαστήματος από την τρέχουσα χρονική στιγμή μέχρι το πέρας της προθεσμίας μιας διεργασίας και του χρόνου εκτέλεσης της διεργασίας: (απόλυτη προθεσμία τρέχουσα χρονική στιγμή) - χρόνος εκτέλεσης. Σύμφωνα με την τεχνική αυτή η διεργασία που χαρακτηρίζεται την τρέχουσα στιγμή από τον ελάχιστο χρόνο χαλάρωσης έχει και την μεγαλύτερη προτεραιότητα.
Τεχνικές χρονοπρογραμματισμού
Διαχείριση διακοπών
Πηγές διακοπών προς έναν πυρήνα RTOS
Μελέτη περίπτωσης
Σχήμα ελέγχου για την εφαρμογή του ελεγκτή κινητήρα
•
Έλεγχος της ταχύτητας του μοτέρ (1KHz ρυθμός δειγματοληψίας) Λήψη εντολών ελέγχου από το πληκτρολόγιο, και εκτέλεση του βρόγχου ελέγχου Οδήγηση της οθόνης και ανανέωση δύο φορές το δευτερόλεπτο.
Αποστολή δεδομένων μέσω της σειριακής θύρας όταν δεν υπάρχει άλλη επεξεργασία
Απόδοση προτεραιότητας στις διεργασίες του ελέγχου κινητήρα - μηχανισμοί ενεργοποίησης διεργασιών
Η διεργασία ελέγχου του μοτέρ εκτέλεσή της με σήμα διακοπής.
ενεργοποιεί την Ο έλεγχος του πληκτρολογίου επιτυγχάνεται επίσης με σήμα διακοπής, αλλά μικρότερης προτεραιότητας. Δηλαδή, κάθε φορά που ο χειριστής χρησιμοποιεί το πληκτρολόγιο, ενεργοποιείται μια ρουτίνα διακοπής, που ελέγχει για χαρακτήρες πέντε φορές το δευτερόλεπτο.
Επειδή ενεργοποιείται από τον χειριστή, η υπορουτίνα αυτή είναι απεριοδική.
Η διεργασία ανανέωσης της οθόνης είναι περιοδική και ενεργοποιείται κάθε μισό δευτερόλεπτο, με τη βοήθεια μια υπορουτίνας διακοπής που ενεργοποιείται με εντολή λογισμικού (software interrupt).
στο Τέλος, η σειριακή αποστολή υπόβαθρο, ως ατέρμων δεδομένων τρέχει διαρκώς βρόγχος, με χαμηλή προτεραιότητα και όταν δεν εκτελείται καμιά άλλη διεργασία.
ΜΕΡΟΣ Β΄
Συστήματα Υλικού για εφαρμογές πραγματικού χρόνου
Χρονιστές, ελεγκτές διακοπών, θύρες Ι/Ο, UART
Διαχείριση θυρών Ι/Ο – Το κύκλωμα PIA 8255Α
T ο 8255 συνδέεται με τον δίαυλο δεδομένων του επεξεργαστή και τον διαμοιράζει σε τρεις θύρες εισόδου/εξόδου: την θύρα Α, την θύρα Β και την θύρα C. Κάθε θύρα παρέχει οκτώ ακροδέκτες για είσοδο/έξοδο. Πρόκειται για κύκλωμα που «προγραμματίζεται», αφού δέχεται σήματα και ψηφιολέξεις ελέγχου από τον επεξεργαστή προκειμένου να ρυθμίσει κατάλληλα τη λειτουργία του. Επίσης, έχει τη δυνατότητα να ανταλλάξει σήματα «χειραψίας» με τις περιφερειακές συσκευές.
Διασύνδεση με το μικροϋπολογιστικό σύστημα
Λειτουργικό διάγραμμα
Ενσωμάτωση του 8255 στον μικροϋπολογιστή BGC-8088
Λέξη ελέγχου του κυκλώματος 8255
MOV DX, FF13 MOV AL, 80 OUT DX, AL
Χρήση θύρας Α για έξοδο
MOV DX, FF13
MOV AL, 80
OUT DX, AL
MOV DX, FF10
MOV AL, AA
OUT DX, AL
Χρήση θύρας Α για είσοδο
MOV DX, FF13
MOV AL, 9 Β
OUT DX, AL
MOV DX, FF10
IN AL, DX
Είσοδος/έξοδος
MOV DX, FF13 MOV AL, 90 αρχή OUT DX, AL MOV DX, FF10 ΙΝ AL, DX MOV DX, FF11 OUT DX, AL JMP αρχή ;Προσπελάζουμε τον καταχωρητή λέξης Ελέγχου του 8255 ;Θέτουμε το 8255 σε mode 0, με τις θύρες A,C σε λειτουργία εισόδου και τη Β έξοδο ;Εγγραφή της λέξης Ελέγχου ;Προσπελάζουμε τη θύρα Α του 8255 ;Εισάγουμε τα δεδομένα ;Προσπελάζουμε τη θύρα Β του 8255 ;Εξάγουμε τα δεδομένα
Ο χρονιστής 8254
To κύκλωμα 8254 διαθέτει τρεις ανεξάρτητους απαριθμητές των 16-bits, που ο καθένας μπορεί να δεχτεί συχνότητα ρολογιού μέχρι 10MHz. Ο καθένας από τους τρεις απαριθμητές μπορεί να λειτουργήσει σε έναν από έξι συνολικά τρόπους λειτουργίας (modes). Ο κάθε τρόπος λειτουργίας διαμορφώνει διαφορετικά τον παλμό χρονισμού στην έξοδο. Ο τρόπος λειτουργίας του κάθε απαριθμητή προγραμματίζεται μέσω του λογισμικού, από τον επεξεργαστή, με τη βοήθεια εξωτερικών σημάτων ελέγχου.
Δομικό διάγραμμα του χρονιστή 8254
Διασύνδεση του χρονιστή με το σύστημα
Λέξη ελέγχου
Mode 0
O τρόπος αυτός περιορίζεται σε απλή απαρίθμηση του χρονικού διαστήματος που αντιστοιχεί στην αρχική τιμή του απαριθμητή. Μόλις εγγραφεί η λέξη ελέγχου η έξοδος OUT μηδενίζεται και παραμένει μηδέν μέχρι ο απαριθμητής να φτάσει στο μηδέν. Τότε, η έξοδος OUT τίθεται σε λογικό 1 και παραμένει στην τιμή αυτή μέχρι να φορτωθεί νέα τιμή απαρίθμησης στον απαριθμητή.
Με τον τρόπο αυτό είναι δυνατό να σκανδαλίσουμε σήμα διακοπής προς τον PIC 8259 με το πέρας της απαρίθμησης.
Mode 2
Σ’ ως Παράγει, δηλαδή, έναν παλμό με σταθερό ρυθμό, που ορίζεται από την αρχική εγγραφή στον απαριθμητή.
Συγκεκριμένα, απαριθμητής η έξοδος OUT θα γίνει αρχικά λογικό στον αυτή 0 τη λογικό για απαριθμητή 1 λειτουργία κάθε απαριθμητής του 8254 συμπεριφέρεται
γεννήτρια ρυθμού
όταν (rate generator).
έναν φορτώνεται και και ο μόλις παλμό ο η απαρίθμηση φτάσει στο μηδέν, θα γίνει του εξωτερικού ρολογιού. Στη συνέχεια η έξοδος OUT γίνεται πάλι μονάδα, η αρχική τιμή φορτώνεται αυτόματα ξανά κύκλος επαναλαμβάνεται.
Mode 3
M ε τον τρόπο αυτόν ο απαριθμητής λειτουργεί ως γεννήτρια τετραγωνικού παλμού. Τυπικά χρησιμοποιείται για να παράγει τον ρυθμό μετάδοσης στη σειριακή generator).
επικοινωνία (baud rate Ο τρόπος είναι παρόμοιος με αυτόν της λειτουργίας 2, με τη διαφορά ότι η περιοδική κυματομορφή που παράγεται εδώ είναι τετραγωνική, με ίση διάρκεια ΟΝ και OFF. Η κάθε ημιπερίοδος έχει διάρκεια N/2 παλμούς του ρολογιού, όπου Ν είναι η αρχική τιμή που εγγράφουμε στον απαριθμητή.
Προγραμματισμός του Counter0 σε mode3
MOV DX, FF03 MOV AL, 36 OUT DX, AL MOV DX, FF00 MOV AX, 4800 OUT DX, AL MOV AL, AH OUT DX, AL ΙΝΤ3 ; Θέτουμε τον counter 0 σε mode 3 για ; παραγωγή τετραγωνικής παλμοσειράς ;Εγγράφουμε στον Counter 0 του 8254 ;την αρχική τιμή απαρίθμησης
Προγραμματιζόμενος ελεγκτής διακοπών
Δομικό διάγραμμα
Καταχωρητές
1. O Καταχωρητής Αιτήσεων Διακοπής (
Interrupt Request Register
–IRR), όπου καταχωρούνται οι εξωτερικές αιτήσεις διακοπής. Αν κάποιο περιφερειακό στείλει σήμα διακοπής, τότε το αντίστοιχο bit του IRR γίνεται λογικό 1.
( 2.
Ο καταχωρητής των αιτήσεων που βρίσκονται υπό εξυπηρέτηση
In-Service Request
– ISR). Σ’ αυτόν καταχωρούνται όλες οι διακοπές που έχουν αρχίσει να εξυπηρετούνται. Αν αρχίσει η εξυπηρέτηση μιας διακοπής και ληφθεί νέο σήμα με μεγαλύτερη προτεραιότητα, παύει προσωρινά η εξυπηρέτηση της πρώτης και αρχίζει η εξυπηρέτηση της δεύτερης. Έτσι, στον ISR έχουν καταχωρηθεί δύο αιτήσεις.
Καταχωρητές
3. Ο καταχωρητής απόκρυψης διακοπών (
Interrupt Mask Register
- IMR ). Στον καταχωρητή αυτόν καταχωρούμε λογικό 1 σε εκείνα τα bits που αντιστοιχούν σε περιφερειακά των οποίων τις διακοπές θεωρούμε ανενεργές. Έτσι αν b0=1, τότε το IR0 δεν είναι ενεργοποιημένο.
Άλλη σημαντική βαθμίδα είναι το κύκλωμα επίλυσης προτεραιότητας διακοπών (
Priority Resolver
– PR). Το κύκλωμα αυτό αποφασίζει με βάση δικές μας επιλογές ποια διακοπή από αυτές που καταχωρήθηκαν στον IRR έχει τη υψηλότερη προτεραιότητα και θα καταχωρηθεί στον ISR.
Δείκτες διακοπής για τις οκτώ πηγές διακοπών στον BGC-8088
Κυρίως πρόγραμμα για προγραμματισμό σημάτων διακοπής στο περιβάλλον BGC-8088
CLI CLD MOV AX, 0000 MOV ES, AX MOV DI, 025C MOV AX, 003E STOSW MOV AX, CS STOSW MOV DX, FF21 MOV AL, 7F OUT DX, AL STI 0100:0018 JMP 0018 INT3 ;Μηδένισε τη σημαία διακοπής ;Μηδένισε τη σημαία κατεύθυνσης ;Δείκτης διεύθυνσης διακοπής ;Διάνυσμα διακοπής (Segment) ;Αποθηκεύει το περιεχόμενο του AX στη ; διεύθυνση ES:DI ;Offset ;Ορισμός της μάσκας διακοπών ;για ενεργοποίηση του IR7 ;Αναμονή διακοπής
Υπορουτίνα Εξυπηρέτησης της διακοπής
0100:003E 0100:0043 0100:004C 0100:0054 PUSH DX PUSH BX PUSH AX MOV BL, FF MOV DX, FF70 MOV AL, 0 OUT DX, AL MOV CX, 0100 LOOP 004C MOV AL, 8 OUT DX, AL MOV CX, 0100 LOOP 0054 DEC BL CMP BL,0 JA 0043 MOV DX, FF20 MOV AL,20 OUT DX, AL POP ΑX POP ΒX POP DX IRET ;Αποθήκευσε στη στοίβα τους DX, BX, AX ;Επανέλαβε 255 φορές ;Εγγραφή στον STATUS Register ;της τιμής 0 ;Καθυστέρηση ;Εγγραφή 1 στο b3 του STATUS Reg (buzzer) ;Καθυστέρηση ;Μείωσε τον BL κατά 1 ;Σύγκρινε με το μηδέν ;A ν BL>0 πήγαινε στην εντολή Loop1 ; Εγγραφή EOI (end of interrupt) στη λέξη OCW2 ;Ανακτά από τη στοίβα τους AX, BX, DX
Μέρος Γ΄
Ενσωματωμένα Συστήματα για εφαρμογές πραγματικού χρόνου: Μικροελεγκτές, DSP επεξεργαστές
Διαφορές ανάμεσα σε μικροεπεξεργαστή και μικροελεγκτή
Μικροελεγκτές και DSP επεξεργαστές
Ο DSP είναι αφιερωμένος στην γρήγορη επεξεργασία σημάτων, συνήθως ήχου και εικόνας. Ο μικροελεγκτής εκτελεί τον βρόγχο ελέγχου ενός ψηφιακού ελεγκτή, συλλέγοντας δεδομένα από τους αισθητήρες και ενεργοποιώντας εξωτερικά κυκλώματα, όπως κινητήρες, ηλεκτρονόμους, κυκλώματα ισχύος κλπ.
Αρχιτεκτονική Harvard και Von Neumann
Παρουσίαση των δυο τύπων αρχιτεκτoνικής α) Ενιαία μνήμη προγράμματος και δεδομένων (αρχιτεκτονική Von-Neumann) β) Ξεχωριστή μνήμη προγράμματος και δεδομένων (αρχιτεκτονική Harvard).
Βασική δομή του PIC16F877
Βασική δομή επεξεργαστή και μονάδες περιφερειακών συσκευών
Αρχιτεκτονική του Μικροελεγκτή PIC16F877
Επεξεργαστής και περιφερειακά στον PIC16F877
Οργάνωση της μνήμης RAM
ΚΑΤΑΧΩΡΗΤΕΣ
-
STATUS
REGISTER ΚΑΤΑΧΩΡΗΤΕΣ-
OPTION
REGISTER
b7
RBPU
b6
INTEDG
b5 b4
T0CS T0SE
b3
PSA
b2 b1 b0
PS2 PS 1 PS0
ΚΑΤΑΧΩΡΗΤΕΣ ΕΛΕΓΧΟΥ
ΘΥΡΩΝ
PORTA, PORTB, PORTC, PORTD TRISA, TRISB, TRISC, TRISD BSF STATUS, RP0 MOVLW b“1111000” MOVWF TRISB BCF STATUS, RP0 MOVLW b’10101010’ MOVWF PORTB
ΧΡΟΝΙΣΜΟΣ
Διάρκεια κύκλου εντολής = 4 / (Συχνότητα εξωτερικού κρυστάλλου ) Τυπική συχνότητα λειτουργίας των μικροελεγκτών PIC είναι 4 ΜΗz, οπότε η διάρκεια κάθε κύκλου εντολής είναι μsec.
1 μsec.
Για κρύσταλλο 8MHz η διάρκεια του κύκλου εντολής είναι 0,5
Χρόνος εκτέλεσης ομάδας εντολών = Αριθμός εντολών * Χρόνος εκτέλεσης εντολής
TIMER0 , τρόποι λειτουργίας
α)
Ως χρονιστής (timer)
: Στην περίπτωση αυτή η πηγή χρονισμού είναι ο εσωτερικός κύκλος των εντολών. Το περιεχόμενο του Timer0 σε λειτουργία χρονιστή αυξάνει κατά ένα σε κάθε κύκλο εντολής. Ο κύκλος της εντολής διαρκεί όσο η περίοδος του εξωτερικού κρυστάλλου επί τέσσερα (4*f osc ). H αντίστοιχη συχνότητα είναι ίση με την συχνότητα του κρυστάλλου διά 4.
Χρησιμοποιώντας τον TMR0 σε λειτουργία εσωτερικού χρονισμού, έχουμε στη διάθεσή μας ένα αρκετά αξιόπιστο σήμα χρονισμού που μπορεί να χρησιμοποιηθεί για τον ακριβή προσδιορισμό χρονικών διαστημάτων.
β) To
Ως απαριθμητής (counter)
: Στην περίπτωση αυτή χρησιμοποιείται ένας εξωτερικός παλμός χρονισμού. Το εξωτερικό σήμα χρονισμού συνδέεται με τον ακροδέκτη TOCKI (RΑ4). Η χρήση εξωτερικής πηγής χρονισμού επιτρέπει την απαρίθμηση εξωτερικών συμβάντων, με τη μορφή παλμών. περιεχόμενο του Timer0 αυξάνει κατά ένα σε κάθε παλμό της εξωτερικής πηγής χρονισμού.
Και στις δύο περιπτώσεις, ο
TMR0
μετρά στο δεκαεξαδικό σύστημα από την αρχική τιμή που καταχωρήσαμε έως 0xFF.
Διαιρέτης συχνότητας
(PRESCALER) Ο διαιρέτης συχνότητας ρυθμίζεται με τα τρία πρώτα bits του καταχωρητή OPTION
b7 RBPU b6 INTEDG b5 T0CS OPTION_REG b4 b3 b2 T0CE PSA b1 PS2 PS1 b0 PS0
Bits 7-6
: Δεν έχουν σημασία για την λειτουργία του χρονιστή (τα θέτουμε 11).
T0CS
: Επιλογή πηγής ρολογιού 1 = Πηγή συνδεδεμένη στον ακροδέκτη T0CKI (Λειτουργία μετρητή παλμών) 0 = Εσωτερική πηγή ρολογιού (Λειτουργία χρονιστή).
T0CE:
Επιλογή θετικού ή αρνητικού μετώπου παλμού (αναφέρεται σε εξωτερική πηγή χρονισμού) 1 = Αύξηση με κατερχόμενο μέτωπο του παλμού στον ακροδέκτη T0CLK 0 = Αύξηση με ανερχόμενο μέτωπο του παλμού στον ακροδέκτη T0CLK
PSA
συνδέσουμε τον διαιρέτη συχνότητας. "1", όταν θέλουμε να αποσυνδέσουμε τον διαιρέτη συχνότητας.
: "0", όταν θέλουμε να PS2-PS0: Επιλογή λόγου διαίρεσης
ΠΑΡΑΔΕΙΓΜΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΤΟΥ ΤIMER0
#include "P16F877.inc" Org 0 bsf STATUS, RP0 movlw b'11010001' movwf OPTION_REG bcf STATUS, RP0 movlw 0F0h movwf TMR0 bcf INTCON, T0IF loop goto loop END ;Το πρόγραμμα ξεκινά από τη θέση ; μνήμης προγράμματος 0 ;Μεταβαίνουμε στην σελίδα 1 μνήμης ;Διαίρεση συχνότητας διά 4 ;Εγγράφουμε τον OPTION REG ;Μεταβαίνουμε στην σελίδα 0 μνήμης ; Θέτουμε στον TMR0 αρχική τιμή 240 ;Μηδενίζουμε την σημαία T0IF ; Βρόχος αναμονής