Μικροελεγκτής AVR 8-bit Atmel με προγραμματιζόμενο φλας 2/4/8K Byte στο σύστημα
Χαρακτηριστικά
- Μικροελεγκτής AVR® 8-bit υψηλής απόδοσης, χαμηλής ισχύος
- Προηγμένη Αρχιτεκτονική RISC
- 120 Ισχυρές Οδηγίες – Πιο απλή εκτέλεση κύκλου ρολογιού
- 32 x 8 Μητρώα εργασίας γενικής χρήσης
- Πλήρως στατική λειτουργία
- Μη πτητικό πρόγραμμα και μνήμες δεδομένων
- Flash 2/4/8K Byte προγραμματιζόμενης μνήμης προγράμματος εντός συστήματος
- Αντοχή: 10,000 Κύκλοι εγγραφής/διαγραφής
- 128/256/512 Bytes Προγραμματιζόμενος εντός συστήματος EEPROM
- Αντοχή: 100,000 Κύκλοι εγγραφής/διαγραφής
- 128/256/512 Bytes Εσωτερική SRAM
- Κλείδωμα προγραμματισμού για αυτοπρογραμματιζόμενο πρόγραμμα Flash και Ασφάλεια δεδομένων EEPROM
Περιφερειακά Χαρακτηριστικά
- Χρονοδιακόπτης/Μετρητής 8 bit με Prescaler και δύο κανάλια PWM
- Χρονοδιακόπτης/Μετρητής υψηλής ταχύτητας 8 bit με ξεχωριστό προκλιμακωτή
- 2 Έξοδοι PWM υψηλής συχνότητας με ξεχωριστούς καταχωρητές σύγκρισης εξόδων
- Προγραμματιζόμενη γεννήτρια νεκρού χρόνου
- USI – Universal Serial Interface with Start Condition Detector
- 10-bit ADC
4 Κανάλια μεμονωμένου τερματισμού
2 διαφορικά ζεύγη καναλιών ADC με προγραμματιζόμενο κέρδος (1x, 20x)
Μέτρηση Θερμοκρασίας
Προγραμματιζόμενος χρονοδιακόπτης Watchdog με ξεχωριστό ταλαντωτή στο τσιπ
Αναλογικός συγκριτής on-chip
Ειδικά χαρακτηριστικά μικροελεγκτή
Σύστημα εντοπισμού σφαλμάτων debugWIRE On-chip
Προγραμματιζόμενος εντός συστήματος μέσω θύρας SPI
Εξωτερικές και εσωτερικές πηγές διακοπής
Λειτουργίες αδράνειας χαμηλής ισχύος, μείωσης θορύβου ADC και λειτουργίας απενεργοποίησης
Ενισχυμένο κύκλωμα επαναφοράς ενεργοποίησης
Προγραμματιζόμενο κύκλωμα ανίχνευσης καφέ εξόδου
Εσωτερικός βαθμονομημένος ταλαντωτής
I/O και Πακέτα
Έξι προγραμματιζόμενες γραμμές εισόδου/εξόδου
PDIP 8 ακίδων, SOIC 8 ακίδων, QFN/MLF 20 ακίδων και TSSOP 8 ακίδων (μόνο ATtiny45/V)
Λειτουργικός τόμοςtage
– 1.8 – 5.5V για ATtiny25V/45V/85V
– 2.7 – 5.5V για ATtiny25/45/85
Βαθμός ταχύτητας
– ATtiny25V/45V/85V: 0 – 4 MHz @ 1.8 – 5.5V, 0 – 10 MHz @ 2.7 – 5.5V
– ATtiny25/45/85: 0 – 10 MHz @ 2.7 – 5.5V, 0 – 20 MHz @ 4.5 – 5.5V
Βιομηχανικό εύρος θερμοκρασίας
Χαμηλή κατανάλωση ενέργειας
Ενεργή λειτουργία:
1 MHz, 1.8V: 300 μΑ
Λειτουργία απενεργοποίησης:
Διαμορφώσεις καρφιτσών
Pinout ATtiny25/45/85
Καρφιτσώστε Περιγραφές
VCC: Supply voltage.
ΓΝΔ: Έδαφος.
Θύρα B (PB5:PB0): Η θύρα B είναι μια θύρα εισόδου/εξόδου διπλής κατεύθυνσης 6 bit με εσωτερικές αντιστάσεις έλξης (επιλεγμένες για κάθε bit). Οι buffer εξόδου της θύρας B έχουν συμμετρικά χαρακτηριστικά κίνησης με δυνατότητα υψηλής καταβύθισης και πηγής. Ως είσοδοι, οι ακίδες της θύρας Β που έλκονται εξωτερικά χαμηλά θα παράγουν ρεύμα εάν ενεργοποιηθούν οι αντιστάσεις έλξης. Οι ακίδες της θύρας B δηλώνονται σε τρεις δηλώσεις όταν ενεργοποιείται μια συνθήκη επαναφοράς, ακόμα κι αν το ρολόι δεν λειτουργεί.
Η θύρα B εξυπηρετεί επίσης τις λειτουργίες διαφόρων ειδικών χαρακτηριστικών του ATtiny25/45/85 όπως αναφέρονται
Στο ATtiny25, οι προγραμματιζόμενες θύρες I/O PB3 και PB4 (ακίδες 2 και 3) ανταλλάσσονται σε λειτουργία συμβατότητας ATtiny15 για υποστήριξη της συμβατότητας προς τα πίσω με το ATtiny15.
RESET: Επαναφορά εισόδου. Ένα χαμηλό επίπεδο σε αυτήν την ακίδα για μεγαλύτερο από το ελάχιστο μήκος παλμού θα δημιουργήσει επαναφορά, ακόμα κι αν το ρολόι δεν λειτουργεί και με την προϋπόθεση ότι η ακίδα επαναφοράς δεν έχει απενεργοποιηθεί. Το ελάχιστο μήκος παλμού δίνεται σε Πίνακας 21-4 στη σελίδα 165. Οι μικρότεροι παλμοί δεν είναι εγγυημένο ότι θα δημιουργήσουν επαναφορά.
Η ακίδα επαναφοράς μπορεί επίσης να χρησιμοποιηθεί ως (αδύναμη) ακίδα εισόδου/εξόδου.
Υπερview
Ο ATtiny25/45/85 είναι ένας μικροελεγκτής CMOS 8-bit χαμηλής κατανάλωσης που βασίζεται στην βελτιωμένη αρχιτεκτονική RISC AVR. Εκτελώντας ισχυρές εντολές σε έναν μόνο κύκλο ρολογιού, το ATtiny25/45/85 επιτυγχάνει εντολές που πλησιάζουν το 1 MIPS ανά MHz, επιτρέποντας στον σχεδιαστή του συστήματος να βελτιστοποιήσει την κατανάλωση ενέργειας σε σχέση με την ταχύτητα επεξεργασίας.
Διάγραμμα μπλοκ
Ο πυρήνας AVR συνδυάζει ένα πλούσιο σύνολο εντολών με 32 καταχωρητές εργασίας γενικής χρήσης. Και οι 32 καταχωρητές συνδέονται απευθείας με την Αριθμητική Λογική Μονάδα (ALU), επιτρέποντας την πρόσβαση σε δύο ανεξάρτητους καταχωρητές σε μία μόνο εντολή που εκτελείται σε έναν κύκλο ρολογιού. Η αρχιτεκτονική που προκύπτει είναι πιο αποδοτική στον κώδικα, ενώ επιτυγχάνει εντολές έως και δέκα φορές ταχύτερες από τους συμβατικούς μικροελεγκτές CISC.
Το ATtiny25/45/85 παρέχει τις ακόλουθες δυνατότητες: 2/4/8K byte Προγραμματιζόμενου Flash εντός συστήματος, 128/256/512 byte EEPROM, 128/256/256 byte SRAM, 6 γραμμές I/O γενικής χρήσης, 32 γενικές μητρώα εργασίας σκοπού, ένας χρονοδιακόπτης/μετρητής 8 bit με λειτουργίες σύγκρισης, ένας χρονοδιακόπτης/μετρητής υψηλής ταχύτητας 8 bit, γενική σειριακή διεπαφή, εσωτερικές και εξωτερικές διακοπές, ADC 4 καναλιών, 10 bit, προγραμματιζόμενος χρονοδιακόπτης Watchdog με εσωτερική Ταλαντωτής και τρεις επιλογές εξοικονόμησης ενέργειας από λογισμικό. Η κατάσταση αδράνειας σταματά τη CPU ενώ επιτρέπει στο σύστημα SRAM, Timer/Counter, ADC, Analog Comparator και Interrupt να συνεχίσει να λειτουργεί. Η λειτουργία απενεργοποίησης αποθηκεύει τα περιεχόμενα του μητρώου, απενεργοποιώντας όλες τις λειτουργίες του τσιπ μέχρι την επόμενη Διακοπή ή Επαναφορά υλικού. Η λειτουργία μείωσης θορύβου ADC σταματά τη CPU και όλες τις μονάδες I/O εκτός από το ADC, για ελαχιστοποίηση του θορύβου μεταγωγής κατά τις μετατροπές ADC.
Η συσκευή κατασκευάζεται χρησιμοποιώντας την τεχνολογία μη πτητικής μνήμης υψηλής πυκνότητας της Atmel. Το On-chip ISP Flash επιτρέπει στη μνήμη του προγράμματος να επαναπρογραμματιστεί In-System μέσω μιας σειριακής διεπαφής SPI, από έναν συμβατικό προγραμματιστή μη πτητικής μνήμης ή από έναν κώδικα εκκίνησης On-chip που εκτελείται στον πυρήνα AVR.
Το ATtiny25/45/85 AVR υποστηρίζεται με μια πλήρη σειρά εργαλείων ανάπτυξης προγραμμάτων και συστημάτων, όπως: C Compilers, Macro Assemblers, Program Debugger/Simulators και Evaluation kit.
Σχετικά με τους πόρους
Ένα ολοκληρωμένο σύνολο εργαλείων ανάπτυξης, σημειώσεων εφαρμογών και φύλλων δεδομένων είναι διαθέσιμο για λήψη στο http://www.atmel.com/avr.
Κωδικός Πρamples
Αυτή η τεκμηρίωση περιέχει απλό κώδικα π.χampΛεπτομέρειες που δείχνουν εν συντομία πώς να χρησιμοποιείτε διάφορα μέρη της συσκευής. Αυτοί οι κωδικοί π.χampΑς υποθέσουμε ότι η κεφαλίδα του συγκεκριμένου τμήματος file περιλαμβάνεται πριν από τη σύνταξη. Λάβετε υπόψη ότι δεν περιλαμβάνουν όλοι οι προμηθευτές μεταγλωττιστών C ορισμούς bit στην κεφαλίδα fileΟ χειρισμός s και διακοπής στο C εξαρτάται από τον μεταγλωττιστή. Επιβεβαιώστε με την τεκμηρίωση του μεταγλωττιστή C για περισσότερες λεπτομέρειες.
Για καταχωρητές I/O που βρίσκονται στον εκτεταμένο χάρτη I/O, οι οδηγίες «IN», «OUT», «SBIS», «SBIC», «CBI» και «SBI» πρέπει να αντικατασταθούν με οδηγίες που επιτρέπουν την πρόσβαση σε εκτεταμένο I /Ο. Συνήθως, αυτό σημαίνει "LDS" και "STS" σε συνδυασμό με "SBRS", "SBRC", "SBR" και "CBR". Σημειώστε ότι δεν περιλαμβάνουν όλες οι συσκευές AVR εκτεταμένο χάρτη I/O.
Χωρητική αίσθηση αφής
Το Atmel QTouch Library παρέχει μια απλή στη χρήση λύση για διεπαφές ευαίσθητες στην αφή σε μικροελεγκτές Atmel AVR. Η βιβλιοθήκη QTouch περιλαμβάνει υποστήριξη για μεθόδους απόκτησης QTouch® και QMatrix®.
Η αίσθηση αφής προστίθεται εύκολα σε οποιαδήποτε εφαρμογή συνδέοντας τη Βιβλιοθήκη QTouch και χρησιμοποιώντας τη διεπαφή προγραμματισμού εφαρμογών (API) της βιβλιοθήκης για να ορίσετε τα κανάλια αφής και τους αισθητήρες. Στη συνέχεια, η εφαρμογή καλεί το API για να ανακτήσει πληροφορίες καναλιού και να καθορίσει την κατάσταση του αισθητήρα αφής.
Η βιβλιοθήκη QTouch είναι δωρεάν και μπορείτε να την κατεβάσετε από το Atmel webτοποθεσία. Για περισσότερες πληροφορίες και λεπτομέρειες σχετικά με την εφαρμογή, ανατρέξτε στον Οδηγό χρήσης της βιβλιοθήκης QTouch – που διατίθεται επίσης από την Atmel webτοποθεσία.
Διατήρηση Δεδομένων
Τα αποτελέσματα της πιστοποίησης αξιοπιστίας δείχνουν ότι ο προβλεπόμενος ρυθμός αποτυχίας διατήρησης δεδομένων είναι πολύ μικρότερος από 1 PPM για 20 χρόνια στους 85°C ή 100 χρόνια στους 25°C.
Πυρήνας CPU AVR
Εισαγωγή
Αυτή η ενότητα εξετάζει την αρχιτεκτονική του πυρήνα AVR γενικά. Η κύρια λειτουργία του πυρήνα της CPU είναι να διασφαλίζει τη σωστή εκτέλεση του προγράμματος. Η CPU πρέπει επομένως να έχει πρόσβαση σε μνήμες, να εκτελεί υπολογισμούς, να ελέγχει περιφερειακά και να χειρίζεται διακοπές.
Αρχιτεκτονικό Πάνωview
Προκειμένου να μεγιστοποιηθεί η απόδοση και ο παραλληλισμός, το AVR χρησιμοποιεί μια αρχιτεκτονική του Χάρβαρντ – με ξεχωριστές μνήμες και διαύλους για προγράμματα και δεδομένα. Οι εντολές στη μνήμη προγράμματος εκτελούνται με διοχέτευση ενός επιπέδου. Ενώ εκτελείται μία εντολή, η επόμενη εντολή λαμβάνεται εκ των προτέρων από τη μνήμη του προγράμματος. Αυτή η ιδέα επιτρέπει την εκτέλεση εντολών σε κάθε κύκλο ρολογιού. Η μνήμη προγράμματος είναι επαναπρογραμματιζόμενη μνήμη Flash εντός συστήματος.
Το μητρώο γρήγορης πρόσβασης File περιέχει 32 x 8-bit καταχωρητές εργασίας γενικής χρήσης με χρόνο πρόσβασης ενός κύκλου ρολογιού. Αυτό επιτρέπει τη λειτουργία Αριθμητικής Λογικής Μονάδας ενός κύκλου (ALU). Σε μια τυπική λειτουργία ALU, δύο τελεστές εξάγονται από τον καταχωρητή File, η λειτουργία εκτελείται και το αποτέλεσμα αποθηκεύεται ξανά στον Μητρώο File– σε έναν κύκλο ρολογιού.
Έξι από τους 32 καταχωρητές μπορούν να χρησιμοποιηθούν ως τρεις δείκτες έμμεσων καταχωρητών διευθύνσεων 16-bit για τη διευθυνσιοδότηση του χώρου δεδομένων – επιτρέποντας αποτελεσματικούς υπολογισμούς διευθύνσεων. Ένας από αυτούς τους δείκτες διευθύνσεων μπορεί επίσης να χρησιμοποιηθεί ως δείκτης διεύθυνσης για αναζήτηση πινάκων στη μνήμη του προγράμματος Flash. Αυτοί οι προστιθέμενοι καταχωρητές συναρτήσεων είναι οι καταχωρητές X-, Y- και Z 16-bit, που περιγράφονται παρακάτω σε αυτήν την ενότητα.
Η ALU υποστηρίζει αριθμητικές και λογικές πράξεις μεταξύ καταχωρητών ή μεταξύ σταθεράς και καταχωρητή. Οι λειτουργίες ενός μόνο καταχωρητή μπορούν επίσης να εκτελεστούν στην ALU. Μετά από μια αριθμητική πράξη, το μητρώο κατάστασης ενημερώνεται για να αντικατοπτρίζει πληροφορίες σχετικά με το αποτέλεσμα της πράξης.
Η ροή προγράμματος παρέχεται από οδηγίες μετάβασης και κλήσης υπό όρους και άνευ όρων, ικανές να απευθυνθούν απευθείας σε ολόκληρο τον χώρο διευθύνσεων. Οι περισσότερες εντολές AVR έχουν μια ενιαία μορφή λέξης 16 bit, αλλά υπάρχουν και οδηγίες 32 bit.
Κατά τη διάρκεια διακοπών και κλήσεων υπορουτίνας, η διεύθυνση επιστροφής μετρητής προγράμματος (PC) αποθηκεύεται στη Στοίβα. Η Στοίβα κατανέμεται αποτελεσματικά στη γενική SRAM δεδομένων, και κατά συνέπεια το μέγεθος της στοίβας περιορίζεται μόνο από το συνολικό μέγεθος της SRAM και τη χρήση της SRAM. Όλα τα προγράμματα χρήστη πρέπει να αρχικοποιήσουν το SP στη ρουτίνα Reset (πριν εκτελεστούν οι υπορουτίνες ή οι διακοπές). Ο δείκτης στοίβας (SP) είναι προσβάσιμος για ανάγνωση/εγγραφή στο χώρο I/O. Η πρόσβαση στη SRAM δεδομένων είναι εύκολη μέσω των πέντε διαφορετικών τρόπων διευθυνσιοδότησης που υποστηρίζονται στην αρχιτεκτονική AVR.
Οι χώροι μνήμης στην αρχιτεκτονική AVR είναι όλοι γραμμικοί και κανονικοί χάρτες μνήμης.
Μια ευέλικτη μονάδα διακοπής έχει τους καταχωρητές ελέγχου της στο χώρο I/O με ένα πρόσθετο bit ενεργοποίησης καθολικής διακοπής στον καταχωρητή κατάστασης. Όλες οι διακοπές έχουν ξεχωριστό διάνυσμα διακοπής στον πίνακα Διάνυσμα διακοπής. Οι διακοπές έχουν προτεραιότητα σύμφωνα με τη θέση διανύσματος διακοπής. Όσο χαμηλότερη είναι η διεύθυνση διανύσματος διακοπής, τόσο μεγαλύτερη είναι η προτεραιότητα.
Ο χώρος μνήμης I/O περιέχει 64 διευθύνσεις για περιφερειακές λειτουργίες της CPU, όπως καταχωρητές ελέγχου, SPI και άλλες λειτουργίες I/O. Η πρόσβαση στη μνήμη I/O μπορεί να γίνει απευθείας ή ως τοποθεσίες Data Space ακολουθώντας αυτές του Μητρώου File, 0x20 – 0x5F.
ALU – Αριθμητική Λογική Μονάδα
Το υψηλής απόδοσης AVR ALU λειτουργεί σε άμεση σύνδεση και με τα 32 μητρώα εργασίας γενικής χρήσης. Μέσα σε έναν μόνο κύκλο ρολογιού, εκτελούνται αριθμητικές πράξεις μεταξύ καταχωρητών γενικού σκοπού ή μεταξύ καταχωρητή και άμεσου. Οι πράξεις ALU χωρίζονται σε τρεις κύριες κατηγορίες – αριθμητικές, λογικές και συναρτήσεις bit. Ορισμένες υλοποιήσεις της αρχιτεκτονικής παρέχουν επίσης έναν ισχυρό πολλαπλασιαστή που υποστηρίζει και υπογεγραμμένο/ανυπόγραφο πολλαπλασιασμό και κλασματική μορφή. Δείτε την ενότητα «Σετ οδηγιών» για λεπτομερή περιγραφή.
Εγγραφή κατάστασης
Το μητρώο κατάστασης περιέχει πληροφορίες σχετικά με το αποτέλεσμα της πιο πρόσφατης αριθμητικής εντολής που εκτελέστηκε. Αυτές οι πληροφορίες μπορούν να χρησιμοποιηθούν για την αλλαγή της ροής του προγράμματος προκειμένου να εκτελεστούν λειτουργίες υπό όρους. Λάβετε υπόψη ότι το μητρώο κατάστασης ενημερώνεται μετά από όλες τις λειτουργίες ALU, όπως καθορίζεται στην Αναφορά συνόλου εντολών. Αυτό σε πολλές περιπτώσεις θα καταργήσει την ανάγκη χρήσης των ειδικών οδηγιών σύγκρισης, με αποτέλεσμα ταχύτερο και πιο συμπαγή κώδικα.
Το μητρώο κατάστασης δεν αποθηκεύεται αυτόματα κατά την είσοδο σε μια ρουτίνα διακοπής και αποκαθίσταται όταν επιστρέφει από μια διακοπή. Αυτό πρέπει να αντιμετωπιστεί από λογισμικό.
SREG – Μητρώο κατάστασης AVR
Το μητρώο κατάστασης AVR – SREG – ορίζεται ως:
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3F | I | T | H | S | V | N | Z | C | SREG |
Διαβάστε/Γράψτε | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Αρχική Αξία | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7 – I: Ενεργοποίηση καθολικής διακοπής
Το bit ενεργοποίησης καθολικής διακοπής πρέπει να οριστεί για να ενεργοποιηθούν οι διακοπές. Στη συνέχεια, ο έλεγχος ενεργοποίησης μεμονωμένης διακοπής εκτελείται σε ξεχωριστούς καταχωρητές ελέγχου. Εάν διαγραφεί το μητρώο ενεργοποίησης καθολικής διακοπής, καμία από τις διακοπές δεν ενεργοποιείται ανεξάρτητα από τις μεμονωμένες ρυθμίσεις ενεργοποίησης διακοπής. Το I-bit διαγράφεται από το υλικό μετά από μια διακοπή και ρυθμίζεται από την εντολή RETI ώστε να ενεργοποιούνται οι επόμενες διακοπές. Το I-bit μπορεί επίσης να ρυθμιστεί και να διαγραφεί από την εφαρμογή με τις οδηγίες SEI και CLI, όπως περιγράφεται στην αναφορά σετ εντολών.
Bit 6 – T: Bit Copy Storage
Οι οδηγίες αντιγραφής Bit BLD (Bit LoaD) και BST (Bit STore) χρησιμοποιούν το T-bit ως πηγή ή προορισμό για το χειριζόμενο bit. Λίγο από ένα μητρώο στο Μητρώο File μπορεί να αντιγραφεί στο T από την εντολή BST και ένα bit στο T μπορεί να αντιγραφεί σε ένα bit σε έναν καταχωρητή στον καταχωρητή File σύμφωνα με την οδηγία BLD.
Bit 5 – H: Half Carry Flag
Η σημαία Half Carry H υποδηλώνει Half Carry σε ορισμένες αριθμητικές πράξεις. Το Half Carry είναι χρήσιμο στην αριθμητική BCD. Ανατρέξτε στην «Περιγραφή του συνόλου οδηγιών» για λεπτομερείς πληροφορίες.
Bit 4 – S: Sign Bit, S = N ⊕ V
Το S-bit είναι πάντα αποκλειστικό ή μεταξύ του Negative Flag N και του Two's Complement Overflow Flag V. Δείτε την «Περιγραφή του συνόλου εντολών» για λεπτομερείς πληροφορίες.
Bit 3 – V: Σημαία υπερχείλισης συμπληρώματος δύο
Το The Two's Complement Overflow Flag V υποστηρίζει την αριθμητική του συμπληρώματος δύο. Ανατρέξτε στην «Περιγραφή του συνόλου οδηγιών» για λεπτομερείς πληροφορίες.
Bit 2 – N: Αρνητική σημαία
Η αρνητική σημαία N υποδεικνύει ένα αρνητικό αποτέλεσμα σε μια αριθμητική ή λογική πράξη. Ανατρέξτε στην «Περιγραφή του συνόλου οδηγιών» για λεπτομερείς πληροφορίες.
Bit 1 – Z: Zero Flag
Το Zero Flag Z υποδεικνύει ένα μηδενικό αποτέλεσμα σε μια αριθμητική ή λογική πράξη. Ανατρέξτε στην «Περιγραφή του συνόλου οδηγιών» για λεπτομερείς πληροφορίες.
Bit 0 – C: Carry Flag
Το Carry Flag C υποδεικνύει μια μεταφορά σε μια αριθμητική ή λογική πράξη. Ανατρέξτε στην «Περιγραφή του συνόλου οδηγιών» για λεπτομερείς πληροφορίες.
Μητρώο Γενικού Σκοπού File
Το Μητρώο File είναι βελτιστοποιημένη για το σετ εντολών AVR Enhanced RISC. Προκειμένου να επιτευχθεί η απαιτούμενη απόδοση και ευελιξία, τα ακόλουθα σχήματα εισόδου/εξόδου υποστηρίζονται από το Μητρώο File:
Ένας τελεστής εξόδου 8 bit και μία είσοδος αποτελέσματος 8 bit
Δύο τελεστές εξόδου 8 bit και μία είσοδος αποτελέσματος 8 bit
Δύο τελεστές εξόδου 8 bit και μία είσοδος αποτελέσματος 16 bit
Ένας τελεστής εξόδου 16 bit και μία είσοδος αποτελέσματος 16 bit
Εικόνα 4-2 δείχνει τη δομή των 32 μητρώων εργασίας γενικής χρήσης στη CPU.
Όπως φαίνεται στο Εικόνα 4-2, σε κάθε καταχωρητή εκχωρείται επίσης μια διεύθυνση μνήμης δεδομένων, αντιστοιχίζοντάς τα απευθείας στις πρώτες 32 θέσεις του χώρου δεδομένων χρήστη. Αν και δεν υλοποιείται φυσικά ως τοποθεσίες SRAM, αυτή η οργάνωση μνήμης παρέχει μεγάλη ευελιξία στην πρόσβαση στους καταχωρητές, καθώς οι καταχωρητές δείκτη X-, Y- και Z μπορούν να ρυθμιστούν ώστε να ευρετηριάζουν οποιονδήποτε καταχωρητή στο file.Οι περισσότερες από τις οδηγίες που λειτουργούν στο Μητρώο File έχουν άμεση πρόσβαση σε όλους τους καταχωρητές και οι περισσότεροι από αυτούς είναι οδηγίες ενός κύκλου.
Το X-register, Y-register και Z-register
Οι καταχωρητές R26..R31 έχουν ορισμένες πρόσθετες λειτουργίες στη χρήση γενικού σκοπού τους. Αυτοί οι καταχωρητές είναι δείκτες διεύθυνσης 16-bit για έμμεση διευθυνσιοδότηση του χώρου δεδομένων. Οι τρεις καταχωρητές έμμεσων διευθύνσεων X, Y και Z ορίζονται όπως περιγράφεται στο Εικόνα 4-3.
Στους διαφορετικούς τρόπους διευθυνσιοδότησης αυτοί οι καταχωρητές διευθύνσεων έχουν λειτουργίες όπως σταθερή μετατόπιση, αυτόματη αύξηση και αυτόματη μείωση (δείτε την αναφορά σετ εντολών για λεπτομέρειες).
Στοίβα δείκτη
Η Στοίβα χρησιμοποιείται κυρίως για την αποθήκευση προσωρινών δεδομένων, για την αποθήκευση τοπικών μεταβλητών και για την αποθήκευση διευθύνσεων επιστροφής μετά από διακοπές και κλήσεις υπορουτίνας. Ο καταχωρητής δεικτών στοίβας δείχνει πάντα στην κορυφή της στοίβας. Σημειώστε ότι η Στοίβα υλοποιείται καθώς αυξάνεται από θέσεις υψηλότερης μνήμης σε θέσεις χαμηλότερης μνήμης. Αυτό σημαίνει ότι μια εντολή Stack PUSH μειώνει το Stack Pointer.
Ο δείκτης στοίβας δείχνει την περιοχή στοίβας δεδομένων SRAM όπου βρίσκονται οι στοίβες υπορουτίνας και διακοπής. Αυτός ο χώρος στοίβας στη SRAM δεδομένων πρέπει να οριστεί από το πρόγραμμα πριν εκτελεστούν οποιεσδήποτε κλήσεις υπορουτίνας ή ενεργοποιηθούν οι διακοπές. Ο δείκτης στοίβας πρέπει να ρυθμιστεί σε σημείο πάνω από 0x60. Ο δείκτης στοίβας μειώνεται κατά ένα όταν τα δεδομένα προωθούνται στη Στοίβα με την εντολή PUSH και μειώνεται κατά δύο όταν η διεύθυνση επιστροφής προωθείται στη Στοίβα με κλήση υπορουτίνας ή διακοπή. Ο δείκτης στοίβας αυξάνεται κατά ένα όταν εμφανίζονται δεδομένα από τη Στοίβα με την εντολή POP και αυξάνεται κατά δύο όταν εμφανίζονται δεδομένα από τη Στοίβα με επιστροφή από την υπορουτίνα RET ή επιστροφή από διακοπή RETI.
Ο δείκτης στοίβας AVR υλοποιείται ως δύο καταχωρητές 8-bit στον χώρο I/O. Ο αριθμός των bit που χρησιμοποιούνται στην πραγματικότητα εξαρτάται από την υλοποίηση. Σημειώστε ότι ο χώρος δεδομένων σε ορισμένες υλοποιήσεις της αρχιτεκτονικής AVR είναι τόσο μικρός που χρειάζεται μόνο SPL. Σε αυτήν την περίπτωση, το Μητρώο SPH δεν θα υπάρχει.
SPH και SPL — Καταχωρητής δεικτών στοίβας
Κομμάτι | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | |
0x3E | SP15 | SP14 | SP13 | SP12 | SP11 | SP10 | SP9 | SP8 | SPH |
0x3D | SP7 | SP6 | SP5 | SP4 | SP3 | SP2 | SP1 | SP0 | SPL |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
Διαβάστε/Γράψτε | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Διαβάστε/Γράψτε | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Αρχική Αξία | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | |
Αρχική Αξία | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND |
Χρόνος εκτέλεσης εντολών
Αυτή η ενότητα περιγράφει τις γενικές έννοιες χρονισμού πρόσβασης για την εκτέλεση εντολών. Η CPU AVR οδηγείται από το clkCPU της CPU, που δημιουργείται απευθείας από την επιλεγμένη πηγή ρολογιού για το τσιπ. Δεν χρησιμοποιείται εσωτερικός διαχωρισμός ρολογιού.
Εικόνα 4-4 δείχνει τις παράλληλες ανακτήσεις εντολών και τις εκτελέσεις εντολών που ενεργοποιήθηκαν από την αρχιτεκτονική του Χάρβαρντ και το μητρώο γρήγορης πρόσβασης File έννοια. Αυτή είναι η βασική ιδέα της διοχέτευσης για την απόκτηση έως και 1 MIPS ανά MHz με τα αντίστοιχα μοναδικά αποτελέσματα για λειτουργίες ανά κόστος, λειτουργίες ανά ρολόι και λειτουργίες ανά μονάδα ισχύος.
Εικόνα 4-5. Λειτουργία ALU ενός κύκλου
Χειρισμός επαναφοράς και διακοπής
Το AVR παρέχει πολλές διαφορετικές πηγές διακοπής. Αυτές οι διακοπές και το ξεχωριστό διάνυσμα επαναφοράς έχουν το καθένα ξεχωριστό διάνυσμα προγράμματος στο χώρο μνήμης προγράμματος. Σε όλες τις διακοπές εκχωρούνται μεμονωμένα bit ενεργοποίησης, τα οποία πρέπει να γραφτούν λογικά ένα μαζί με το bit ενεργοποίησης καθολικής διακοπής στο μητρώο κατάστασης προκειμένου να ενεργοποιηθεί η διακοπή.
Οι χαμηλότερες διευθύνσεις στο χώρο της μνήμης του προγράμματος ορίζονται από προεπιλογή ως διανύσματα επαναφοράς και διακοπής. Ο πλήρης κατάλογος των διανυσμάτων εμφανίζεται στο «Διακοπές» στη σελίδα 48. Η λίστα καθορίζει επίσης τα επίπεδα προτεραιότητας των διαφορετικών διακοπών. Όσο χαμηλότερη είναι η διεύθυνση τόσο υψηλότερο είναι το επίπεδο προτεραιότητας. Η RESET έχει την υψηλότερη προτεραιότητα και επόμενο είναι το INT0 – το Αίτημα Εξωτερικής Διακοπής 0.
Όταν συμβεί μια διακοπή, το I-bit Enable Global Interrupt διαγράφεται και όλες οι διακοπές απενεργοποιούνται. Το λογισμικό χρήστη μπορεί να γράψει μια λογική στο I-bit για να ενεργοποιήσει τις ένθετες διακοπές. Όλες οι ενεργοποιημένες διακοπές μπορούν στη συνέχεια να διακόψουν την τρέχουσα ρουτίνα διακοπής. Το I-bit ρυθμίζεται αυτόματα όταν εκτελείται μια εντολή Return from Interrupt – RETI.
Υπάρχουν βασικά δύο είδη διακοπών. Ο πρώτος τύπος ενεργοποιείται από ένα συμβάν που ορίζει τη σημαία διακοπής. Για αυτές τις διακοπές, ο μετρητής προγράμματος τοποθετείται στο πραγματικό διάνυσμα διακοπής προκειμένου να εκτελεστεί η ρουτίνα χειρισμού διακοπών και το υλικό διαγράφει την αντίστοιχη σημαία διακοπής. Οι σημαίες διακοπής μπορούν επίσης να διαγραφούν γράφοντας ένα λογικό στη θέση(ες) του bit σημαίας που πρόκειται να διαγραφούν. Εάν παρουσιαστεί μια συνθήκη διακοπής ενώ διαγράφεται το αντίστοιχο bit ενεργοποίησης διακοπής, η σημαία διακοπής θα οριστεί και θα απομνημονευθεί έως ότου ενεργοποιηθεί η διακοπή ή η σημαία διαγραφεί από το λογισμικό. Ομοίως, εάν προκύψουν μία ή περισσότερες συνθήκες διακοπής ενώ διαγράφεται το bit ενεργοποίησης καθολικής διακοπής, οι αντίστοιχες σημαίες διακοπής θα οριστούν και θα απομνημονευθούν έως ότου οριστεί το bit ενεργοποίησης καθολικής διακοπής και στη συνέχεια θα εκτελεστούν με σειρά προτεραιότητας.
Ο δεύτερος τύπος διακοπών θα ενεργοποιηθεί όσο υπάρχει η συνθήκη διακοπής. Αυτές οι διακοπές δεν έχουν απαραίτητα Σημαίες Διακοπής. Εάν η συνθήκη διακοπής εξαφανιστεί πριν ενεργοποιηθεί η διακοπή, η διακοπή δεν θα ενεργοποιηθεί.
Όταν το AVR εξέρχεται από μια διακοπή, θα επιστρέφει πάντα στο κύριο πρόγραμμα και θα εκτελεί μία ακόμη εντολή πριν από την προβολή οποιασδήποτε εκκρεμούς διακοπής.
Λάβετε υπόψη ότι το μητρώο κατάστασης δεν αποθηκεύεται αυτόματα κατά την είσοδο σε μια ρουτίνα διακοπής, ούτε αποκαθίσταται όταν επιστρέφει από μια ρουτίνα διακοπής. Αυτό πρέπει να αντιμετωπιστεί από λογισμικό.
Όταν χρησιμοποιείτε την εντολή CLI για την απενεργοποίηση των διακοπών, οι διακοπές θα απενεργοποιηθούν αμέσως. Δεν θα εκτελεστεί καμία διακοπή μετά την εντολή CLI, ακόμα κι αν συμβεί ταυτόχρονα με την εντολή CLI. Οι παρακάτω π.χampΤο le δείχνει πώς μπορεί να χρησιμοποιηθεί για την αποφυγή διακοπών κατά τη διάρκεια της χρονομετρημένης ακολουθίας εγγραφής EEPROM.
Κωδικός Συναρμολόγησης Πχample |
σε r16, SREG ; αποθηκεύστε την τιμή SREG
cli ; απενεργοποιήστε τις διακοπές κατά τη διάρκεια της χρονομετρημένης ακολουθίας sbi EECR, ΕΕΜΠΕ ; ξεκινήστε την εγγραφή EEPROM sbi EECR, ΕΕΠΕ έξω SREG, r16 ; επαναφορά τιμής SREG (I-bit) |
Κωδικός Γ Πχample |
char cSREG;
cSREG = SREG; /* αποθήκευση τιμής SREG */ /* απενεργοποίηση διακοπών κατά τη διάρκεια της χρονομετρημένης ακολουθίας */ _CLI(); EECR |= (1< EECR |= (1< SREG = cSREG; /* επαναφορά τιμής SREG (I-bit) */ |
Κατά τη χρήση της εντολής SEI για την ενεργοποίηση διακοπών, η εντολή που ακολουθεί το SEI θα εκτελεστεί πριν από οποιεσδήποτε εκκρεμείς διακοπές, όπως φαίνεται στο παρόν example.
Κωδικός Συναρμολόγησης Πχample |
sei ; ορίστε την Ενεργοποίηση καθολικής διακοπής
ύπνος; μπείτε σε ύπνο, περιμένοντας διακοπή ; Σημείωση: θα μπει σε κατάσταση αναστολής λειτουργίας πριν από οποιαδήποτε εκκρεμότητα ; διακοπή(εις) |
Κωδικός Γ Πχample |
_SEI(); /* ορίστε την ενεργοποίηση καθολικής διακοπής */
_ΥΠΝΟΣ(); /* εισαγάγετε ύπνο, αναμονή για διακοπή */ /* σημείωση: θα μπει σε αναστολή λειτουργίας πριν από οποιαδήποτε εκκρεμή διακοπή */ |
Διακοπή χρόνου απόκρισης
Η απόκριση εκτέλεσης διακοπής για όλες τις ενεργοποιημένες διακοπές AVR είναι τουλάχιστον τέσσερις κύκλοι ρολογιού. Μετά από τέσσερις κύκλους ρολογιού εκτελείται η διεύθυνση του διανύσματος προγράμματος για την πραγματική ρουτίνα χειρισμού διακοπών. Κατά τη διάρκεια αυτής της περιόδου τεσσάρων κύκλων ρολογιού, ο μετρητής προγράμματος ωθείται στη Στοίβα. Το διάνυσμα είναι συνήθως ένα άλμα στη ρουτίνα διακοπής και αυτό το άλμα διαρκεί τρεις κύκλους ρολογιού. Εάν παρουσιαστεί διακοπή κατά την εκτέλεση μιας εντολής πολλαπλών κύκλων, αυτή η εντολή ολοκληρώνεται πριν από την προβολή της διακοπής. Εάν παρουσιαστεί διακοπή όταν το MCU βρίσκεται σε κατάσταση αναστολής λειτουργίας, ο χρόνος απόκρισης εκτέλεσης διακοπής αυξάνεται κατά τέσσερις κύκλους ρολογιού. Αυτή η αύξηση έρχεται επιπλέον του χρόνου εκκίνησης από την επιλεγμένη λειτουργία αδράνειας.
Η επιστροφή από μια ρουτίνα χειρισμού διακοπών διαρκεί τέσσερις κύκλους ρολογιού. Κατά τη διάρκεια αυτών των τεσσάρων κύκλων ρολογιού, ο μετρητής προγράμματος (δύο byte) αναδύεται από τη στοίβα, ο δείκτης στοίβας αυξάνεται κατά δύο και το I-bit στο SREG έχει οριστεί.
Μνήμες AVR
Αυτή η ενότητα περιγράφει τις διαφορετικές μνήμες στο ATtiny25/45/85. Η αρχιτεκτονική AVR έχει δύο κύριους χώρους μνήμης, τη μνήμη δεδομένων και τη μνήμη προγράμματος. Επιπλέον, το ATtiny25/45/85 διαθέτει μνήμη EEPROM για αποθήκευση δεδομένων. Και οι τρεις χώροι μνήμης είναι γραμμικοί και κανονικοί.
Επαναπρογραμματιζόμενη μνήμη προγράμματος Flash εντός συστήματος
Το ATtiny25/45/85 περιέχει 2/4/8K byte με δυνατότητα επαναπρογραμματιζόμενης μνήμης Flash εντός του συστήματος για αποθήκευση προγραμμάτων. Δεδομένου ότι όλες οι οδηγίες AVR έχουν πλάτος 16 ή 32 bit, το Flash είναι οργανωμένο ως 1024/2048/4096 x 16.
Η μνήμη Flash έχει αντοχή τουλάχιστον 10,000 κύκλων εγγραφής/διαγραφής. Ο μετρητής προγράμματος ATtiny25/45/85 (PC) έχει πλάτος 10/11/12 bit, αντιμετωπίζοντας έτσι τις θέσεις μνήμης προγράμματος 1024/2048/4096. «Πρόγραμμα μνήμης- ming» στη σελίδα 147 περιέχει μια λεπτομερή περιγραφή για τη λήψη σειριακών δεδομένων Flash χρησιμοποιώντας τις ακίδες SPI.
Μπορούν να εκχωρηθούν σταθεροί πίνακες σε ολόκληρο τον χώρο διευθύνσεων της μνήμης του προγράμματος (δείτε την περιγραφή εντολών LPM – Φόρτωση μνήμης προγράμματος).
Εικόνα 5-1. Χάρτης μνήμης προγράμματος
Μνήμη δεδομένων SRAM
Εικόνα 5-2 δείχνει πώς είναι οργανωμένη η μνήμη SRAM ATtiny25/45/85.
Οι χαμηλότερες θέσεις μνήμης δεδομένων 224/352/607 απευθύνονται και στους δύο καταχωρητές File, τη μνήμη I/O και την εσωτερική SRAM δεδομένων. Οι πρώτες 32 τοποθεσίες απευθύνονται στο Μητρώο File, οι επόμενες 64 θέσεις της τυπικής μνήμης I/O και οι τελευταίες 128/256/512 θέσεις απευθύνονται στην εσωτερική SRAM δεδομένων.
Οι πέντε διαφορετικοί τρόποι διευθυνσιοδότησης για τη μνήμη δεδομένων καλύπτουν: Άμεση, Έμμεση με Μετατόπιση, Έμμεση, Έμμεση με Προ-Μείωση και Έμμεση με Μετα-αύξηση. Στο Μητρώο File, οι καταχωρητές R26 έως R31 διαθέτουν τους καταχωρητές δεικτών έμμεσης διευθυνσιοδότησης.
Η άμεση διευθυνσιοδότηση φτάνει σε ολόκληρο τον χώρο δεδομένων.
Η λειτουργία Έμμεση με Μετατόπιση φτάνει σε 63 θέσεις διευθύνσεων από τη διεύθυνση βάσης που δίνεται από τον καταχωρητή Y- ή Z-.
Όταν χρησιμοποιείτε καταστάσεις έμμεσης διεύθυνσης καταχωρητή με αυτόματη προ-μείωση και μετα-αύξηση, οι καταχωρητές διευθύνσεων X, Y και Z μειώνονται ή αυξάνονται.
Οι 32 καταχωρητές εργασίας γενικής χρήσης, οι 64 καταχωρητές εισόδου/εξόδου και τα 128/256/512 byte εσωτερικών δεδομένων SRAM στο ATtiny25/45/85 είναι όλα προσβάσιμα μέσω όλων αυτών των τρόπων διευθυνσιοδότησης. Το Μητρώο File περιγράφεται στο "Γεν... αρχικό μητρώο σκοπού File»Στη σελίδα 10.
Εικόνα 5-2. Χάρτης μνήμης δεδομένων
Πρόσβαση στη μνήμη δεδομένων Φορές
Αυτή η ενότητα περιγράφει τις γενικές έννοιες χρονισμού πρόσβασης για πρόσβαση στην εσωτερική μνήμη. Η πρόσβαση σε εσωτερικά δεδομένα SRAM πραγματοποιείται σε δύο κύκλους clkCPU όπως περιγράφεται στο Εικόνα 5-3.
Εικόνα 5-3. Κύκλοι πρόσβασης δεδομένων SRAM σε τσιπ Μνήμη δεδομένων EEPROM
Το ATtiny25/45/85 περιέχει 128/256/512 byte μνήμης δεδομένων EEPROM. Είναι οργανωμένο ως ξεχωριστός χώρος δεδομένων, στον οποίο μπορούν να διαβαστούν και να γραφτούν μεμονωμένα byte. Το EEPROM έχει αντοχή τουλάχιστον 100,000 κύκλων εγγραφής/διαγραφής. Η πρόσβαση μεταξύ της EEPROM και της CPU περιγράφεται παρακάτω, προσδιορίζοντας τους καταχωρητές διευθύνσεων EEPROM, το μητρώο δεδομένων EEPROM και το μητρώο ελέγχου EEPROM. Για λεπτομέρειες βλ «Σειριακή λήψη» στη σελίδα 151.
Πρόσβαση ανάγνωσης/εγγραφής EEPROM
Οι καταχωρητές πρόσβασης EEPROM είναι προσβάσιμοι στο χώρο I/O.
Οι χρόνοι πρόσβασης εγγραφής για το EEPROM δίνονται Πίνακας 5-1 στη σελίδα 21. Μια λειτουργία αυτοχρονισμού, ωστόσο, επιτρέπει στο λογισμικό χρήστη να ανιχνεύσει πότε μπορεί να γραφτεί το επόμενο byte. Εάν ο κωδικός χρήστη περιέχει οδηγίες που γράφουν το EEPROM, πρέπει να ληφθούν ορισμένες προφυλάξεις. Σε πολύ φιλτραρισμένα τροφοδοτικά, το VCC είναι πιθανό να ανεβαίνει ή να πέφτει αργά
Ενεργοποίηση/απενεργοποίηση. Αυτό αναγκάζει τη συσκευή για κάποιο χρονικό διάστημα να λειτουργεί σε voltage χαμηλότερο από το καθορισμένο ως ελάχιστο για τη συχνότητα ρολογιού που χρησιμοποιείται. Βλέπω «Πρόληψη της διαφθοράς EEPROM» στη σελίδα 19 για λεπτομέρειες σχετικά με τον τρόπο αποφυγής προβλημάτων σε αυτές τις καταστάσεις.
Για την αποφυγή ακούσιων εγγραφών EEPROM, πρέπει να ακολουθηθεί μια συγκεκριμένη διαδικασία εγγραφής. Παραπέμπω "Ατομικός Byte Programming» στη σελίδα 17 και «Προγραμματισμός διαχωρισμού byte» στη σελίδα 17 για λεπτομέρειες σχετικά με αυτό.
Όταν διαβάζεται το EEPROM, η CPU διακόπτεται για τέσσερις κύκλους ρολογιού πριν εκτελεστεί η επόμενη εντολή. Όταν γράφεται το EEPROM, η CPU διακόπτεται για δύο κύκλους ρολογιού πριν εκτελεστεί η επόμενη εντολή.
Προγραμματισμός ατομικών byte
Η χρήση του προγραμματισμού Atomic Byte είναι η απλούστερη λειτουργία. Όταν γράφετε ένα byte στο EEPROM, ο χρήστης πρέπει να γράψει τη διεύθυνση στο μητρώο EEAR και τα δεδομένα στο μητρώο EEDR. Εάν τα bit EEPMn είναι μηδέν, η εγγραφή EEPE (εντός τεσσάρων κύκλων μετά την εγγραφή του EEMPE) θα ενεργοποιήσει τη λειτουργία διαγραφής/εγγραφής. Τόσο ο κύκλος διαγραφής όσο και ο κύκλος εγγραφής γίνονται με μία λειτουργία και δίνεται ο συνολικός χρόνος προγραμματισμού Πίνακας 5-1 στη σελίδα 21. Το bit EEPE παραμένει ρυθμισμένο μέχρι να ολοκληρωθούν οι λειτουργίες διαγραφής και εγγραφής. Ενώ η συσκευή είναι απασχολημένη με προγραμματισμό, δεν είναι δυνατό να πραγματοποιήσετε άλλες λειτουργίες EEPROM.
Προγραμματισμός Split Byte
Είναι δυνατός ο διαχωρισμός του κύκλου διαγραφής και εγγραφής σε δύο διαφορετικές λειτουργίες. Αυτό μπορεί να είναι χρήσιμο εάν το σύστημα απαιτεί σύντομο χρόνο πρόσβασης για κάποιο περιορισμένο χρονικό διάστημα (συνήθως εάν το τροφοδοτικό voltagε πέφτει). Για να προλάβω- tagε αυτής της μεθόδου, απαιτείται οι θέσεις που θα γραφτούν να έχουν διαγραφεί πριν από τη λειτουργία εγγραφής. Αλλά επειδή οι λειτουργίες διαγραφής και εγγραφής χωρίζονται, είναι δυνατό να πραγματοποιηθούν οι λειτουργίες διαγραφής όταν το σύστημα επιτρέπει την εκτέλεση κρίσιμων για το χρόνο λειτουργιών (συνήθως μετά την ενεργοποίηση).
Εξάλειψη
Για να διαγράψετε ένα byte, η διεύθυνση πρέπει να γραφτεί στο EEAR. Εάν τα bit EEPMn είναι 0b01, η εγγραφή του EEPE (εντός τεσσάρων κύκλων μετά την εγγραφή του EEMPE) θα ενεργοποιήσει μόνο τη λειτουργία διαγραφής (ο χρόνος προγραμματισμού δίνεται στο Πίνακας 5-1 στις σελίδα 21). Το bit EEPE παραμένει ρυθμισμένο μέχρι να ολοκληρωθεί η λειτουργία διαγραφής. Ενώ η συσκευή είναι απασχολημένη με τον προγραμματισμό, δεν είναι δυνατή η εκτέλεση άλλων λειτουργιών EEPROM.
Γράφω
Για να γράψει μια τοποθεσία, ο χρήστης πρέπει να γράψει τη διεύθυνση στο EEAR και τα δεδομένα στο EEDR. Εάν τα bit EEPMn είναι 0b10, η εγγραφή του EEPE (εντός τεσσάρων κύκλων μετά την εγγραφή του EEMPE) θα ενεργοποιήσει μόνο τη λειτουργία εγγραφής (ο χρόνος προγραμματισμού δίνεται στο Πίνακας 5-1 στη σελίδα 21). Το bit EEPE παραμένει ρυθμισμένο μέχρι να ολοκληρωθεί η λειτουργία εγγραφής. Εάν η θέση που πρόκειται να γραφτεί δεν έχει διαγραφεί πριν από την εγγραφή, τα δεδομένα που αποθηκεύονται πρέπει να θεωρηθούν χαμένα. Ενώ η συσκευή είναι απασχολημένη με προγραμματισμό, δεν είναι δυνατό να πραγματοποιήσετε άλλες λειτουργίες EEPROM.
Ο βαθμονομημένος ταλαντωτής χρησιμοποιείται για να χρονομετρήσει τις προσβάσεις του EEPROM. Βεβαιωθείτε ότι η συχνότητα ταλαντωτή είναι εντός των απαιτήσεων που περιγράφονται στο «OSCCAL – Καταχωρητής βαθμονόμησης ταλαντωτή» στη σελίδα 31.
Ο παρακάτω κωδικός π.χampΤα les δείχνουν ένα συγκρότημα και μια συνάρτηση C για διαγραφή, εγγραφή ή ατομική εγγραφή του EEPROM. Ο πρώηνamples υποθέτουμε ότι οι διακοπές ελέγχονται (π.χ. με την απενεργοποίηση των διακοπών καθολικά) έτσι ώστε να μην υπάρχουν διακοπές κατά την εκτέλεση αυτών των λειτουργιών.
Κωδικός Συναρμολόγησης Πχample |
EEPROM_write:
; Περιμένετε να ολοκληρωθεί η προηγούμενη εγγραφή sbic EECR,EEPE rjmp EEPROM_write ; Ρυθμίστε τη λειτουργία προγραμματισμού ldi r16, (0<<EEPM1)|(0<<EEPM0) έξω EECR, r16 ; Ρυθμίστε τη διεύθυνση (r18:r17) στο μητρώο διευθύνσεων έξω EEARH, r18 έξω EEARL, r17 ; Γράψτε δεδομένα (r19) στον καταχωρητή δεδομένων έξω EEDR, r19 ; Γράψε λογικό στην ΕΕΜΠΕ sbi EECR,EEMPE ; Ξεκινήστε την εγγραφή eeprom ρυθμίζοντας το EEPE sbi EECR,EEPE μουσκεύω |
Κωδικός Γ Πχample |
void EEPROM_write (ανυπόγραφο char ucData, ανυπόγραφο char ucData)
{ /* Περιμένετε να ολοκληρωθεί η προηγούμενη εγγραφή */ ενώ(EECR & (1< ; /* Ορισμός λειτουργίας προγραμματισμού */ EECR = (0< /* Ρύθμιση μητρώων διευθύνσεων και δεδομένων */ EEAR = ucAddress; EEDR = ucData; /* Γράψτε μια λογική στην ΕΕΜΠΕ */ EECR |= (1< /* Ξεκινήστε την εγγραφή eeprom ρυθμίζοντας το EEPE */ EECR |= (1< } |
Ο επόμενος κωδικός π.χampΤα les δείχνουν συναρμολόγηση και λειτουργίες C για την ανάγνωση του EEPROM. Ο πρώηνamples υποθέτουμε ότι οι διακοπές ελέγχονται έτσι ώστε να μην υπάρχουν διακοπές κατά την εκτέλεση αυτών των λειτουργιών.
Κωδικός Συναρμολόγησης Πχample |
EEPROM_read:
; Περιμένετε να ολοκληρωθεί η προηγούμενη εγγραφή sbic EECR,EEPE rjmp EEPROM_read ; Ρυθμίστε τη διεύθυνση (r18:r17) στο μητρώο διευθύνσεων έξω EEARH, r18 έξω EEARL, r17 ; Ξεκινήστε την ανάγνωση του eeprom γράφοντας EERE sbi EECR,EERE ; Ανάγνωση δεδομένων από το μητρώο δεδομένων σε r16,EEDR μουσκεύω |
Κωδικός Γ Πχample |
ανυπόγραφο char EEPROM_read(unsigned char ucAddress)
{ /* Περιμένετε να ολοκληρωθεί η προηγούμενη εγγραφή */ ενώ (EECR & (1< ; /* Ρύθμιση μητρώου διευθύνσεων */ EEAR = ucAddress; /* Έναρξη eeprom ανάγνωσης γράφοντας EERE */ EECR |= (1< /* Επιστροφή δεδομένων από τον καταχωρητή δεδομένων */ επιστροφή EEDR? } |
Πρόληψη της διαφθοράς EEPROM
Κατά τη διάρκεια περιόδων χαμηλού VCC, τα δεδομένα EEPROM μπορεί να καταστραφούν επειδή η παροχή voltagΤο e είναι πολύ χαμηλό για να λειτουργήσουν σωστά η CPU και η EEPROM. Αυτά τα ζητήματα είναι τα ίδια με τα συστήματα σε επίπεδο πλακέτας που χρησιμοποιούν EEPROM και θα πρέπει να εφαρμόζονται οι ίδιες σχεδιαστικές λύσεις.
Μια καταστροφή δεδομένων EEPROM μπορεί να προκληθεί από δύο καταστάσεις όταν το voltagΤο e είναι πολύ χαμηλό. Πρώτον, μια κανονική ακολουθία εγγραφής στο EEPROM απαιτεί ένα ελάχιστο voltagε για να λειτουργήσει σωστά. Δεύτερον, η ίδια η CPU μπορεί να εκτελέσει λανθασμένα οδηγίες, εάν η παροχή voltagΤο e είναι πολύ χαμηλό.
Η καταστροφή δεδομένων EEPROM μπορεί εύκολα να αποφευχθεί ακολουθώντας αυτήν τη σύσταση σχεδιασμού:
Διατηρήστε το AVR RESET ενεργό (χαμηλό) σε περιόδους ανεπαρκούς τροφοδοσίας voltagμι. Αυτό μπορεί να γίνει με την ενεργοποίηση του εσωτερικού Brown-out Detector (BOD). Εάν το επίπεδο ανίχνευσης του εσωτερικού BOD δεν ταιριάζει με το
απαιτούμενο επίπεδο ανίχνευσης, μπορεί να χρησιμοποιηθεί ένα εξωτερικό κύκλωμα προστασίας επαναφοράς χαμηλού VCC. Εάν πραγματοποιηθεί επαναφορά ενώ βρίσκεται σε εξέλιξη μια λειτουργία εγγραφής, η λειτουργία εγγραφής θα ολοκληρωθεί με την προϋπόθεση ότι η τροφοδοσία voltagτο e είναι αρκετό.
I/O Μνήμη
Ο ορισμός του χώρου I/O του ATtiny25/45/85 εμφανίζεται στο «Περίληψη εγγραφής» στη σελίδα 200.
Όλα τα ATtiny25/45/85 I/O και τα περιφερειακά τοποθετούνται στον χώρο I/O. Όλες οι θέσεις I/O μπορούν να προσπελαστούν από τις οδηγίες LD/LDS/LDD και ST/STS/STD, μεταφέροντας δεδομένα μεταξύ των 32 καταχωρητών εργασίας γενικής χρήσης και του χώρου I/O. Οι καταχωρητές εισόδου/εξόδου εντός του εύρους διευθύνσεων 0x00 – 0x1F είναι άμεσα προσβάσιμοι με bit χρησιμοποιώντας τις οδηγίες SBI και CBI. Σε αυτούς τους καταχωρητές, η τιμή των μεμονωμένων bit μπορεί να ελεγχθεί χρησιμοποιώντας τις οδηγίες SBIS και SBIC. Ανατρέξτε στην ενότητα σετ οδηγιών για περισσότερες λεπτομέρειες. Όταν χρησιμοποιείτε τις συγκεκριμένες εντολές I/O IN και OUT, πρέπει να χρησιμοποιούνται οι διευθύνσεις I/O 0x00 – 0x3F. Κατά τη διευθυνσιοδότηση καταχωρητών εισόδου/εξόδου ως χώρου δεδομένων με χρήση εντολών LD και ST, πρέπει να προστεθεί 0x20 σε αυτές τις διευθύνσεις.
Για συμβατότητα με μελλοντικές συσκευές, τα δεσμευμένα bit θα πρέπει να μηδενίζονται εάν έχουν πρόσβαση. Οι δεσμευμένες διευθύνσεις μνήμης I/O δεν πρέπει ποτέ να γράφονται.
Ορισμένες από τις σημαίες κατάστασης διαγράφονται γράφοντας μια λογική σε αυτές. Λάβετε υπόψη ότι οι οδηγίες CBI και SBI θα λειτουργούν μόνο στο καθορισμένο bit και επομένως μπορούν να χρησιμοποιηθούν σε καταχωρητές που περιέχουν τέτοιες Σημαίες Κατάστασης. Οι οδηγίες CBI και SBI λειτουργούν μόνο με καταχωρητές 0x00 έως 0x1F.
Οι καταχωρητές ελέγχου εισόδου/εξόδου και περιφερειακών επεξηγούνται σε επόμενες ενότητες.
Εγγραφή Περιγραφή
Μητρώο διευθύνσεων EEARH – EEPROM
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1F | – | – | – | – | – | – | – | EEAR8 | EEARH |
Διαβάστε/Γράψτε | R | R | R | R | R | R | R | R/W | |
Αρχική Αξία | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Χ/0 |
Bits 7:1 – Απάντηση: Reserved Bits
Αυτά τα bit είναι δεσμευμένα για μελλοντική χρήση και θα διαβάζονται πάντα ως μηδέν.
Bits 0 – EEAR8: Διεύθυνση EEPROM
Αυτό είναι το πιο σημαντικό bit διεύθυνσης EEPROM του ATtiny85. Σε συσκευές με λιγότερο EEPROM, π.χ. ATtiny25/ATtiny45, αυτό το bit είναι δεσμευμένο και θα δείχνει πάντα μηδέν. Η αρχική τιμή του Μητρώου Διευθύνσεων EEPROM (EEAR) δεν έχει καθοριστεί και, επομένως, πρέπει να γραφεί μια σωστή τιμή πριν από την πρόσβαση στο EEPROM.
Μητρώο διευθύνσεων EEARL – EEPROM
Κομμάτι
0x1E | EEAR7 | EEAR6 | EEAR5 | EEAR4 | EEAR3 | EEAR2 | EEAR1 | EEAR0 | EEARL |
Πίσω/Γράψτε | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Αρχική Αξία | X | X | X | X | X | X | X | X |
Bit 7 – EEAR7: Διεύθυνση EEPROM
Αυτό είναι το πιο σημαντικό bit διεύθυνσης EEPROM του ATtiny45. Σε συσκευές με λιγότερο EEPROM, δηλαδή ATtiny25, αυτό το bit είναι δεσμευμένο και θα δείχνει πάντα μηδέν. Η αρχική τιμή του Μητρώου Διευθύνσεων EEPROM (EEAR) είναι απροσδιόριστη και επομένως πρέπει να γραφεί μια σωστή τιμή πριν από την πρόσβαση στο EEPROM.
Bits 6:0 – EEAR[6:0]: Διεύθυνση EEPROM
Αυτά είναι τα (χαμηλά) bit του καταχωρητή διευθύνσεων EEPROM. Τα byte δεδομένων EEPROM απευθύνονται γραμμικά στην περιοχή 0…(128/256/512-1). Η αρχική τιμή του EEAR είναι απροσδιόριστη και, επομένως, πρέπει να γραφεί μια σωστή τιμή πριν να είναι δυνατή η πρόσβαση στο EEPROM.
Μητρώο δεδομένων EEDR – EEPROM
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1D | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
Διαβάστε/Γράψτε | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Αρχική Αξία | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Για τη λειτουργία εγγραφής EEPROM, το Μητρώο EEDR περιέχει τα δεδομένα που πρέπει να εγγραφούν στο EEPROM στη διεύθυνση που δίνεται από το Μητρώο EEAR. Για τη λειτουργία ανάγνωσης EEPROM, το EEDR περιέχει τα δεδομένα που διαβάζονται από το
EEPROM στη διεύθυνση που έδωσε η EEAR.
5.5.4 Μητρώο Ελέγχου EECR – EEPROM |
|||||||||
Bit 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
0x1C – | – | EEPM1 | EEPM0 | ΜΥΣΤΗΡΙΩΔΗΣ | ΕΕΜΠΕ | ΕΕΠΕ | EERE | EECR | |
Ανάγνωση/Εγγραφή R R R/W | R/W | R/W | R/W | R/W | R/W | ||||
Αρχική τιμή 0 0 X | X | 0 | 0 | X | 0 |
Bit 7 – Res: Reserved Bit
Αυτό το bit είναι δεσμευμένο για μελλοντική χρήση και θα διαβάζεται πάντα ως 0 στο ATtiny25/45/85. Για συμβατότητα με μελλοντικές συσκευές AVR, γράφετε πάντα αυτό το bit στο μηδέν. Αφού διαβάσετε, κρύψτε αυτό το κομμάτι.
Bit 6 – Res: Reserved Bit
Αυτό το bit είναι δεσμευμένο στο ATtiny25/45/85 και θα διαβάζεται πάντα ως μηδέν.
Bits 5:4 – EEPM[1:0]: EEPROM Bits λειτουργίας προγραμματισμού
Η ρύθμιση bits λειτουργίας προγραμματισμού EEPROM καθορίζει ποια ενέργεια προγραμματισμού θα ενεργοποιηθεί κατά την εγγραφή του EEPE. Είναι δυνατός ο προγραμματισμός δεδομένων σε μία ατομική λειτουργία (διαγραφή της παλιάς τιμής και προγραμματισμός της νέας τιμής) ή ο διαχωρισμός των πράξεων Διαγραφής και Εγγραφής σε δύο διαφορετικές λειτουργίες. Οι χρόνοι προγραμματισμού για τις διάφορες λειτουργίες εμφανίζονται στο Πίνακας 5-1. Ενώ έχει οριστεί το EEPE, οποιαδήποτε εγγραφή στο EEPMn θα αγνοηθεί. Κατά τη διάρκεια της επαναφοράς, τα bit EEPMn θα επαναφερθούν στο 0b00, εκτός εάν το EEPROM είναι απασχολημένο με προγραμματισμό.
Πίνακας 5-1. Bits λειτουργίας EEPROM
EEPM1 | EEPM0 | Χρόνος Προγραμματισμού | Λειτουργία |
0 | 0 | 3.4 ms | Διαγραφή και εγγραφή σε μία λειτουργία (Atomic Operation) |
0 | 1 | 1.8 ms | Διαγραφή μόνο |
1 | 0 | 1.8 ms | Μόνο εγγραφή |
1 | 1 | – | Επιφυλάσσεται για μελλοντική χρήση |
Bit 3 – EERIE: EEPROM Ready Interrupt Enable
Η εγγραφή EERIE σε ένα ενεργοποιεί τη διακοπή EEPROM Ready εάν έχει οριστεί το I-bit στο SREG. Η εγγραφή EERIE στο μηδέν απενεργοποιεί τη διακοπή. Η διακοπή ετοιμότητας EEPROM δημιουργεί μια σταθερή διακοπή όταν η μη πτητική μνήμη είναι έτοιμη για προγραμματισμό.
Bit 2 – EEMPE: Ενεργοποίηση κύριου προγράμματος EEPROM
Το bit EEMPE καθορίζει εάν η εγγραφή EEPE σε ένα θα έχει αποτέλεσμα ή όχι.
Όταν έχει ρυθμιστεί το EEMPE, η ρύθμιση του EEPE εντός τεσσάρων κύκλων ρολογιού θα προγραμματίσει το EEPROM στην επιλεγμένη διεύθυνση. Εάν το EEMPE είναι μηδέν, η ρύθμιση EEPE δεν θα έχει αποτέλεσμα. Όταν το EEMPE έχει γραφτεί σε ένα μέσω λογισμικού, το υλικό μηδενίζει το bit μετά από τέσσερις κύκλους ρολογιού.
Bit 1 – EEPE: Ενεργοποίηση προγράμματος EEPROM
Το σήμα ενεργοποίησης προγράμματος EEPROM EEPE είναι το σήμα ενεργοποίησης προγραμματισμού προς το EEPROM. Όταν γράφεται EEPE, το EEPROM θα προγραμματιστεί σύμφωνα με τη ρύθμιση EEPMn bits. Το bit EEMPE πρέπει να γραφτεί σε ένα πριν γραφτεί ένα λογικό στο EEPE, διαφορετικά δεν πραγματοποιείται εγγραφή EEPROM. Όταν παρέλθει ο χρόνος πρόσβασης εγγραφής, το bit EEPE διαγράφεται από το υλικό. Όταν έχει ρυθμιστεί το EEPE, η CPU διακόπτεται για δύο κύκλους πριν εκτελεστεί η επόμενη εντολή.
Bit 0 – EERE: Ενεργοποίηση ανάγνωσης EEPROM
Το σήμα ενεργοποίησης ανάγνωσης EEPROM - EERE - είναι το στροβοσκόπιο ανάγνωσης στο EEPROM. Όταν ρυθμιστεί η σωστή διεύθυνση στον καταχωρητή EEAR, το bit EERE πρέπει να γραφτεί σε ένα για να ενεργοποιηθεί η ανάγνωση EEPROM. Η πρόσβαση ανάγνωσης EEPROM απαιτεί μία εντολή και τα ζητούμενα δεδομένα είναι άμεσα διαθέσιμα. Όταν διαβάζεται το EEPROM, η CPU διακόπτεται για τέσσερις κύκλους πριν εκτελεστεί η επόμενη εντολή. Ο χρήστης πρέπει να μετρήσει το bit EEPE πριν ξεκινήσει τη λειτουργία ανάγνωσης. Εάν μια λειτουργία εγγραφής βρίσκεται σε εξέλιξη, δεν είναι δυνατή ούτε η ανάγνωση του EEPROM ούτε η αλλαγή του μητρώου EEAR.
Ρολόι συστήματος και Επιλογές ρολογιού
Συστήματα ρολογιού και η διανομή τους
Ρολόι CPU
Το ρολόι της CPU δρομολογείται σε μέρη του συστήματος που σχετίζονται με τη λειτουργία του πυρήνα AVR. ΠρώηνampΟι ενότητες αυτών των μονάδων είναι το Μητρώο Γενικού Σκοπού File, ο Καταχωρητής κατάστασης και η μνήμη δεδομένων που συγκρατούν τον δείκτη στοίβας. Η διακοπή του ρολογιού της CPU εμποδίζει τον πυρήνα να εκτελεί γενικές λειτουργίες και υπολογισμούς.
Ρολόι I/O – clkI/O
Το ρολόι I/O χρησιμοποιείται από την πλειονότητα των μονάδων I/O, όπως το Timer/Counter. Το ρολόι I/O χρησιμοποιείται επίσης από τη μονάδα Εξωτερικής Διακοπής, αλλά σημειώστε ότι ορισμένες εξωτερικές διακοπές ανιχνεύονται με ασύγχρονη λογική, επιτρέποντας την ανίχνευση τέτοιων διακοπών ακόμη και αν το ρολόι I/O έχει σταματήσει.
Ρολόι Flash – clkFLASH
Το ρολόι Flash ελέγχει τη λειτουργία της διεπαφής Flash. Το ρολόι Flash είναι συνήθως ενεργό ταυτόχρονα με το ρολόι της CPU.
Ρολόι ADC – clkADC
Το ADC παρέχεται με έναν αποκλειστικό τομέα ρολογιού. Αυτό επιτρέπει τη διακοπή των ρολογιών CPU και I/O προκειμένου να μειωθεί ο θόρυβος που δημιουργείται από τα ψηφιακά κυκλώματα. Αυτό παρέχει πιο ακριβή αποτελέσματα μετατροπής ADC.
Εσωτερικό PLL για γρήγορη δημιουργία περιφερειακών ρολογιών – clkPCK
Το εσωτερικό PLL στο ATtiny25/45/85 δημιουργεί μια συχνότητα ρολογιού που πολλαπλασιάζεται 8 φορές από μια είσοδο πηγής. Από προεπιλογή, το PLL χρησιμοποιεί την έξοδο του εσωτερικού ταλαντωτή RC 8.0 MHz ως πηγή. Εναλλακτικά, εάν έχει ρυθμιστεί το bit LSM του PLLCSR, το PLL θα χρησιμοποιήσει την έξοδο του ταλαντωτή RC διαιρούμενο με δύο. Έτσι η έξοδος του PLL, το γρήγορο περιφερειακό ρολόι είναι 64 MHz. Το γρήγορο περιφερειακό ρολόι, ή ένα ρολόι προ-κλιμακωμένο από αυτό, μπορεί να επιλεγεί ως πηγή ρολογιού για το Timer/Counter1 ή ως ρολόι συστήματος. Βλέπω Εικόνα 6-2. Η συχνότητα του γρήγορου περιφερειακού ρολογιού διαιρείται με το δύο όταν έχει ρυθμιστεί το LSM του PLLCSR, με αποτέλεσμα συχνότητα ρολογιού 32 MHz. Σημειώστε ότι το LSM δεν μπορεί να οριστεί εάν το PLLCLK χρησιμοποιείται ως ρολόι συστήματος.
Εικόνα 6-2. Σύστημα ρολογιού PCK.
Το PLL είναι κλειδωμένο στον ταλαντωτή RC και η ρύθμιση του ταλαντωτή RC μέσω καταχωρητή OSCCAL θα ρυθμίσει ταυτόχρονα το γρήγορο περιφερειακό ρολόι. Ωστόσο, ακόμα κι αν ο ταλαντωτής RC μεταφερθεί σε συχνότητα υψηλότερη από 8 MHz, η γρήγορη συχνότητα περιφερειακού ρολογιού κορεσθεί στα 85 MHz (τη χειρότερη περίπτωση) και παραμένει ταλαντούμενη στη μέγιστη συχνότητα. Θα πρέπει να σημειωθεί ότι το PLL σε αυτήν την περίπτωση δεν είναι πλέον κλειδωμένο με το ρολόι ταλαντωτή RC. Ως εκ τούτου, συνιστάται να μην κάνετε τις ρυθμίσεις OSCCAL σε συχνότητα υψηλότερη από 8 MHz για να διατηρήσετε το PLL στο σωστό εύρος λειτουργίας.
Το εσωτερικό PLL ενεργοποιείται όταν:
Το bit PLLE στον καταχωρητή PLLCSR έχει οριστεί.
Η ασφάλεια CKSEL είναι προγραμματισμένη στο '0001'.
Η ασφάλεια CKSEL είναι προγραμματισμένη στο '0011'.
Το PLLCSR bit PLOCK ρυθμίζεται όταν το PLL είναι κλειδωμένο. Τόσο ο εσωτερικός ταλαντωτής RC όσο και το PLL απενεργοποιούνται σε καταστάσεις απενεργοποίησης και αναμονής.
Εσωτερικό PLL σε λειτουργία συμβατότητας ATtiny15
Εφόσον το ATtiny25/45/85 είναι μια συσκευή μετεγκατάστασης για χρήστες ATtiny15, υπάρχει μια λειτουργία συμβατότητας ATtiny15 για συμβατότητα προς τα πίσω. Η λειτουργία συμβατότητας ATtiny15 επιλέγεται προγραμματίζοντας τις ασφάλειες CKSEL στο '0011'.
Στη λειτουργία συμβατότητας ATtiny15, η συχνότητα του εσωτερικού ταλαντωτή RC βαθμονομείται στα 6.4 MHz και ο συντελεστής πολλαπλασιασμού του PLL ορίζεται στο 4x. Βλέπω Εικόνα 6-3. Με αυτές τις ρυθμίσεις το σύστημα χρονισμού είναι συμβατό με το ATtiny15 και το προκύπτον γρήγορο περιφερειακό ρολόι έχει συχνότητα 25.6 MHz (όπως και στο ATtiny15).
Εικόνα 6-3. Σύστημα ρολογιού PCK σε λειτουργία συμβατότητας ATtiny15.
Πηγές ρολογιού
Η συσκευή διαθέτει τις ακόλουθες επιλογές πηγής ρολογιού, με δυνατότητα επιλογής με bit Flash Fuse όπως φαίνεται παρακάτω. Το ρολόι από την επιλεγμένη πηγή εισάγεται στη γεννήτρια ρολογιού AVR και δρομολογείται στις κατάλληλες μονάδες.
Πίνακας 6-1. Επιλογές ρολογιού συσκευής Επιλέξτε
Επιλογή ρολογιού συσκευής | CKSEL[3:0](1) |
Εξωτερικό ρολόι (βλέπω σελίδα 26) | 0000 |
Ρολόι PLL υψηλής συχνότητας (βλέπω σελίδα 26) | 0001 |
Βαθμονομημένος Εσωτερικός Ταλαντωτής (βλέπω σελίδα 27) | 0010(2) |
Βαθμονομημένος Εσωτερικός Ταλαντωτής (βλέπω σελίδα 27) | 0011(3) |
Εσωτερικός ταλαντωτής 128 kHz (βλέπω σελίδα 28) | 0100 |
Ταλαντωτής κρυστάλλων χαμηλής συχνότητας (βλέπω σελίδα 29) | 0110 |
Κρυσταλλικός Ταλαντωτής / Κεραμικός Αντηχητής (βλέπω σελίδα 29) | 1000 – 1111 |
Ρεζερβέ | 0101, 0111 |
Για όλες τις ασφάλειες "1" σημαίνει μη προγραμματισμένη ενώ "0" σημαίνει προγραμματισμένη.
Η συσκευή αποστέλλεται με επιλεγμένη αυτήν την επιλογή.
Αυτό θα επιλέξει τη λειτουργία συμβατότητας ATtiny15, όπου το ρολόι του συστήματος διαιρείται με τέσσερα, με αποτέλεσμα μια συχνότητα ρολογιού 1.6 MHz. Για περισσότερες πληροφορίες, βλ «Βαθμονομημένος εσωτερικός ταλαντωτής» στη σελίδα 27.
Οι διάφορες επιλογές για κάθε επιλογή χρονισμού δίνονται στις ακόλουθες ενότητες. Όταν η CPU αφυπνίζεται από την απενεργοποίηση, η επιλεγμένη πηγή ρολογιού χρησιμοποιείται για τη χρονομέτρηση της εκκίνησης, διασφαλίζοντας σταθερή λειτουργία του Ταλαντωτή πριν από την έναρξη της εκτέλεσης της εντολής. Όταν η CPU ξεκινά από την επαναφορά, υπάρχει μια επιπλέον καθυστέρηση που επιτρέπει στην ισχύ να φτάσει σε ένα σταθερό επίπεδο πριν ξεκινήσει η κανονική λειτουργία. Το Watchdog Oscillator χρησιμοποιείται για τον χρονισμό αυτού του μέρους του χρόνου εκκίνησης σε πραγματικό χρόνο. Ο αριθμός των κύκλων WDT Oscillator που χρησιμοποιούνται για κάθε time-out εμφανίζεται στο Πίνακας 6-2.
Πίνακας 6-2. Αριθμός Κύκλων Ταλαντωτών Watchdog
Πληκτρολογήστε Time-out | Αριθμός Κύκλων |
4 ms | 512 |
64 ms | 8K (8,192) |
Εξωτερικό ρολόι
Για να οδηγήσετε τη συσκευή από μια εξωτερική πηγή ρολογιού, το CLKI θα πρέπει να οδηγηθεί όπως φαίνεται στο Εικόνα 6-4. Για να λειτουργήσει η συσκευή σε εξωτερικό ρολόι, οι Ασφάλειες CKSEL πρέπει να είναι προγραμματισμένες στο «00».
Εικόνα 6-4. Διαμόρφωση μονάδας δίσκου εξωτερικού ρολογιού
Όταν έχει επιλεγεί αυτή η πηγή ρολογιού, οι χρόνοι εκκίνησης καθορίζονται από τις Ασφάλειες SUT όπως φαίνεται στο Πίνακας 6-3.
Πίνακας 6-3. Ώρες εκκίνησης για την επιλογή του εξωτερικού ρολογιού
SUT[1:0] | Χρόνος εκκίνησης από την απενεργοποίηση | Πρόσθετη καθυστέρηση από την επαναφορά | Συνιστώμενη χρήση |
00 | 6 CK | 14CK | BOD ενεργοποιημένο |
01 | 6 CK | 14CK + 4 ms | Δύναμη που αυξάνεται γρήγορα |
10 | 6 CK | 14CK + 64 ms | Αυξάνεται σιγά σιγά η ισχύς |
11 | Ρεζερβέ |
Κατά την εφαρμογή εξωτερικού ρολογιού, απαιτείται η αποφυγή ξαφνικών αλλαγών στην εφαρμοζόμενη συχνότητα ρολογιού για να διασφαλιστεί η σταθερή λειτουργία του MCU. Μια διακύμανση στη συχνότητα μεγαλύτερη από 2% από τον έναν κύκλο ρολογιού στον άλλο μπορεί να οδηγήσει σε απρόβλεπτη συμπεριφορά. Απαιτείται να διασφαλιστεί ότι η MCU διατηρείται σε επαναφορά κατά τη διάρκεια τέτοιων αλλαγών στη συχνότητα ρολογιού.
Λάβετε υπόψη ότι η Προπώληση ρολογιού συστήματος μπορεί να χρησιμοποιηθεί για την εφαρμογή αλλαγών χρόνου εκτέλεσης της συχνότητας εσωτερικού ρολογιού, διασφαλίζοντας παράλληλα σταθερή λειτουργία. Παραπέμπω «System Clock Prescaler» στη σελίδα 31 για λεπτομέρειες.
Ρολόι PLL υψηλής συχνότητας
Υπάρχει ένα εσωτερικό PLL που παρέχει ονομαστικά ρυθμό ρολογιού 64 MHz κλειδωμένο στον Ταλαντωτή RC για τη χρήση του περιφερειακού χρονοδιακόπτη/μετρητή1 και για την πηγή ρολογιού του συστήματος. Όταν επιλέγεται ως πηγή ρολογιού συστήματος, προγραμματίζοντας τις ασφάλειες CKSEL στο '0001', διαιρείται με τέσσερα όπως φαίνεται στο Πίνακας 6-4.
Πίνακας 6-4. Τρόποι λειτουργίας ρολογιού PLL υψηλής συχνότητας
CKSEL[3:0] | Ονομαστική συχνότητα |
0001 | 16 MHz |
Όταν έχει επιλεγεί αυτή η πηγή ρολογιού, οι χρόνοι εκκίνησης καθορίζονται από τις ασφάλειες SUT όπως φαίνεται στο Πίνακας 6-5.
Πίνακας 6-5. Χρόνοι εκκίνησης για το ρολόι PLL υψηλής συχνότητας
SUT[1:0] | Χρόνος εκκίνησης από το Power Down | Πρόσθετη καθυστέρηση από την επαναφορά κατά την ενεργοποίηση (VCC = 5.0 V) | Συνιστώμενη χρήση |
00 | 14CK + 1K (1024) CK + 4 ms | 4 ms | BOD ενεργοποιημένο |
Πίνακας 6-5. Χρόνοι εκκίνησης για το ρολόι PLL υψηλής συχνότητας
SUT[1:0] | Χρόνος εκκίνησης από το Power Down | Πρόσθετη καθυστέρηση από την επαναφορά κατά την ενεργοποίηση (VCC = 5.0 V) | Συνιστώμενη χρήση |
01 | 14CK + 16K (16384) CK + 4 ms | 4 ms | Δύναμη που αυξάνεται γρήγορα |
10 | 14CK + 1K (1024) CK + 64 ms | 4 ms | Αυξάνεται σιγά σιγά η ισχύς |
11 | 14CK + 16K (16384) CK + 64 ms | 4 ms | Αυξάνεται σιγά σιγά η ισχύς |
Βαθμονομημένος Εσωτερικός Ταλαντωτής
Από προεπιλογή, ο Εσωτερικός Ταλαντωτής RC παρέχει ένα ρολόι περίπου 8.0 MHz. Αν και τόμtagΤο e και ανάλογα με τη θερμοκρασία, αυτό το ρολόι μπορεί να βαθμονομηθεί με μεγάλη ακρίβεια από τον χρήστη. Βλέπω «Βαθμονομημένος Εσωτερικός Ταλαντωτής RC Accu- racy» στη σελίδα 164 και «Ταχύτητα εσωτερικού ταλαντωτή» στη σελίδα 192 για περισσότερες λεπτομέρειες. Η συσκευή αποστέλλεται με προγραμματισμένη την ασφάλεια CKDIV8. Βλέπω «System Clock Prescaler» στη σελίδα 31 για περισσότερες λεπτομέρειες.
Αυτό το ρολόι μπορεί να επιλεγεί ως ρολόι συστήματος προγραμματίζοντας τις ασφάλειες CKSEL όπως φαίνεται στο Πίνακας 6-6 στη σελίδα
27. Εάν επιλεγεί, θα λειτουργεί χωρίς εξωτερικά εξαρτήματα. Κατά τη διάρκεια της επαναφοράς, το υλικό φορτώνει την προ-προγραμματισμένη τιμή βαθμονόμησης στον καταχωρητή OSCCAL και ως εκ τούτου βαθμονομεί αυτόματα τον Ταλαντωτή RC. Η ακρίβεια αυτής της βαθμονόμησης εμφανίζεται ως Εργοστασιακή βαθμονόμηση σε Πίνακας 21-2 στη σελίδα 164.
Αλλάζοντας τον καταχωρητή OSCCAL από SW, βλ «OSCCAL – Καταχωρητής βαθμονόμησης ταλαντωτή» στη σελίδα 31, είναι δυνατό να επιτευχθεί μεγαλύτερη ακρίβεια βαθμονόμησης από ό,τι χρησιμοποιώντας την εργοστασιακή βαθμονόμηση. Η ακρίβεια αυτής της βαθμονόμησης εμφανίζεται ως βαθμονόμηση χρήστη στο Πίνακας 21-2 στη σελίδα 164.
Όταν αυτός ο ταλαντωτής χρησιμοποιείται ως ρολόι τσιπ, ο ταλαντωτής Watchdog θα εξακολουθεί να χρησιμοποιείται για το Watchdog Timer και για το Reset Time-out. Για περισσότερες πληροφορίες σχετικά με την προ-προγραμματισμένη τιμή βαθμονόμησης, ανατρέξτε στην ενότητα «Καλί- bration Bytes» στη σελίδα 150.
Ο εσωτερικός ταλαντωτής μπορεί επίσης να ρυθμιστεί ώστε να παρέχει ένα ρολόι 6.4 MHz γράφοντας τις ασφάλειες CKSEL στο "0011", όπως φαίνεται στο Πίνακας 6-6 παρακάτω. Αυτή η ρύθμιση αναφέρεται ως Λειτουργία συμβατότητας ATtiny15 και προορίζεται να παρέχει μια βαθμονομημένη πηγή ρολογιού στα 6.4 MHz, όπως στο ATtiny15. Στη λειτουργία συμβατότητας ATtiny15, το PLL χρησιμοποιεί τον εσωτερικό ταλαντωτή που λειτουργεί στα 6.4 MHz για να δημιουργήσει ένα περιφερειακό σήμα ρολογιού 25.6 MHz για το Timer/Counter1 (βλ. “8-bit Timer/Counter1 in ATtiny15 Mode» στη σελίδα 95). Σημειώστε ότι σε αυτόν τον τρόπο λειτουργίας το σήμα ρολογιού των 6.4 MHz διαιρείται πάντα με τέσσερα, παρέχοντας ένα ρολόι συστήματος 1.6 MHz.
Πίνακας 6-6. Εσωτερικοί βαθμονομημένοι τρόποι λειτουργίας ταλαντωτή RC
CKSEL[3:0] | Ονομαστική συχνότητα |
0010(1) | 8.0 MHz |
0011(2) | 6.4 MHz |
Η συσκευή αποστέλλεται με επιλεγμένη αυτήν την επιλογή.
Αυτή η ρύθμιση θα επιλέξει τη λειτουργία συμβατότητας ATtiny15, όπου το ρολόι του συστήματος διαιρείται με τέσσερα, με αποτέλεσμα μια συχνότητα ρολογιού 1.6 MHz.
Όταν ο βαθμονομημένος εσωτερικός ταλαντωτής 8 MHz επιλέγεται ως πηγή ρολογιού, οι χρόνοι εκκίνησης καθορίζονται από τις Ασφάλειες SUT όπως φαίνεται στο Πίνακας 6-7 παρακάτω.
Πίνακας 6-7. Χρόνοι εκκίνησης για εσωτερικό βαθμονομημένο ρολόι ταλαντωτή RC
SUT[1:0] | Χρόνος εκκίνησης από την απενεργοποίηση | Πρόσθετη καθυστέρηση από την επαναφορά (VCC = 5.0V) | Συνιστώμενη χρήση |
00 | 6 CK | 14CK(1) | BOD ενεργοποιημένο |
01 | 6 CK | 14CK + 4 ms | Δύναμη που αυξάνεται γρήγορα |
10(2) | 6 CK | 14CK + 64 ms | Αυξάνεται σιγά σιγά η ισχύς |
11 | Ρεζερβέ |
1. Εάν η ασφάλεια RSTDISBL είναι προγραμματισμένη, αυτός ο χρόνος εκκίνησης θα αυξηθεί σε 14CK + 4 ms για να διασφαλιστεί η είσοδος στη λειτουργία προγραμματισμού.
2. Η συσκευή αποστέλλεται με επιλεγμένη αυτήν την επιλογή.
Στη λειτουργία συμβατότητας ATtiny15, οι χρόνοι εκκίνησης καθορίζονται από τις ασφάλειες SUT όπως φαίνεται στο Πίνακας 6-8 παρακάτω.
Πίνακας 6-8. Χρόνοι εκκίνησης για εσωτερικό βαθμονομημένο ρολόι ταλαντωτή RC (σε λειτουργία ATtiny15)
SUT[1:0] | Χρόνος εκκίνησης από την απενεργοποίηση | Πρόσθετη καθυστέρηση από την επαναφορά (VCC = 5.0V) | Συνιστώμενη χρήση |
00 | 6 CK | 14CK + 64 ms | |
01 | 6 CK | 14CK + 64 ms | |
10 | 6 CK | 14CK + 4 ms | |
11 | 1 CK | 14CK(1) |
Σημείωση: Εάν η ασφάλεια RSTDISBL είναι προγραμματισμένη, αυτός ο χρόνος εκκίνησης θα αυξηθεί σε 14CK + 4 ms για να διασφαλιστεί η είσοδος στη λειτουργία προγραμματισμού.
Συνοπτικά, περισσότερες πληροφορίες σχετικά με τη λειτουργία συμβατότητας ATtiny15 μπορείτε να βρείτε σε ενότητες "Θύρα B (PB5:PB0)" ενεργοποιημένη σελίδα 2, «Εσωτερικό PLL σε λειτουργία συμβατότητας ATtiny15» στη σελίδα 24, "8-bit Timer/Counter1 in ATtiny15 Mode" ενεργοποιημένο σελίδα 95, «Περιορισμοί του debugWIRE» στη σελίδα 140, «Bytes βαθμονόμησης» στη σελίδα 150 και στον πίνακα «Ρολόι Prescaler Επιλογή» στη σελίδα 33.
Εσωτερικός ταλαντωτής 128 kHz
Ο εσωτερικός ταλαντωτής 128 kHz είναι ένας ταλαντωτής χαμηλής ισχύος που παρέχει ρολόι 128 kHz. Η συχνότητα είναι ονομαστική στα 3V και στους 25°C. Αυτό το ρολόι μπορεί να επιλεγεί ως ρολόι συστήματος προγραμματίζοντας τις Ασφάλειες CKSEL στο "0100".
Όταν έχει επιλεγεί αυτή η πηγή ρολογιού, οι χρόνοι εκκίνησης καθορίζονται από τις Ασφάλειες SUT όπως φαίνεται στο Πίνακας 6-9.
Πίνακας 6-9. Χρόνοι εκκίνησης για τον εσωτερικό ταλαντωτή 128 kHz
SUT[1:0] | Χρόνος εκκίνησης από την απενεργοποίηση | Πρόσθετη καθυστέρηση από την επαναφορά | Συνιστώμενη χρήση |
00 | 6 CK | 14CK(1) | BOD ενεργοποιημένο |
01 | 6 CK | 14CK + 4 ms | Δύναμη που αυξάνεται γρήγορα |
10 | 6 CK | 14CK + 64 ms | Αυξάνεται σιγά σιγά η ισχύς |
11 | Ρεζερβέ |
Σημείωση: Εάν η ασφάλεια RSTDISBL είναι προγραμματισμένη, αυτός ο χρόνος εκκίνησης θα αυξηθεί σε 14CK + 4 ms για να διασφαλιστεί η είσοδος στη λειτουργία προγραμματισμού.
Ταλαντωτής κρυστάλλων χαμηλής συχνότητας
Για να χρησιμοποιήσετε έναν κρύσταλλο ρολογιού 32.768 kHz ως πηγή ρολογιού για τη συσκευή, ο Ταλαντωτής κρυστάλλου χαμηλής συχνότητας πρέπει να επιλεγεί ρυθμίζοντας τις ασφάλειες CKSEL στο '0110'. Ο κρύσταλλος πρέπει να συνδεθεί όπως φαίνεται στο Εικόνα 6-5. Για να βρείτε την κατάλληλη χωρητικότητα φορτίου για κρύσταλλα 32.768 kHz, συμβουλευτείτε το φύλλο δεδομένων του κατασκευαστή.
Όταν επιλέγεται αυτός ο ταλαντωτής, οι χρόνοι εκκίνησης προσδιορίζονται από τις ασφάλειες SUT όπως φαίνεται στο Πίνακας 6-10.
Πίνακας 6-10. Χρόνοι εκκίνησης για την επιλογή ρολογιού ταλαντωτή κρυστάλλων χαμηλής συχνότητας
SUT[1:0] | Χρόνος εκκίνησης από το Power Down | Πρόσθετη καθυστέρηση από την επαναφορά (VCC = 5.0V) | Συνιστώμενη χρήση |
00 | 1K (1024) CK(1) | 4 ms | Ισχύς ταχείας αύξησης ή ενεργοποιημένο BOD |
01 | 1K (1024) CK(1) | 64 ms | Αυξάνεται σιγά σιγά η ισχύς |
10 | 32K (32768) CK | 64 ms | Σταθερή συχνότητα κατά την εκκίνηση |
11 | Ρεζερβέ |
Σημείωση: Αυτές οι επιλογές θα πρέπει να χρησιμοποιούνται μόνο εάν η σταθερότητα συχνότητας κατά την εκκίνηση δεν είναι σημαντική.
Ο κρυσταλλικός ταλαντωτής χαμηλής συχνότητας παρέχει εσωτερική χωρητικότητα φορτίου, βλ Πίνακας 6-11 σε κάθε ακροδέκτη TOSC.
Πίνακας 6-11. Χωρητικότητα κρυσταλλικού ταλαντωτή χαμηλής συχνότητας
Συσκευή | 32 kHz Osc. Τύπος | Καπάκι (Xtal1/Tosc1) | Καπάκι (Xtal2/Tosc2) |
ATtiny25/45/85 | System Osc. | 16 pF | 6 pF |
Κρυσταλλικός Ταλαντωτής / Κεραμικός Αντηχητής
Τα XTAL1 και XTAL2 είναι είσοδος και έξοδος, αντίστοιχα, μιας αναστροφής ampLifier που μπορεί να ρυθμιστεί για χρήση ως On-chip Oscillator, όπως φαίνεται στο Εικόνα 6-5. Μπορεί να χρησιμοποιηθεί είτε κρύσταλλος χαλαζία είτε κεραμικό αντηχείο.
Τα C1 και C2 θα πρέπει πάντα να είναι ίσα τόσο για τους κρυστάλλους όσο και για τους συντονιστές. Η βέλτιστη τιμή των πυκνωτών εξαρτάται από τον κρύσταλλο ή τον αντηχείο που χρησιμοποιείται, την ποσότητα της αδέσποτης χωρητικότητας και τον ηλεκτρομαγνητικό θόρυβο του περιβάλλοντος. Δίνονται ορισμένες αρχικές οδηγίες για την επιλογή πυκνωτών για χρήση με κρυστάλλους Πίνακας 6-12 παρακάτω. Για κεραμικούς συντονιστές, θα πρέπει να χρησιμοποιούνται οι τιμές πυκνωτών που δίνονται από τον κατασκευαστή.
Πίνακας 6-12. Τρόποι λειτουργίας ταλαντωτή κρυστάλλου
CKSEL[3:1] | Εύρος συχνοτήτων (MHz) | Συνιστώμενη περιοχή για πυκνωτές C1 και C2 για χρήση με κρυστάλλους (pF) |
100(1) | 0.4 – 0.9 | – |
101 | 0.9 – 3.0 | 12 – 22 |
110 | 3.0 – 8.0 | 12 – 22 |
111 | 8.0 - | 12 – 22 |
Σημειώσεις: Αυτή η επιλογή δεν πρέπει να χρησιμοποιείται με κρύσταλλα, μόνο με κεραμικά αντηχεία.
Ο Ταλαντωτής μπορεί να λειτουργήσει σε τρεις διαφορετικούς τρόπους λειτουργίας, ο καθένας βελτιστοποιημένος για ένα συγκεκριμένο εύρος συχνοτήτων. Ο τρόπος λειτουργίας επιλέγεται από τις ασφάλειες CKSEL[3:1] όπως φαίνεται στο Πίνακας 6-12.
Η ασφάλεια CKSEL0 μαζί με τις ασφάλειες SUT[1:0] επιλέγουν τους χρόνους εκκίνησης όπως φαίνεται στο Πίνακας 6-13.
Πίνακας 6-13. Χρόνοι εκκίνησης για την επιλογή ρολογιού ταλαντωτή κρυστάλλου
CKSEL0 | SUT[1:0] | Χρόνος εκκίνησης από την απενεργοποίηση | Πρόσθετη καθυστέρηση από την επαναφορά | Συνιστώμενη χρήση |
0 | 00 | 258 CK(1) | 14CK + 4 ms | Κεραμικό αντηχείο, γρήγορη ανερχόμενη ισχύ |
0 | 01 | 258 CK(1) | 14CK + 64 ms | Κεραμικό αντηχείο, με αργή άνοδο της ισχύος |
0 | 10 | 1K (1024) CK(2) | 14CK | Κεραμικό αντηχείο, με δυνατότητα BOD |
0 | 11 | 1K (1024)CK(2) | 14CK + 4 ms | Κεραμικό αντηχείο, γρήγορη ανερχόμενη ισχύ |
1 | 00 | 1K (1024)CK(2) | 14CK + 64 ms | Κεραμικό αντηχείο, με αργή άνοδο της ισχύος |
1 | 01 | 16K (16384) CK | 14CK | Crystal Oscillator, ενεργοποιημένος BOD |
1 | 10 | 16K (16384) CK | 14CK + 4 ms | Κρυσταλλικός Ταλαντωτής, ισχύς που αυξάνεται γρήγορα |
1 | 11 | 16K (16384) CK | 14CK + 64 ms | Κρυσταλλικός Ταλαντωτής, σιγά σιγά αυξανόμενη ισχύς |
Σημειώσεις
Αυτές οι επιλογές θα πρέπει να χρησιμοποιούνται μόνο όταν δεν λειτουργούν κοντά στη μέγιστη συχνότητα της συσκευής και μόνο εάν η σταθερότητα συχνότητας κατά την εκκίνηση δεν είναι σημαντική για την εφαρμογή. Αυτές οι επιλογές δεν είναι κατάλληλες για κρύσταλλα.
Αυτές οι επιλογές προορίζονται για χρήση με κεραμικούς συντονιστές και εξασφαλίζουν σταθερότητα συχνότητας κατά την εκκίνηση. Μπορούν επίσης να χρησιμοποιηθούν με κρυστάλλους όταν δεν λειτουργούν κοντά στη μέγιστη συχνότητα της συσκευής και εάν η σταθερότητα συχνότητας κατά την εκκίνηση δεν είναι σημαντική για την εφαρμογή.
Προεπιλεγμένη πηγή ρολογιού
Η συσκευή αποστέλλεται με προγραμματισμένο CKSEL = "0010", SUT = "10" και CKDIV8. Η προεπιλεγμένη ρύθμιση πηγής ρολογιού είναι επομένως ο Εσωτερικός Ταλαντωτής RC που λειτουργεί στα 8 MHz με τον μεγαλύτερο χρόνο εκκίνησης και μια αρχική προκλιμάκωση του ρολογιού του συστήματος 8, με αποτέλεσμα το ρολόι συστήματος 1.0 MHz. Αυτή η προεπιλεγμένη ρύθμιση διασφαλίζει ότι όλοι οι χρήστες μπορούν να κάνουν την επιθυμητή ρύθμιση πηγής ρολογιού χρησιμοποιώντας ένα In-System ή High-voltage Προγραμματιστής.
Προκλιμάκωση ρολογιού συστήματος
Το ρολόι συστήματος ATtiny25/45/85 μπορεί να διαιρεθεί ρυθμίζοντας το «CLKPR – Εγγραφή προκλιμάκωσης ρολογιού» στη σελίδα 32. Αυτή η δυνατότητα μπορεί να χρησιμοποιηθεί για τη μείωση της κατανάλωσης ενέργειας όταν η απαίτηση για επεξεργαστική ισχύ είναι χαμηλή. Αυτό μπορεί να χρησιμοποιηθεί με όλες τις επιλογές πηγής ρολογιού και θα επηρεάσει τη συχνότητα ρολογιού της CPU και όλων των σύγχρονων περιφερειακών. Τα clkI/O, clkADC, clkCPU και clkFLASH διαιρούνται με έναν παράγοντα όπως φαίνεται στο Πίνακας 6-15 στη σελίδα 33.
Χρόνος εναλλαγής
Κατά την εναλλαγή μεταξύ των ρυθμίσεων prescaler, το System Clock Prescaler διασφαλίζει ότι δεν παρουσιάζονται σφάλματα στο σύστημα ρολογιού και ότι καμία ενδιάμεση συχνότητα δεν είναι υψηλότερη ούτε από τη συχνότητα ρολογιού που αντιστοιχεί στην προηγούμενη ρύθμιση ούτε από τη συχνότητα ρολογιού που αντιστοιχεί στη νέα ρύθμιση.
Ο μετρητής κυματισμών που υλοποιεί τον προκλιμακωτή λειτουργεί με τη συχνότητα του αδιαίρετου ρολογιού, η οποία μπορεί να είναι ταχύτερη από τη συχνότητα ρολογιού της CPU. Ως εκ τούτου, δεν είναι δυνατός ο προσδιορισμός της κατάστασης του prescaler – ακόμα κι αν ήταν αναγνώσιμος, και ο ακριβής χρόνος που χρειάζεται για τη μετάβαση από μια διαίρεση ρολογιού σε μια άλλη δεν μπορεί να προβλεφθεί ακριβώς.
Από τη στιγμή που γράφονται οι τιμές CLKPS, χρειάζεται μεταξύ T1 + T2 και T1 + 2*T2 για να ενεργοποιηθεί η νέα συχνότητα ρολογιού. Σε αυτό το διάστημα παράγονται 2 ενεργές άκρες ρολογιού. Εδώ, T1 είναι η προηγούμενη περίοδος ρολογιού και T2 είναι η περίοδος που αντιστοιχεί στη νέα ρύθμιση prescaler.
Ενδιάμεση μνήμη εξόδου ρολογιού
Η συσκευή μπορεί να εξάγει το ρολόι συστήματος στον ακροδέκτη CLKO (όταν δεν χρησιμοποιείται ως ακροδέκτης XTAL2). Για να ενεργοποιήσετε την έξοδο, πρέπει να προγραμματιστεί η ασφάλεια CKOUT. Αυτή η λειτουργία είναι κατάλληλη όταν το ρολόι του τσιπ χρησιμοποιείται για την οδήγηση άλλων κυκλωμάτων στο σύστημα. Σημειώστε ότι το ρολόι δεν θα βγει στην έξοδο κατά την επαναφορά και ότι η κανονική λειτουργία του ακροδέκτη I/O θα παρακαμφθεί όταν προγραμματιστεί η ασφάλεια. Ο εσωτερικός ταλαντωτής RC, ο ταλαντωτής WDT, το PLL και το εξωτερικό ρολόι (CLKI) μπορούν να επιλεγούν όταν το ρολόι εξάγεται στο CLKO. Οι κρυσταλλικοί ταλαντωτές (XTAL1, XTAL2) δεν μπορούν να χρησιμοποιηθούν για έξοδο ρολογιού στο CLKO. Εάν χρησιμοποιείται ο Προκλιμακωτής Ρολογιού Συστήματος, η έξοδος είναι το διαιρεμένο ρολόι συστήματος.
Εγγραφή Περιγραφή
OSCCAL – Μητρώο βαθμονόμησης ταλαντωτή
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCCAL |
Διαβάστε/Γράψτε | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Bits 7:0 – CAL[7:0]: Τιμή βαθμονόμησης ταλαντωτή
Ο καταχωρητής βαθμονόμησης ταλαντωτή χρησιμοποιείται για την περικοπή του βαθμονομημένου εσωτερικού ταλαντωτή RC για την αφαίρεση των διακυμάνσεων της διαδικασίας από τη συχνότητα του ταλαντωτή. Μια προ-προγραμματισμένη τιμή βαθμονόμησης εγγράφεται αυτόματα σε αυτόν τον καταχωρητή κατά την επαναφορά του chip, δίνοντας την εργοστασιακή βαθμονομημένη συχνότητα όπως καθορίζεται στο Πίνακας 21-2 στη σελίδα 164. Το λογισμικό εφαρμογής μπορεί να γράψει αυτόν τον καταχωρητή για να αλλάξει τη συχνότητα του ταλαντωτή. Ο ταλαντωτής μπορεί να βαθμονομηθεί σε συχνότητες όπως καθορίζεται στο Πίνακας 21-2 στη σελίδα 164. Η βαθμονόμηση εκτός αυτού του εύρους δεν είναι εγγυημένη.
Σημειώστε ότι αυτός ο ταλαντωτής χρησιμοποιείται για τη χρονομέτρηση των προσβάσεων εγγραφής EEPROM και Flash και αυτοί οι χρόνοι εγγραφής θα επηρεαστούν ανάλογα. Εάν το EEPROM ή το Flash είναι γραμμένο, μην κάνετε βαθμονόμηση σε περισσότερα από 8.8 MHz. Διαφορετικά, η εγγραφή EEPROM ή Flash ενδέχεται να αποτύχει.
Το bit CAL7 καθορίζει το εύρος λειτουργίας του ταλαντωτή. Η ρύθμιση αυτού του bit στο 0 δίνει το χαμηλότερο εύρος συχνοτήτων, ενώ η ρύθμιση αυτού του bit στο 1 δίνει το υψηλότερο εύρος συχνοτήτων. Οι δύο περιοχές συχνοτήτων αλληλοκαλύπτονται, με άλλα λόγια μια ρύθμιση OSCCAL = 0x7F δίνει υψηλότερη συχνότητα από OSCCAL = 0x80.
Τα bit CAL[6:0] χρησιμοποιούνται για τον συντονισμό της συχνότητας εντός του επιλεγμένου εύρους. Μια ρύθμιση 0x00 δίνει τη χαμηλότερη συχνότητα σε αυτό το εύρος και μια ρύθμιση 0x7F δίνει την υψηλότερη συχνότητα στην περιοχή.
Για να διασφαλιστεί η σταθερή λειτουργία του MCU, η τιμή βαθμονόμησης θα πρέπει να αλλάξει σε μικρή. Μια διακύμανση στη συχνότητα μεγαλύτερη από 2% από τον έναν κύκλο στον άλλο μπορεί να οδηγήσει σε απρόβλεπτη συμπεριφορά. Οι αλλαγές στο OSCCAL δεν πρέπει να υπερβαίνουν το 0x20 για κάθε βαθμονόμηση. Απαιτείται να διασφαλιστεί ότι η MCU διατηρείται σε επαναφορά κατά τη διάρκεια τέτοιων αλλαγών στη συχνότητα ρολογιού
Πίνακας 6-14. Εύρος συχνότητας εσωτερικού ταλαντωτή RC
Τιμή OSCCAL | Τυπική χαμηλότερη συχνότητα σε σχέση με την ονομαστική συχνότητα | Τυπική υψηλότερη συχνότητα σε σχέση με την ονομαστική συχνότητα |
0x00 | 50% | 100% |
0x3F | 75% | 150% |
0x7F | 100% | 200% |
CLKPR – Εγγραφή προκλιμάκωσης ρολογιού
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | CLKPCE | – | – | – | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
Διαβάστε/Γράψτε | R/W | R | R | R | R/W | R/W | R/W | R/W |
Αρχική τιμή 0 0 0 0 Δείτε την περιγραφή bit
Bit 7 – CLKPCE: Clock Prescaler Change Enable
Το bit CLKPCE πρέπει να γραφτεί στο λογικό ένα για να ενεργοποιηθεί η αλλαγή των bit CLKPS. Το bit CLKPCE ενημερώνεται μόνο όταν τα άλλα bit στο CLKPR γράφονται ταυτόχρονα στο μηδέν. Το CLKPCE διαγράφεται από το υλικό τέσσερις κύκλους μετά την εγγραφή του ή όταν εγγραφούν τα bit CLKPS. Η επανεγγραφή του bit CLKPCE εντός αυτής της περιόδου λήξης δεν επεκτείνει την περίοδο λήξης ούτε διαγράφει το bit CLKPCE.
Bits 6:4 – Απάντηση: Reserved Bits
Αυτά τα bit είναι δεσμευμένα bit στο ATtiny25/45/85 και θα διαβάζονται πάντα ως μηδέν.
Bits 3:0 – CLKPS[3:0]: Clock Prescaler Select Bits 3 – 0
Αυτά τα bit ορίζουν τον παράγοντα διαίρεσης μεταξύ της επιλεγμένης πηγής ρολογιού και του εσωτερικού ρολογιού του συστήματος. Αυτά τα bit μπορούν να γραφτούν σε χρόνο εκτέλεσης για να μεταβάλλουν τη συχνότητα του ρολογιού ώστε να ταιριάζουν στις απαιτήσεις της εφαρμογής. Καθώς ο διαχωριστής διαιρεί την είσοδο του κύριου ρολογιού στο MCU, η ταχύτητα όλων των σύγχρονων περιφερειακών μειώνεται όταν χρησιμοποιείται ένας παράγοντας διαίρεσης. Οι συντελεστές διαίρεσης δίνονται Πίνακας 6-15.
Για να αποφευχθούν ακούσιες αλλαγές στη συχνότητα του ρολογιού, πρέπει να ακολουθηθεί μια ειδική διαδικασία εγγραφής για την αλλαγή των bit CLKPS:
Γράψτε το bit Clock Prescaler Change Enable (CLKPCE) σε ένα και όλα τα άλλα bit στο CLKPR στο μηδέν.
Μέσα σε τέσσερις κύκλους, γράψτε την επιθυμητή τιμή στο CLKPS ενώ γράφετε ένα μηδέν στο CLKPCE.
Οι διακοπές πρέπει να απενεργοποιούνται κατά την αλλαγή της ρύθμισης του prescaler για να βεβαιωθείτε ότι η διαδικασία εγγραφής δεν διακόπτεται.
Η ασφάλεια CKDIV8 καθορίζει την αρχική τιμή των bit CLKPS. Εάν το CKDIV8 δεν είναι προγραμματισμένο, τα bit CLKPS θα επαναφερθούν στο "0000". Εάν είναι προγραμματισμένο το CKDIV8, τα bit CLKPS επαναφέρονται στο "0011", δίνοντας συντελεστή διαίρεσης οκτώ κατά την εκκίνηση. Αυτή η δυνατότητα θα πρέπει να χρησιμοποιείται εάν η επιλεγμένη πηγή ρολογιού έχει υψηλότερη συχνότητα από τη μέγιστη συχνότητα της συσκευής στις τρέχουσες συνθήκες λειτουργίας. Σημειώστε ότι οποιαδήποτε τιμή μπορεί να γραφτεί στα bit CLKPS ανεξάρτητα από τη ρύθμιση CKDIV8 Fuse. Το λογισμικό εφαρμογής πρέπει να διασφαλίζει ότι υπάρχει επαρκής συντελεστής διαίρεσης
επιλέγεται εάν η επιλεγμένη πηγή ρολογιού έχει υψηλότερη συχνότητα από τη μέγιστη συχνότητα της συσκευής στις τρέχουσες συνθήκες λειτουργίας. Η συσκευή αποστέλλεται με προγραμματισμένη την ασφάλεια CKDIV8.
Πίνακας 6-15. Clock Prescaler Select
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | Συντελεστής διαίρεσης ρολογιού |
0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 2 |
0 | 0 | 1 | 0 | 4 |
0 | 0 | 1 | 1 | 8 |
0 | 1 | 0 | 0 | 16 |
0 | 1 | 0 | 1 | 32 |
0 | 1 | 1 | 0 | 64 |
0 | 1 | 1 | 1 | 128 |
1 | 0 | 0 | 0 | 256 |
1 | 0 | 0 | 1 | Ρεζερβέ |
1 | 0 | 1 | 0 | Ρεζερβέ |
1 | 0 | 1 | 1 | Ρεζερβέ |
1 | 1 | 0 | 0 | Ρεζερβέ |
1 | 1 | 0 | 1 | Ρεζερβέ |
1 | 1 | 1 | 0 | Ρεζερβέ |
1 | 1 | 1 | 1 | Ρεζερβέ |
Σημείωση: Ο προκλιμακωτής είναι απενεργοποιημένος στη λειτουργία συμβατότητας ATtiny15 και ούτε η εγγραφή στο CLKPR ούτε ο προγραμματισμός της ασφάλειας CKDIV8 έχουν καμία επίδραση στο ρολόι του συστήματος (το οποίο θα είναι πάντα 1.6 MHz).
Διαχείριση ενέργειας και Λειτουργίες ύπνου
Η υψηλή απόδοση και η κορυφαία απόδοση κώδικα στον κλάδο καθιστούν τους μικροελεγκτές AVR ιδανική επιλογή για εφαρμογές χαμηλής ισχύος. Επιπλέον, οι λειτουργίες αναστολής λειτουργίας επιτρέπουν στην εφαρμογή να τερματίζει τις αχρησιμοποίητες μονάδες στο MCU, εξοικονομώντας έτσι ενέργεια. Το AVR παρέχει διάφορες λειτουργίες ύπνου που επιτρέπουν στο χρήστη να προσαρμόσει την κατανάλωση ενέργειας στις απαιτήσεις της εφαρμογής.
Λειτουργίες ύπνου
Εικόνα 6-1 στη σελίδα 23 παρουσιάζει τα διάφορα συστήματα ρολογιού και την κατανομή τους στο ATtiny25/45/85. Το σχήμα είναι χρήσιμο για την επιλογή της κατάλληλης λειτουργίας ύπνου. Πίνακας 7-1 δείχνει τις διαφορετικές λειτουργίες ύπνου και τις πηγές αφύπνισης.
Πίνακας 7-1. Ενεργοί τομείς ρολογιού και πηγές αφύπνισης στις διαφορετικές λειτουργίες ύπνου
Ενεργοί τομείς ρολογιού | Ταλαντωτές | Πηγές αφύπνισης | ||||||||||
Λειτουργία ύπνου | clkCPU | clkFLASH | clkIO | clkADC | clkPCK | Ενεργοποιήθηκε η κύρια πηγή ρολογιού | INT0 και Αλλαγή Pin | SPM/EEPROM
Ετοιμος |
Κατάσταση εκκίνησης USI |
ADC | Άλλα I/O | Φρουρός Διακοπή |
Αεργος | X | X | X | X | X | X | X | X | X | X | ||
Μείωση θορύβου ADC | X | X | X(1) | X | X | X | X | |||||
Διακοπή ρεύματος | X(1) | X | X |
Σημείωση: Για το INT0, μόνο διακοπή επιπέδου.
Για να εισέλθετε σε οποιαδήποτε από τις τρεις καταστάσεις αναστολής λειτουργίας, το bit SE στο MCUCR πρέπει να γραφτεί στο λογικό ένα και πρέπει να εκτελεστεί μια εντολή SLEEP. Τα bit SM[1:0] στον καταχωρητή MCUCR επιλέγουν ποια κατάσταση αναστολής λειτουργίας (Αδράνεια, Μείωση θορύβου ADC ή Απενεργοποίηση) θα ενεργοποιηθεί από την εντολή SLEEP. Βλέπω Πίνακας 7-2 για μια περίληψη.
Εάν προκύψει μια ενεργοποιημένη διακοπή ενώ η MCU βρίσκεται σε κατάσταση αναστολής λειτουργίας, η MCU ξυπνά. Στη συνέχεια, το MCU διακόπτεται για τέσσερις κύκλους επιπλέον του χρόνου εκκίνησης, εκτελεί τη ρουτίνα διακοπής και συνεχίζει την εκτέλεση από την εντολή μετά το SLEEP. Τα περιεχόμενα του Μητρώου File και η SRAM δεν αλλάζουν όταν η συσκευή ξυπνά από τον ύπνο. Εάν συμβεί επαναφορά κατά τη λειτουργία αναστολής λειτουργίας, το MCU ξυπνά και εκτελείται από το Reset Vector.
Σημείωση: ότι εάν μια διακοπή ενεργοποιημένης στάθμης χρησιμοποιείται για αφύπνιση, το αλλαγμένο επίπεδο πρέπει να παραμείνει για κάποιο χρονικό διάστημα για να αφυπνιστεί η MCU (και για να εισέλθει η MCU στη ρουτίνα υπηρεσίας διακοπής). Βλέπω «Εξωτερικές διακοπές» στη σελίδα 49 για λεπτομέρειες.
Λειτουργία αδράνειας
Όταν τα bit SM[1:0] γράφονται στο 00, η εντολή SLEEP κάνει το MCU να εισέλθει σε κατάσταση αδράνειας, σταματώντας τη CPU αλλά επιτρέποντας στους Analog Comparator, ADC, USI, Timer/Counter, Watchdog και στο σύστημα διακοπής να συνεχίσουν να λειτουργούν τρώγοντας. Αυτή η κατάσταση αναστολής λειτουργίας ουσιαστικά σταματά το clkCPU και το clkFLASH, ενώ επιτρέπει στα άλλα ρολόγια να λειτουργούν.
Η κατάσταση αδράνειας επιτρέπει στο MCU να αφυπνίζεται από εξωτερικές ενεργοποιημένες διακοπές καθώς και από εσωτερικές, όπως το Timer Overflow. Εάν δεν απαιτείται αφύπνιση από τη διακοπή του Αναλογικού Συγκριτή, ο Αναλογικός Συγκριτής μπορεί να απενεργοποιηθεί ρυθμίζοντας το bit ACD στο «ACSR – Analog Comparator Control and Status Register» στη σελίδα 120. Αυτό θα μειώσει την κατανάλωση ενέργειας στην κατάσταση αναμονής. Εάν το ADC είναι ενεργοποιημένο, μια μετατροπή ξεκινά αυτόματα όταν εισέλθει σε αυτήν τη λειτουργία.
Λειτουργία μείωσης θορύβου ADC
Όταν τα bit SM[1:0] γράφονται στο 01, η εντολή SLEEP κάνει το MCU να εισέλθει σε λειτουργία μείωσης θορύβου ADC, σταματώντας τη CPU αλλά επιτρέποντας στο ADC, στις εξωτερικές διακοπές και στο Watchdog να συνεχίσουν να λειτουργούν (αν είναι ενεργοποιημένο). Αυτή η κατάσταση αναστολής λειτουργίας σταματά τα clkI/O, clkCPU και clkFLASH, ενώ επιτρέπει στα άλλα ρολόγια να λειτουργούν.
Αυτό βελτιώνει το περιβάλλον θορύβου για το ADC, επιτρέποντας μετρήσεις υψηλότερης ανάλυσης. Εάν το ADC είναι ενεργοποιημένο, μια μετατροπή ξεκινά αυτόματα όταν εισέλθει σε αυτήν τη λειτουργία. Εκτός από τη διακοπή ολοκλήρωσης μετατροπής ADC, μόνο μια εξωτερική επαναφορά, μια επαναφορά Watchdog, μια επαναφορά Brown-out, μια διακοπή ετοιμότητας SPM/EEPROM, μια διακοπή εξωτερικού επιπέδου στο INT0 ή μια διακοπή αλλαγής ακίδας μπορούν να αφυπνίσουν το MCU από τη μείωση θορύβου ADC τρόπος.
Λειτουργία απενεργοποίησης
Όταν τα bit SM[1:0] είναι γραμμένα σε 10, η εντολή SLEEP κάνει το MCU να εισέλθει σε λειτουργία απενεργοποίησης. Σε αυτή τη λειτουργία, ο Ταλαντωτής διακόπτεται, ενώ οι εξωτερικές διακοπές, η ανίχνευση συνθηκών εκκίνησης USI και το Watchdog συνεχίζουν να λειτουργούν (αν είναι ενεργοποιημένο). Μόνο μια εξωτερική επαναφορά, μια επαναφορά Watchdog, μια επαναφορά Brown-out, μια διακοπή συνθήκης έναρξης USI, μια διακοπή εξωτερικού επιπέδου στο INT0 ή μια διακοπή αλλαγής ακίδας μπορούν να αφυπνίσουν το MCU. Αυτή η κατάσταση αναστολής λειτουργίας σταματά όλα τα ρολόγια που δημιουργούνται, επιτρέποντας τη λειτουργία μόνο ασύγχρονων μονάδων.
Απενεργοποίηση BOD λογισμικού
Όταν ο Brown-out Detector (BOD) είναι ενεργοποιημένος από τις ασφάλειες BODLEVEL (βλ. Πίνακας 20-4 στη σελίδα 148), το ΔΣ παρακολουθεί ενεργά την προμήθεια τόμtagε κατά τη διάρκεια μιας περιόδου ύπνου. Σε ορισμένες συσκευές είναι δυνατή η εξοικονόμηση ενέργειας απενεργοποιώντας το BOD από το λογισμικό σε κατάσταση αναστολής λειτουργίας Power-Down. Η κατανάλωση ρεύματος σε κατάσταση αδράνειας θα είναι τότε στο ίδιο επίπεδο όπως όταν το BOD απενεργοποιείται παγκοσμίως από ασφάλειες.
Εάν το BOD είναι απενεργοποιημένο από το λογισμικό, η λειτουργία BOD απενεργοποιείται αμέσως μετά την είσοδο σε κατάσταση αναστολής λειτουργίας. Κατά την αφύπνιση από τον ύπνο, το BOD ενεργοποιείται ξανά αυτόματα. Αυτό διασφαλίζει την ασφαλή λειτουργία σε περίπτωση που το επίπεδο VCC έχει πέσει κατά τη διάρκεια της περιόδου ύπνου.
Όταν το BOD έχει απενεργοποιηθεί, ο χρόνος αφύπνισης από την κατάσταση αναστολής λειτουργίας θα είναι ο ίδιος με αυτόν για την αφύπνιση από το RESET. Ο χρήστης πρέπει να διαμορφώσει χειροκίνητα τους χρόνους αφύπνισης έτσι ώστε η αναφορά bandgap να έχει χρόνο να ξεκινήσει και το BOD να λειτουργεί σωστά προτού το MCU συνεχίσει να εκτελεί τον κώδικα. Δείτε τα bit ασφαλειών SUT[1:0] και CKSEL[3:0] στον πίνακα «Fuse Low Byte» στη σελίδα 149
Η απενεργοποίηση BOD ελέγχεται από το bit BODS (BOD Sleep) του καταχωρητή ελέγχου MCU, βλ. «MCUCR – Έλεγχος MCU Εγγραφή» στη σελίδα 37. Η εγγραφή αυτού του bit σε ένα απενεργοποιεί το BOD στο Power-Down, ενώ η εγγραφή ενός μηδενός διατηρεί το BOD ενεργό. Η προεπιλεγμένη ρύθμιση είναι μηδέν, δηλαδή ενεργό BOD.
Η εγγραφή στο bit BODS ελέγχεται από μια χρονισμένη ακολουθία και ένα bit ενεργοποίησης, βλ. «MCUCR – Μητρώο Ελέγχου MCU- ter» στη σελίδα 37.
Περιορισμοί
Η λειτουργία απενεργοποίησης BOD έχει εφαρμοστεί μόνο στις ακόλουθες συσκευές:
ATtiny25, αναθεώρηση Ε και νεότερη
ATtiny45, αναθεώρηση D και νεότερες
ATtiny85, αναθεώρηση C και νεότερη
Οι αναθεωρήσεις επισημαίνονται στο πακέτο της συσκευής και μπορούν να εντοπιστούν ως εξής:
Κάτω πλευρά των πακέτων 8P3 και 8S2
Επάνω πλευρά συσκευασίας 20M1
Μητρώο μείωσης ισχύος
Το μητρώο μείωσης ισχύος (PRR), βλ «PRR – Καταχωρητής μείωσης ισχύος» στη σελίδα 38, παρέχει μια μέθοδο μείωσης της κατανάλωσης ενέργειας σταματώντας το ρολόι σε μεμονωμένα περιφερειακά. Η τρέχουσα κατάσταση της περιφερειακής συσκευής έχει παγώσει και οι καταχωρητές I/O δεν μπορούν να διαβαστούν ή να εγγραφούν. Οι πόροι που χρησιμοποιούνται από το περιφερειακό όταν σταματά το ρολόι θα παραμείνουν κατειλημμένοι, επομένως το περιφερειακό θα πρέπει στις περισσότερες περιπτώσεις να απενεργοποιείται πριν σταματήσει το ρολόι. Η αφύπνιση μιας μονάδας, η οποία γίνεται με την εκκαθάριση του bit στο PRR, θέτει τη μονάδα στην ίδια κατάσταση όπως πριν από τον τερματισμό λειτουργίας.
Ο τερματισμός της μονάδας μπορεί να χρησιμοποιηθεί σε κατάσταση αναμονής και σε λειτουργία ενεργού για να μειώσει σημαντικά τη συνολική κατανάλωση ενέργειας. Σε όλες τις άλλες λειτουργίες ύπνου, το ρολόι έχει ήδη σταματήσει. Βλέπω «Ρεύμα τροφοδοσίας μονάδων I/O» στη σελίδα 177 για π.χamples.
Ελαχιστοποίηση της κατανάλωσης ενέργειας
Υπάρχουν πολλά ζητήματα που πρέπει να λάβετε υπόψη όταν προσπαθείτε να ελαχιστοποιήσετε την κατανάλωση ενέργειας σε ένα σύστημα ελεγχόμενο AVR. Γενικά, οι λειτουργίες αναστολής λειτουργίας θα πρέπει να χρησιμοποιούνται όσο το δυνατόν περισσότερο και η λειτουργία ύπνου θα πρέπει να επιλέγεται έτσι ώστε να λειτουργούν όσο το δυνατόν λιγότερες από τις λειτουργίες της συσκευής. Όλες οι λειτουργίες που δεν χρειάζονται πρέπει να απενεργοποιηθούν. Ειδικότερα, οι ακόλουθες μονάδες ενδέχεται να χρειάζονται ιδιαίτερη προσοχή όταν προσπαθείτε να επιτύχετε τη χαμηλότερη δυνατή κατανάλωση ενέργειας.
Μετατροπέας αναλογικού σε ψηφιακό
Εάν είναι ενεργοποιημένο, το ADC θα ενεργοποιηθεί σε όλες τις καταστάσεις αδράνειας. Για εξοικονόμηση ενέργειας, το ADC θα πρέπει να απενεργοποιηθεί πριν μπείτε σε οποιαδήποτε κατάσταση αναστολής λειτουργίας. Όταν το ADC απενεργοποιηθεί και ενεργοποιηθεί ξανά, η επόμενη μετατροπή θα είναι μια εκτεταμένη μετατροπή. Παραπέμπω «Αναλογικός σε ψηφιακός μετατροπέας» στη σελίδα 122 για λεπτομέρειες σχετικά με τη λειτουργία ADC.
Αναλογικός Συγκριτής
Κατά την είσοδο σε κατάσταση αναμονής, ο Αναλογικός Συγκριτής θα πρέπει να απενεργοποιηθεί εάν δεν χρησιμοποιείται. Κατά την είσοδο στη λειτουργία μείωσης θορύβου ADC, ο Αναλογικός Συγκριτής θα πρέπει να είναι απενεργοποιημένος. Στις άλλες καταστάσεις ύπνου, ο Αναλογικός Συγκριτής απενεργοποιείται αυτόματα. Ωστόσο, εάν ο Αναλογικός Συγκριτής έχει ρυθμιστεί για χρήση του Internal Voltage Αναφορά ως είσοδο, ο Αναλογικός Συγκριτής θα πρέπει να είναι απενεργοποιημένος σε όλες τις καταστάσεις αδράνειας. Διαφορετικά, το Internal Voltage Η αναφορά θα ενεργοποιηθεί, ανεξάρτητα από την κατάσταση αναστολής λειτουργίας. Παραπέμπω «Αναλογικός Συγκριτής» στη σελίδα 119 για λεπτομέρειες σχετικά με τον τρόπο διαμόρφωσης του Αναλογικού Συγκριτή.
Ανιχνευτής καφέ εξόδου
Εάν ο ανιχνευτής καφέ εξόδου δεν χρειάζεται στην εφαρμογή, αυτή η μονάδα θα πρέπει να απενεργοποιηθεί. Εάν ο Ανιχνευτής Brown-out είναι ενεργοποιημένος από τις Ασφάλειες BODLEVEL, θα ενεργοποιηθεί σε όλες τις καταστάσεις αδράνειας και, ως εκ τούτου, θα καταναλώνει πάντα ρεύμα. Στις βαθύτερες λειτουργίες ύπνου, αυτό θα συμβάλει σημαντικά στη συνολική κατανάλωση ρεύματος. Βλέπω «Καφέ ανιχνευτής- tion» στη σελίδα 41 και «Software BOD Disable» στη σελίδα 35 για λεπτομέρειες σχετικά με τον τρόπο διαμόρφωσης του Brown-out Detector.
Εσωτερικός τόμοςtagε Αναφορά
The Internal Voltage Η αναφορά θα ενεργοποιηθεί όταν χρειάζεται από το Brown-out Detection, τον Analog Comparator ή το ADC. Εάν αυτές οι μονάδες είναι απενεργοποιημένες όπως περιγράφεται στις παραπάνω ενότητες, η εσωτερική τομtagΗ αναφορά θα απενεργοποιηθεί και δεν θα καταναλώνει ρεύμα. Όταν ενεργοποιηθεί ξανά, ο χρήστης πρέπει να επιτρέψει την εκκίνηση της αναφοράς πριν χρησιμοποιηθεί η έξοδος. Εάν η αναφορά παραμένει ενεργοποιημένη σε κατάσταση αναστολής λειτουργίας, η έξοδος μπορεί να χρησιμοποιηθεί αμέσως. Παραπέμπω «Internal Voltage Reference» στη σελίδα 42 για λεπτομέρειες σχετικά με τον χρόνο εκκίνησης.
Watchdog Timer
Εάν το Watchdog Timer δεν χρειάζεται στην εφαρμογή, αυτή η ενότητα θα πρέπει να απενεργοποιηθεί. Εάν το Watchdog Timer είναι ενεργοποιημένο, θα είναι ενεργοποιημένο σε όλες τις λειτουργίες ύπνου και, ως εκ τούτου, θα καταναλώνει πάντα ρεύμα. Στις βαθύτερες λειτουργίες ύπνου, αυτό θα συμβάλει σημαντικά στη συνολική κατανάλωση ρεύματος. Παραπέμπω «Watchdog Timer» στη σελίδα 42 για λεπτομέρειες σχετικά με τον τρόπο διαμόρφωσης του χρονοδιακόπτη Watchdog.
Καρφίτσες θυρών
Όταν μπαίνετε σε κατάσταση αναστολής λειτουργίας, όλες οι ακίδες θυρών θα πρέπει να ρυθμιστούν ώστε να χρησιμοποιούν ελάχιστη ισχύ. Το πιο σημαντικό πράγμα είναι τότε να διασφαλίσετε ότι κανένας ακροδέκτης δεν οδηγεί σε φορτία αντίστασης. Σε καταστάσεις αναστολής λειτουργίας όπου τόσο το ρολόι I/O (clkI/O) όσο και το ρολόι ADC (clkADC) έχουν σταματήσει, τα buffer εισόδου της συσκευής θα απενεργοποιηθούν. Αυτό διασφαλίζει ότι δεν καταναλώνεται ρεύμα
με τη λογική εισόδου όταν δεν χρειάζεται. Σε ορισμένες περιπτώσεις, η λογική εισόδου απαιτείται για τον εντοπισμό συνθηκών αφύπνισης και
τότε θα ενεργοποιηθεί. Ανατρέξτε στην ενότητα «Ενεργοποίηση ψηφιακής εισόδου και λειτουργίες αδράνειας» στη σελίδα 57 για λεπτομέρειες σχετικά με το ποια pins είναι ενεργοποιημένα. Εάν η προσωρινή μνήμη εισόδου είναι ενεργοποιημένη και το σήμα εισόδου παραμείνει αιωρούμενο ή έχει επίπεδο αναλογικού σήματος κοντά στο VCC/2, η προσωρινή μνήμη εισόδου θα χρησιμοποιεί υπερβολική ισχύ.
Για τις ακίδες αναλογικής εισόδου, η προσωρινή μνήμη ψηφιακής εισόδου θα πρέπει να είναι πάντα απενεργοποιημένη. Μια στάθμη αναλογικού σήματος κοντά στο VCC/2 σε μια ακίδα εισόδου μπορεί να προκαλέσει σημαντικό ρεύμα ακόμα και σε ενεργή λειτουργία. Τα buffer ψηφιακής εισόδου μπορούν να απενεργοποιηθούν γράφοντας στο Digital Input Disable Register (DIDR0). Παραπέμπω «DIDR0 – Digital Input Disable Register 0» στη σελίδα 121 για λεπτομέρειες.
Εγγραφή Περιγραφή
MCUCR – Μητρώο ελέγχου MCU
Ο καταχωρητής ελέγχου MCU περιέχει bit ελέγχου για διαχείριση ενέργειας.
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | Δ.Σ | ΠΟΥΤΙΓΚΑ | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Διαβάστε/Γράψτε | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Αρχική Αξία | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7 – BODS: BOD Sleep
Η λειτουργία απενεργοποίησης BOD είναι διαθέσιμη μόνο σε ορισμένες συσκευές. Βλέπω «Περιορισμοί» στη σελίδα 36.
Για να απενεργοποιήσετε το BOD κατά τη διάρκεια του ύπνου (βλ Πίνακας 7-1 στη σελίδα 34) το bit BODS πρέπει να γραφτεί στο λογικό ένα. Αυτό ελέγχεται από μια χρονισμένη ακολουθία και το bit ενεργοποίησης, BODSE στο MCUCR. Πρώτον, τόσο το BODS όσο και το BODSE πρέπει να οριστούν σε ένα. Δεύτερον, μέσα σε τέσσερις κύκλους ρολογιού, το BODS πρέπει να οριστεί σε ένα και το BODSE πρέπει να μηδενιστεί. Το bit BODS είναι ενεργό τρεις κύκλους ρολογιού αφού ρυθμιστεί. Πρέπει να εκτελεστεί μια εντολή ύπνου ενώ το BODS είναι ενεργό για να απενεργοποιηθεί το BOD για την πραγματική κατάσταση ύπνου. Το bit BODS διαγράφεται αυτόματα μετά από τρεις κύκλους ρολογιού.
Σε συσκευές όπου το Sleeping BOD δεν έχει εφαρμοστεί αυτό το bit δεν χρησιμοποιείται και θα δείχνει πάντα μηδέν.
Bit 5 – SE: Sleep Enable
Το bit SE πρέπει να γραφτεί στο λογικό 1 για να τεθεί το MCU σε κατάσταση αναστολής λειτουργίας όταν εκτελείται η εντολή SLEEP. Για να αποφύγετε την είσοδο του MCU σε κατάσταση αναστολής λειτουργίας, εκτός εάν είναι ο σκοπός του προγραμματιστή, συνιστάται να γράψετε το bit Sleep Enable (SE) σε ένα ακριβώς πριν από την εκτέλεση της εντολής SLEEP και να το διαγράψετε αμέσως μετά την αφύπνιση.
Bits 4:3 – SM[1:0]: Λειτουργία ύπνου Επιλέξτε Bits 1 και 0
Αυτά τα bit επιλέγουν μεταξύ των τριών διαθέσιμων λειτουργιών ύπνου, όπως φαίνεται στο Πίνακας 7-2.
Πίνακας 7-2. Επιλογή κατάστασης ύπνου
SM1 | SM0 | Λειτουργία ύπνου |
0 | 0 | Αεργος |
0 | 1 | Μείωση θορύβου ADC |
1 | 0 | Διακοπή ρεύματος |
1 | 1 | Ρεζερβέ |
Bit 2 – BODSE: BOD Sleep Enable
Η λειτουργία απενεργοποίησης BOD είναι διαθέσιμη μόνο σε ορισμένες συσκευές. Βλέπω «Περιορισμοί» στη σελίδα 36.
Το bit BODSE επιτρέπει τη ρύθμιση του bit ελέγχου BODS, όπως εξηγείται στην περιγραφή του bit BODS. Η απενεργοποίηση BOD ελέγχεται από μια χρονισμένη ακολουθία.
Αυτό το bit δεν χρησιμοποιείται σε συσκευές όπου η απενεργοποίηση BOD λογισμικού δεν έχει εφαρμοστεί και θα διαβάζεται ως μηδέν σε αυτές τις συσκευές.
PRR – Μητρώο μείωσης ισχύος
Ο καταχωρητής μείωσης ισχύος παρέχει μια μέθοδο μείωσης της κατανάλωσης ενέργειας επιτρέποντας την απενεργοποίηση των περιφερειακών σημάτων ρολογιού.
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 | – | – | – | – | PRTIM1 | PRTIM0 | ΠΡΟΥΣΙ | PRADC | PRR |
Διαβάστε/Γράψτε | R | R | R | R | R/W | R/W | R/W | R/W | |
Αρχική Αξία | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7:4 – Απάντηση: Reserved Bits
Αυτά τα bit είναι δεσμευμένα bit στο ATtiny25/45/85 και θα διαβάζονται πάντα ως μηδέν.
Bit 3 – PRTIM1: Χρονοδιακόπτης μείωσης ισχύος/Μετρητής1
Η εγγραφή ενός λογικού σε αυτό το bit κλείνει τη λειτουργική μονάδα Timer/Counter1. Όταν το Timer/Counter1 είναι ενεργοποιημένο, η λειτουργία θα συνεχιστεί όπως πριν από τον τερματισμό.
Bit 2 – PRTIM0: Χρονοδιακόπτης μείωσης ισχύος/Μετρητής0
Η εγγραφή ενός λογικού σε αυτό το bit κλείνει τη λειτουργική μονάδα Timer/Counter0. Όταν το Timer/Counter0 είναι ενεργοποιημένο, η λειτουργία θα συνεχιστεί όπως πριν από τον τερματισμό.
Bit 1 – PRUSI: Power Reduction USI
Η εγγραφή ενός λογικού σε αυτό το bit κλείνει το USI σταματώντας το ρολόι στη μονάδα. Κατά την εκ νέου αφύπνιση του USI, το USI θα πρέπει να προετοιμαστεί εκ νέου για να διασφαλιστεί η σωστή λειτουργία του.
Bit 0 – PRADC: ADC μείωσης ισχύος
Η εγγραφή ενός λογικού σε αυτό το bit κλείνει το ADC. Το ADC πρέπει να απενεργοποιηθεί πριν τερματιστεί η λειτουργία του. Σημειώστε ότι το ρολόι ADC χρησιμοποιείται επίσης από ορισμένα μέρη του αναλογικού συγκριτή, πράγμα που σημαίνει ότι ο αναλογικός συγκριτής δεν μπορεί να χρησιμοποιηθεί όταν αυτό το bit είναι υψηλό.
Έλεγχος και επαναφορά συστήματος
Επαναφορά του AVR
Κατά τη διάρκεια της επαναφοράς, όλοι οι καταχωρητές εισόδου/εξόδου ρυθμίζονται στις αρχικές τους τιμές και το πρόγραμμα ξεκινά την εκτέλεση από το διάνυσμα επαναφοράς. Η οδηγία που τοποθετείται στο διάνυσμα επαναφοράς πρέπει να είναι μια οδηγία RJMP – Σχετικό άλμα – στη ρουτίνα χειρισμού επαναφοράς. Εάν το πρόγραμμα δεν ενεργοποιήσει ποτέ μια πηγή διακοπής, τα διανύσματα διακοπής δεν χρησιμοποιούνται και ο κανονικός κώδικας προγράμματος μπορεί να τοποθετηθεί σε αυτές τις θέσεις. Το διάγραμμα κυκλώματος σε Εικόνα 8-1 δείχνει τη λογική επαναφοράς. Δίνονται οι ηλεκτρικές παράμετροι του κυκλώματος επαναφοράς «Χαρακτηριστικά συστήματος και επαναφοράς» στη σελίδα 165.
Εικόνα 8-1 Επαναφορά λογικής
Οι θύρες I/O του AVR επαναφέρονται αμέσως στην αρχική τους κατάσταση όταν ενεργοποιηθεί μια πηγή επαναφοράς. Αυτό δεν απαιτεί να εκτελείται καμία πηγή ρολογιού.
Αφού όλες οι πηγές επαναφοράς είναι ανενεργές, καλείται ένας μετρητής καθυστέρησης, ο οποίος επεκτείνει την εσωτερική επαναφορά. Αυτό επιτρέπει στην ισχύ να φτάσει σε ένα σταθερό επίπεδο πριν ξεκινήσει η κανονική λειτουργία. Η περίοδος λήξης του μετρητή καθυστέρησης ορίζεται από τον χρήστη μέσω των ασφαλειών SUT και CKSEL. Οι διαφορετικές επιλογές για την περίοδο καθυστέρησης παρουσιάζονται στο "Ρολόι Πηγές» στη σελίδα 25.
Επαναφορά πηγών
Το ATtiny25/45/85 έχει τέσσερις πηγές επαναφοράς:
Επαναφορά ενεργοποίησης. Το MCU μηδενίζεται όταν η τροφοδοσία voltage είναι κάτω από το όριο επαναφοράς ενεργοποίησης (VPOT).
Εξωτερική επαναφορά. Το MCU μηδενίζεται όταν υπάρχει χαμηλό επίπεδο στον ακροδέκτη RESET για μεγαλύτερο από το ελάχιστο μήκος παλμού.
Επαναφορά Watchdog. Το MCU επαναφέρεται όταν λήξει η περίοδος Watchdog Timer και ενεργοποιηθεί το Watchdog.
Brown-out Reset. Το MCU μηδενίζεται όταν η τροφοδοσία voltage VCC είναι κάτω από το όριο Brown-out Reset (VBOT) και ο Brown-out Detector είναι ενεργοποιημένος.
Επαναφορά ενεργοποίησης
Ένας παλμός Power-on Reset (POR) δημιουργείται από ένα κύκλωμα ανίχνευσης On-chip. Το επίπεδο ανίχνευσης ορίζεται στο "Συς- tem και Reset Characteristics» στη σελίδα 165. Το POR ενεργοποιείται κάθε φορά που το VCC είναι κάτω από το επίπεδο ανίχνευσης. Το κύκλωμα POR μπορεί να χρησιμοποιηθεί για την ενεργοποίηση της επαναφοράς εκκίνησης, καθώς και για την ανίχνευση βλάβης στον όγκο τροφοδοσίαςtage.
Ένα κύκλωμα Power-on Reset (POR) διασφαλίζει ότι η συσκευή επαναφέρεται από την ενεργοποίηση. Επίτευξη του ορίου επαναφοράς ενεργοποίησης voltagΤο e καλεί τον μετρητή καθυστέρησης, ο οποίος καθορίζει πόσο καιρό η συσκευή θα παραμείνει σε RESET μετά την άνοδο του VCC. Το σήμα RESET ενεργοποιείται ξανά, χωρίς καθυστέρηση, όταν το VCC μειωθεί κάτω από το επίπεδο ανίχνευσης.
Εικόνα 8-2. Εκκίνηση MCU, RESET Συνδεδεμένο με VCC
ΕΣΩΤΕΡΙΚΗ ΕΠΑΝΑΦΟΡΑ
Εικόνα 8-3. Εκκίνηση MCU, RESET Extended Externally
Εξωτερική επαναφορά
Μια εξωτερική επαναφορά δημιουργείται από ένα χαμηλό επίπεδο στον ακροδέκτη RESET, εάν είναι ενεργοποιημένο. Επαναφέρετε παλμούς μεγαλύτερους από το ελάχιστο πλάτος παλμού (βλ «Χαρακτηριστικά συστήματος και επαναφοράς» στη σελίδα 165) θα δημιουργήσει επαναφορά, ακόμα κι αν το ρολόι δεν λειτουργεί. Οι μικρότεροι παλμοί δεν είναι εγγυημένο ότι θα δημιουργήσουν επαναφορά. Όταν το εφαρμοζόμενο σήμα φτάσει στο Reset Threshold Voltage – VRST – στο θετικό άκρο του, ο μετρητής καθυστέρησης ξεκινά τη MCU μετά τη λήξη της περιόδου Time-out.
Εικόνα 8-4. Εξωτερική επαναφορά κατά τη λειτουργία
Brown-out Detection
Το ATtiny25/45/85 διαθέτει κύκλωμα On-chip Brown-out Detection (BOD) για την παρακολούθηση του επιπέδου VCC κατά τη λειτουργία συγκρίνοντάς το με ένα σταθερό επίπεδο σκανδάλης. Το επίπεδο σκανδάλης για το BOD μπορεί να επιλεγεί από τις Ασφάλειες BODLEVEL. Το επίπεδο σκανδάλης έχει μια υστέρηση για να διασφαλίσει ανίχνευση καφέ έξω χωρίς ακίδες. Η υστέρηση στο επίπεδο ανίχνευσης θα πρέπει να ερμηνευτεί ως VBOT+ = VBOT + VHYST/2 και VBOT- = VBOT – VHYST/2.
Όταν το BOD είναι ενεργοποιημένο και το VCC μειώνεται σε τιμή κάτω από το επίπεδο ενεργοποίησης (VBOT-in Εικόνα 8-5), το Brown-out Reset ενεργοποιείται αμέσως. Όταν το VCC αυξάνεται πάνω από το επίπεδο σκανδάλης (VBOT+ in Εικόνα 8-5), ο μετρητής καθυστέρησης ξεκινά το MCU μετά τη λήξη της περιόδου χρονικού ορίου tTOUT.
Το κύκλωμα BOD θα ανιχνεύσει μια πτώση στο VCC μόνο εάν το voltagΤο e παραμένει κάτω από το επίπεδο ενεργοποίησης για περισσότερο από το tBOD που δίνεται «Χαρακτηριστικά συστήματος και επαναφοράς» στη σελίδα 165.
Επαναφορά Watchdog
Όταν λήξει το χρονικό όριο του Watchdog, θα δημιουργήσει έναν σύντομο παλμό επαναφοράς διάρκειας ενός κύκλου CK. Στην πτώση αυτού του παλμού, ο χρονοδιακόπτης καθυστέρησης αρχίζει να μετράει την περίοδο χρονικού ορίου tTOUT. Παραπέμπω «Watchdog Timer» στη σελίδα 42 για λεπτομέρειες σχετικά με τη λειτουργία του Watchdog Timer.
Τομtage Σήματα ενεργοποίησης αναφοράς και χρόνος εκκίνησης
Ο τόμοςtagΗ αναφορά έχει χρόνο εκκίνησης που μπορεί να επηρεάσει τον τρόπο χρήσης της. Ο χρόνος εκκίνησης δίνεται «Χαρακτηριστικά συστήματος και επαναφοράς» στη σελίδα 165. Για εξοικονόμηση ενέργειας, η αναφορά δεν είναι πάντα ενεργοποιημένη. Η αναφορά είναι ενεργοποιημένη στις ακόλουθες περιπτώσεις:
Όταν το BOD είναι ενεργοποιημένο (προγραμματίζοντας τα μπιτ ασφαλειών BODLEVEL[2:0]).
Όταν η αναφορά bandgap είναι συνδεδεμένη στον Αναλογικό Συγκριτή (ρυθμίζοντας το bit ACBG στο ACSR).
Όταν το ADC είναι ενεργοποιημένο.
Έτσι, όταν το BOD δεν είναι ενεργοποιημένο, μετά τη ρύθμιση του bit ACBG ή την ενεργοποίηση του ADC, ο χρήστης πρέπει πάντα να επιτρέπει την εκκίνηση της αναφοράς πριν χρησιμοποιηθεί η έξοδος από τον Αναλογικό Συγκριτή ή το ADC. Για να μειώσει την κατανάλωση ρεύματος στη λειτουργία απενεργοποίησης, ο χρήστης μπορεί να αποφύγει τις τρεις παραπάνω συνθήκες για να διασφαλίσει ότι η αναφορά είναι απενεργοποιημένη πριν εισέλθει στη λειτουργία απενεργοποίησης.
Watchdog Timer
Το Watchdog Timer είναι χρονισμένο από έναν On-chip Oscillator που τρέχει στα 128 kHz. Με τον έλεγχο του προκλιμακωτή χρονοδιακόπτη Watchdog, το διάστημα επαναφοράς Watchdog μπορεί να ρυθμιστεί όπως φαίνεται στο Πίνακας 8-3 στη σελίδα 46. Η οδηγία WDR – Watchdog Reset – επαναφέρει το Watchdog Timer. Ο χρονοδιακόπτης Watchdog επαναφέρεται επίσης όταν είναι απενεργοποιημένος και όταν πραγματοποιείται επαναφορά chip. Μπορούν να επιλεγούν δέκα διαφορετικές περίοδοι κύκλου ρολογιού για να προσδιοριστεί η περίοδος επαναφοράς. Εάν η περίοδος επαναφοράς λήξει χωρίς άλλη επαναφορά Watchdog, το ATtiny25/45/85 επαναφέρει και εκτελείται από το Reset Vector. Για λεπτομέρειες σχετικά με το χρονοδιάγραμμα της Επαναφοράς Watchdog, ανατρέξτε στο Πίνακας 8-3 στη σελίδα 46.
Το Watchdog Timer μπορεί επίσης να ρυθμιστεί ώστε να δημιουργεί διακοπή αντί για επαναφορά. Αυτό μπορεί να είναι πολύ χρήσιμο όταν χρησιμοποιείτε το Watchdog για αφύπνιση από το Power-down.
Για να αποφευχθεί η ακούσια απενεργοποίηση του Watchdog ή η ακούσια αλλαγή του χρονικού ορίου, επιλέγονται δύο διαφορετικά επίπεδα ασφάλειας από την ασφάλεια WDTON όπως φαίνεται στο Πίνακας 8-1 Παραπέμπω «Χρονισμένες ακολουθίες για την αλλαγή του συν- εικονογράφηση του Watchdog Timer» στη σελίδα 43 για λεπτομέρειες.
Πίνακας 8-1. Διαμόρφωση WDT ως συνάρτηση των ρυθμίσεων ασφαλειών του WDTON
WDTON | Επίπεδο Ασφαλείας | Αρχική κατάσταση WDT | Πώς να απενεργοποιήσετε το WDT | Πώς να αλλάξετε το χρονικό όριο |
Απογραμμάτιστος | 1 | Ανάπηρος | Χρονομετρημένη ακολουθία | Χωρίς περιορισμούς |
Προγραμματισμένος | 2 | Ενεργοποιήθηκε | Πάντα ενεργοποιημένο | Χρονομετρημένη ακολουθία |
Εικόνα 8-7. Watchdog Timer
Χρονομετρημένες ακολουθίες για την αλλαγή της διαμόρφωσης του χρονοδιακόπτη Watchdog
Η σειρά για την αλλαγή της διαμόρφωσης διαφέρει ελαφρώς μεταξύ των δύο επιπέδων ασφαλείας. Περιγράφονται ξεχωριστές διαδικασίες για κάθε επίπεδο.
Επίπεδο ασφάλειας 1: Σε αυτήν τη λειτουργία, το Watchdog Timer είναι αρχικά απενεργοποιημένο, αλλά μπορεί να ενεργοποιηθεί γράφοντας το bit WDE σε ένα χωρίς κανέναν περιορισμό. Απαιτείται μια χρονισμένη ακολουθία κατά την απενεργοποίηση ενός ενεργοποιημένου χρονοδιακόπτη Watchdog. Για να απενεργοποιήσετε ένα ενεργοποιημένο Watchdog Timer, πρέπει να ακολουθήσετε την ακόλουθη διαδικασία:
Στην ίδια λειτουργία, γράψτε ένα λογικό στο WDCE και στο WDE. Μια λογική πρέπει να γραφτεί στο WDE ανεξάρτητα από την προηγούμενη τιμή του bit WDE.
Μέσα στους επόμενους τέσσερις κύκλους ρολογιού, στην ίδια λειτουργία, γράψτε τα bit WDE και WDP όπως θέλετε, αλλά με το bit WDCE καθαρό.
Επίπεδο ασφάλειας 2: Σε αυτήν τη λειτουργία, το Watchdog Timer είναι πάντα ενεργοποιημένο και το bit WDE θα διαβάζεται πάντα ως ένα. Απαιτείται μια χρονομετρημένη ακολουθία κατά την αλλαγή της περιόδου χρονικού ορίου του Watchdog. Για να αλλάξετε το Time-out του Watchdog, πρέπει να ακολουθήσετε την ακόλουθη διαδικασία:
Στην ίδια λειτουργία, γράψτε ένα λογικό στα WDCE και WDE. Ακόμα κι αν το WDE πάντα έχει οριστεί, το WDE πρέπει να γραφτεί σε ένα για να ξεκινήσει η χρονισμένη ακολουθία.
Μέσα στους επόμενους τέσσερις κύκλους ρολογιού, στην ίδια λειτουργία, γράψτε τα bit WDP όπως θέλετε, αλλά με το bit WDCE καθαρό. Η τιμή που έχει γραφτεί στο bit WDE είναι άσχετη.
Κωδικός Πρample
Ο παρακάτω κωδικός π.χampΤο le δείχνει ένα συγκρότημα και μια λειτουργία C για την απενεργοποίηση του WDT. Ο πρώηνampΤο le υποθέτει ότι οι διακοπές ελέγχονται (π.χ. με την απενεργοποίηση των διακοπών καθολικά) έτσι ώστε να μην υπάρχουν διακοπές κατά την εκτέλεση αυτών των λειτουργιών.
Κωδικός Συναρμολόγησης Πχample(1) |
WDT_off:
wdr ; Διαγράψτε το WDRF στο MCUSR ldi r16, (0< έξω MCUSR, r16 ; Γράψτε ένα λογικό στο WDCE και στο WDE ; Διατηρήστε την παλιά ρύθμιση prescaler για να αποτρέψετε την ακούσια επαναφορά του Watchdog σε r16, WDTCR ή r16, (1< έξω WDTCR, r16 ; Απενεργοποιήστε το WDT ldi r16, (0< έξω WDTCR, r16 μουσκεύω |
Κωδικός Γ Πχample(1) |
void WDT_off(void)
{ _WDR(); /* Διαγραφή WDRF σε MCUSR */ MCUSR = 0x00 /* Γράψτε μια λογική σε WDCE και WDE */ WDTCR |= (1< /* Απενεργοποίηση WDT */ WDTCR = 0x00; } |
Σημείωση: 1. Βλ «Κωδικός Εξamples» στη σελίδα 6.
Εγγραφή Περιγραφή
MCUSR – Μητρώο κατάστασης MCU
Το μητρώο κατάστασης MCU παρέχει πληροφορίες σχετικά με το ποια πηγή επαναφοράς προκάλεσε επαναφορά MCU.
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | WDRF | BORF | EXTRF | PORF | MCUSR |
Διαβάστε/Γράψτε | R | R | R | R | R/W | R/W | R/W | R/W |
Αρχική τιμή 0 0 0 0 Δείτε την περιγραφή bit
Bits 7:4 – Απάντηση: Reserved Bits
Αυτά τα bit είναι δεσμευμένα bit στο ATtiny25/45/85 και θα διαβάζονται πάντα ως μηδέν.
Bit 3 – WDRF: Watchdog Reset Flag
Αυτό το bit ορίζεται εάν συμβεί επαναφορά του Watchdog. Το bit επαναφέρεται με επαναφορά ενεργοποίησης ή με την εγγραφή ενός λογικού μηδενός στη σημαία.
Bit 2 – BORF: Brown-out Reset Flag
Αυτό το bit ρυθμίζεται εάν προκύψει επαναφορά Brown-out. Το bit επαναφέρεται με επαναφορά ενεργοποίησης ή με την εγγραφή ενός λογικού μηδενός στη σημαία.
Bit 1 – EXTRF: Σημαία εξωτερικής επαναφοράς
Αυτό το bit ορίζεται εάν προκύψει εξωτερική επαναφορά. Το bit επαναφέρεται με επαναφορά ενεργοποίησης ή με την εγγραφή ενός λογικού μηδενός στη σημαία.
Bit 0 – PORF: Σημαία επαναφοράς ενεργοποίησης
Αυτό το bit ρυθμίζεται εάν συμβεί επαναφορά κατά την ενεργοποίηση. Το bit επαναφέρεται μόνο γράφοντας ένα λογικό μηδέν στη σημαία.
Για να κάνει χρήση των σημαιών επαναφοράς για τον προσδιορισμό μιας συνθήκης επαναφοράς, ο χρήστης θα πρέπει να διαβάσει και στη συνέχεια να επαναφέρει το MCUSR όσο το δυνατόν νωρίτερα στο πρόγραμμα. Εάν ο καταχωρητής διαγραφεί πριν πραγματοποιηθεί άλλη επαναφορά, η πηγή της επαναφοράς μπορεί να βρεθεί εξετάζοντας τις σημαίες Επαναφοράς.
WDTCR – Μητρώο ελέγχου χρονοδιακόπτη Watchdog
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x21 | WDIF | WDIE | WDP3 | WDCE | WDE | WDP2 | WDP1 | WDP0 | WDTCR |
Διαβάστε/Γράψτε | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Αρχική Αξία | 0 | 0 | 0 | 0 | X | 0 | 0 | 0 |
Bit 7 – WDIF: Σημαία διακοπής χρονικού ορίου λήξης Watchdog
Αυτό το bit ορίζεται όταν εμφανίζεται ένα χρονικό όριο στο Watchdog Timer και το Watchdog Timer έχει ρυθμιστεί για διακοπή. Το WDIF διαγράφεται από το υλικό κατά την εκτέλεση του αντίστοιχου διανύσματος χειρισμού διακοπών. Εναλλακτικά, το WDIF διαγράφεται γράφοντας ένα λογικό στη σημαία. Όταν οριστεί το I-bit στο SREG και στο WDIE, εκτελείται η διακοπή χρονικού ορίου λήξης του Watchdog.
Bit 6 – WDIE: Ενεργοποίηση διακοπής χρονικού ορίου λήξης Watchdog
Όταν αυτό το bit γραφτεί σε ένα, το WDE διαγράφεται και το I-bit στο μητρώο κατάστασης έχει οριστεί, ενεργοποιείται η διακοπή χρονικού ορίου λήξης του Watchdog. Σε αυτή τη λειτουργία, η αντίστοιχη διακοπή εκτελείται αντί για επαναφορά, εάν παρουσιαστεί ένα χρονικό όριο στο Watchdog Timer.
Εάν έχει οριστεί το WDE, το WDIE διαγράφεται αυτόματα από το υλικό όταν παρουσιαστεί ένα χρονικό όριο. Αυτό είναι χρήσιμο για τη διατήρηση της ασφάλειας του Watchdog Reset κατά τη χρήση της διακοπής. Αφού διαγραφεί το bit WDIE, το επόμενο χρονικό όριο θα δημιουργήσει επαναφορά. Για να αποφευχθεί η επαναφορά του Watchdog, το WDIE πρέπει να ρυθμίζεται μετά από κάθε διακοπή.
Πίνακας 8-2. Διαμόρφωση χρονοδιακόπτη Watchdog
WDE | WDIE | Watchdog Timer State | Δράση στο Time-out |
0 | 0 | Σταμάτησε | Κανένας |
0 | 1 | Τρέξιμο | Διακοπή |
1 | 0 | Τρέξιμο | Επαναφορά |
1 | 1 | Τρέξιμο | Διακοπή |
Bit 4 – WDCE: Ενεργοποίηση αλλαγής παρακολούθησης
Αυτό το bit πρέπει να οριστεί όταν το bit WDE γράφεται στο λογικό μηδέν. Διαφορετικά, το Watchdog δεν θα απενεργοποιηθεί. Μόλις γραφτεί σε ένα, το υλικό θα διαγράψει αυτό το bit μετά από τέσσερις κύκλους ρολογιού. Ανατρέξτε στην περιγραφή του bit WDE για μια διαδικασία απενεργοποίησης του Watchdog. Αυτό το bit πρέπει επίσης να ρυθμιστεί όταν αλλάζετε τα bit prescaler. Βλέπω «Χρονισμένες Ακολουθίες για την αλλαγή της διαμόρφωσης του χρονοδιακόπτη Watchdog» στη σελίδα 43.
Bit 3 – WDE: Watchdog Enable
Όταν το WDE είναι γραμμένο στο λογικό ένα, το Watchdog Timer είναι ενεργοποιημένο και εάν το WDE είναι γραμμένο στο λογικό μηδέν, η λειτουργία Watchdog Timer είναι απενεργοποιημένη. Το WDE μπορεί να διαγραφεί μόνο εάν το bit WDCE έχει λογικό επίπεδο ένα. Για να απενεργοποιήσετε ένα ενεργοποιημένο Watchdog Timer, πρέπει να ακολουθήσετε την ακόλουθη διαδικασία:
Στην ίδια λειτουργία, γράψτε ένα λογικό στο WDCE και στο WDE. Ένα λογικό πρέπει να γραφτεί στο WDE παρόλο που έχει οριστεί σε ένα πριν ξεκινήσει η λειτουργία απενεργοποίησης.
Μέσα στους επόμενους τέσσερις κύκλους ρολογιού, γράψτε μια λογική 0 στο WDE. Αυτό απενεργοποιεί το Watchdog.
Στο επίπεδο ασφάλειας 2, δεν είναι δυνατή η απενεργοποίηση του Watchdog Timer, ακόμη και με τον αλγόριθμο που περιγράφεται παραπάνω. Βλέπω «Τιμοποιημένες ακολουθίες για την αλλαγή της διαμόρφωσης του χρονοδιακόπτη Watchdog» στη σελίδα 43.
Στο επίπεδο ασφάλειας 1, το WDE παρακάμπτεται από το WDRF στο MCUSR. Βλέπω «MCUSR – Καταχώρηση κατάστασης MCU» στη σελίδα 44 για περιγραφή του WDRF. Αυτό σημαίνει ότι το WDE ορίζεται πάντα όταν έχει οριστεί το WDRF. Για να διαγράψετε το WDE, το WDRF πρέπει να διαγραφεί πριν απενεργοποιήσετε το Watchdog με τη διαδικασία που περιγράφεται παραπάνω. Αυτή η δυνατότητα εξασφαλίζει πολλαπλές επαναφορές σε συνθήκες που προκαλούν αστοχία και ασφαλή εκκίνηση μετά την αποτυχία.
Σημείωση: Εάν ο χρονοδιακόπτης παρακολούθησης δεν πρόκειται να χρησιμοποιηθεί στην εφαρμογή, είναι σημαντικό να ακολουθήσετε μια διαδικασία απενεργοποίησης παρακολούθησης κατά την προετοιμασία της συσκευής. Εάν το Watchdog ενεργοποιηθεί κατά λάθος, π.χampΕάν ο δείκτης διαφυγής ή η κατάσταση καφέ-out, η συσκευή θα επαναρυθμιστεί, η οποία με τη σειρά της θα οδηγήσει σε μια νέα επαναφορά του φύλακα. Για να αποφευχθεί αυτή η κατάσταση, το λογισμικό εφαρμογής θα πρέπει πάντα να διαγράφει τη σημαία WDRF και το bit ελέγχου WDE στη ρουτίνα προετοιμασίας.
Bit 5, 2:0 – WDP[3:0]: Watchdog Timer Prescaler 3, 2, 1 και 0
Τα bit WDP[3:0] καθορίζουν την προκλιμάκωση του Watchdog Timer όταν είναι ενεργοποιημένο το Watchdog Timer. Οι διαφορετικές τιμές προκλιμάκωσης και οι αντίστοιχες περίοδοι λήξης χρόνου εμφανίζονται στο Πίνακας 8-3.
Πίνακας 8-3. Επιλογή προκλιμάκωσης χρονοδιακόπτη Watchdog
WDP3 | WDP2 | WDP1 | WDP0 | Αριθμός κύκλων ταλαντωτή WDT | Τυπικό Time-out σε VCC = 5.0V |
0 | 0 | 0 | 0 | Κύκλοι 2K (2048). | 16 ms |
0 | 0 | 0 | 1 | Κύκλοι 4K (4096). | 32 ms |
0 | 0 | 1 | 0 | Κύκλοι 8K (8192). | 64 ms |
0 | 0 | 1 | 1 | Κύκλοι 16K (16384). | 0.125 δευτ |
0 | 1 | 0 | 0 | Κύκλοι 32K (32764). | 0.25 δευτ |
0 | 1 | 0 | 1 | Κύκλοι 64K (65536). | 0.5 δευτ |
0 | 1 | 1 | 0 | Κύκλοι 128K (131072). | 1.0 δευτ |
0 | 1 | 1 | 1 | Κύκλοι 256K (262144). | 2.0 δευτ |
1 | 0 | 0 | 0 | Κύκλοι 512K (524288). | 4.0 δευτ |
1 | 0 | 0 | 1 | Κύκλοι 1024K (1048576). | 8.0 δευτ |
Πίνακας 8-3. Επιλογή Prescale Timer Watchdog (Συνέχεια)
WDP3 | WDP2 | WDP1 | WDP0 | Αριθμός κύκλων ταλαντωτή WDT | Τυπικό Time-out σε VCC = 5.0V |
1 | 0 | 1 | 0 | Ρεζερβέ(1) | |
1 | 0 | 1 | 1 | ||
1 | 1 | 0 | 0 | ||
1 | 1 | 0 | 1 | ||
1 | 1 | 1 | 0 | ||
1 | 1 | 1 | 1 |
Σημείωση: 1. Εάν επιλεγεί, θα χρησιμοποιηθεί μία από τις έγκυρες ρυθμίσεις κάτω από το 0b1010.
Διακοπές
Αυτή η ενότητα περιγράφει τις ιδιαιτερότητες του χειρισμού διακοπής όπως εκτελείται στο ATtiny25/45/85. Για μια γενική εξήγηση του χειρισμού διακοπής AVR, ανατρέξτε στο «Επαναφορά και χειρισμός διακοπής» στη σελίδα 12.
Διανύσματα διακοπής στο ATtiny25/45/85
Τα διανύσματα διακοπής του ATtiny25/45/85 περιγράφονται στο Πίνακας 9-1παρακάτω.
Πίνακας 9-1. Επαναφορά και Διακοπή διανυσμάτων
Διάνυσμα Αρ. | Διεύθυνση προγράμματος | Πηγή | Ορισμός διακοπής |
1 | 0x0000 | ΕΠΑΝΑΦΟΡΑ | External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset |
2 | 0x0001 | INT0 | Αίτημα εξωτερικής διακοπής 0 |
3 | 0x0002 | PCINT0 | Αίτημα διακοπής αλλαγής καρφίτσας 0 |
4 | 0x0003 | TIMER1_COMPA | Χρονόμετρο/Μετρητής1 Σύγκριση Ταίριασμα Α |
5 | 0x0004 | TIMER1_OVF | Χρονοδιακόπτης/Μετρητής1 Υπερχείλιση |
6 | 0x0005 | TIMER0_OVF | Χρονοδιακόπτης/Μετρητής0 Υπερχείλιση |
7 | 0x0006 | EE_RDY | Έτοιμο EEPROM |
8 | 0x0007 | ANA_COMP | Αναλογικός Συγκριτής |
9 | 0x0008 | ADC | Η μετατροπή ADC ολοκληρώθηκε |
10 | 0x0009 | TIMER1_COMPB | Χρονόμετρο/Μετρητής1 Σύγκριση Ταίριασμα Β |
11 | 0x000A | TIMER0_COMPA | Χρονόμετρο/Μετρητής0 Σύγκριση Ταίριασμα Α |
12 | 0x000B | TIMER0_COMPB | Χρονόμετρο/Μετρητής0 Σύγκριση Ταίριασμα Β |
13 | 0x000C | WDT | Time-out του Watchdog |
14 | 0x000D | USI_START | USI START |
15 | 0x000E | USI_OVF | Υπερχείλιση USI |
Εάν το πρόγραμμα δεν ενεργοποιήσει ποτέ μια πηγή διακοπής, τα διανύσματα διακοπής δεν χρησιμοποιούνται και ο κανονικός κώδικας προγράμματος μπορεί να τοποθετηθεί σε αυτές τις θέσεις.
Μια τυπική και γενική ρύθμιση για διευθύνσεις διανύσματος διακοπών στο ATtiny25/45/85 εμφανίζεται στο πρόγραμμα example παρακάτω.
Κωδικός Συναρμολόγησης Πχample | ||
.org 0x0000 | ;Ορίστε τη διεύθυνση του επόμενου | δήλωση |
rjmp ΕΠΑΝΑΦΟΡΑ | ; Διεύθυνση 0x0000 | |
rjmp INT0_ISR | ; Διεύθυνση 0x0001 | |
rjmp PCINT0_ISR | ; Διεύθυνση 0x0002 | |
rjmp TIM1_COMPA_ISR | ; Διεύθυνση 0x0003 | |
rjmp TIM1_OVF_ISR | ; Διεύθυνση 0x0004 | |
rjmp TIM0_OVF_ISR | ; Διεύθυνση 0x0005 | |
rjmp EE_RDY_ISR | ; Διεύθυνση 0x0006 | |
rjmp ANA_COMP_ISR | ; Διεύθυνση 0x0007 | |
rjmp ADC_ISR | ; Διεύθυνση 0x0008 | |
rjmp TIM1_COMPB_ISR | ; Διεύθυνση 0x0009 | |
rjmp TIM0_COMPA_ISR | ; Διεύθυνση 0x000A | |
rjmp TIM0_COMPB_ISR | ; Διεύθυνση 0x000B | |
rjmp WDT_ISR | ; Διεύθυνση 0x000C | |
rjmp USI_START_ISR | ; Διεύθυνση 0x000D | |
rjmp USI_OVF_ISR | ; Διεύθυνση 0x000E | |
ΕΠΑΝΑΦΟΡΑ: | ; Έναρξη του κύριου προγράμματος | |
; Διεύθυνση 0x000F | ||
… |
Σημείωση: Βλ «Κωδικός Εξamples» στη σελίδα 6.
Εξωτερικές διακοπές
Οι εξωτερικές διακοπές ενεργοποιούνται από την ακίδα INT0 ή οποιαδήποτε από τις ακίδες PCINT[5:0]. Παρατηρήστε ότι, εάν είναι ενεργοποιημένες, οι διακοπές θα ενεργοποιηθούν ακόμη και αν οι ακίδες INT0 ή PCINT[5:0] έχουν διαμορφωθεί ως έξοδοι. Αυτή η δυνατότητα παρέχει έναν τρόπο δημιουργίας διακοπής λογισμικού. Διακοπές αλλαγής καρφίτσας Το PCI θα ενεργοποιηθεί εάν γίνει εναλλαγή καρφίτσας με ενεργοποιημένο PCINT[5:0]. Το PCMSK Register ελέγχει ποιες ακίδες συμβάλλουν στις διακοπές αλλαγής ακίδων. Οι διακοπές αλλαγής καρφιτσών στο PCINT[5:0] εντοπίζονται ασύγχρονα. Αυτό σημαίνει ότι αυτές οι διακοπές μπορούν να χρησιμοποιηθούν για την αφύπνιση του εξαρτήματος και από καταστάσεις αδράνειας εκτός από την κατάσταση αδράνειας.
Οι διακοπές INT0 μπορούν να προκληθούν από μια πτώση ή ανοδική ακμή ή από χαμηλή στάθμη. Αυτό έχει ρυθμιστεί όπως υποδεικνύεται στις προδιαγραφές για το Μητρώο Ελέγχου MCU – MCUCR. Όταν η διακοπή INT0 είναι ενεργοποιημένη και έχει διαμορφωθεί ως ενεργοποιημένη στάθμη, η διακοπή θα ενεργοποιηθεί όσο η ακίδα παραμένει χαμηλή. Σημειώστε ότι η αναγνώριση των διακοπών της ακμής που πέφτει ή ανέρχεται στο INT0 απαιτεί την παρουσία ενός ρολογιού I/O, που περιγράφεται στο «Συστήματα ρολογιού και η διανομή τους» στο σελίδα 23.
Διακοπή χαμηλού επιπέδου
Μια διακοπή χαμηλού επιπέδου στο INT0 ανιχνεύεται ασύγχρονα. Αυτό σημαίνει ότι αυτή η διακοπή μπορεί να χρησιμοποιηθεί για την αφύπνιση του εξαρτήματος και από καταστάσεις αδράνειας εκτός από την κατάσταση αδράνειας. Το ρολόι εισόδου/εξόδου διακόπτεται σε όλες τις καταστάσεις αδράνειας εκτός από την κατάσταση αδράνειας.
Λάβετε υπόψη ότι εάν χρησιμοποιείται διακοπή ενεργοποίησης στάθμης για αφύπνιση από το Power-down, το απαιτούμενο επίπεδο πρέπει να διατηρηθεί αρκετά ώστε η MCU να ολοκληρώσει την αφύπνιση για να ενεργοποιήσει τη διακοπή επιπέδου. Εάν το επίπεδο εξαφανιστεί πριν από το τέλος του Χρόνου Εκκίνησης, το MCU θα συνεχίσει να αφυπνίζεται, αλλά δεν θα δημιουργηθεί διακοπή. Ο χρόνος εκκίνησης ορίζεται από τις ασφάλειες SUT και CKSEL όπως περιγράφεται στο «Ρολόι συστήματος και Επιλογές ρολογιού» στη σελίδα 23.
Εάν το χαμηλό επίπεδο στον ακροδέκτη διακοπής αφαιρεθεί πριν η συσκευή ξυπνήσει, τότε η εκτέλεση του προγράμματος δεν θα εκτραπεί στη ρουτίνα της υπηρεσίας διακοπής, αλλά θα συνεχιστεί από την οδηγία που ακολουθεί την εντολή SLEEP.
Χρόνος διακοπής αλλαγής καρφίτσας
Ένας πρώηνampΤο χρονοδιάγραμμα μιας διακοπής αλλαγής ακίδας εμφανίζεται στο Εικόνα 9-1.
Εγγραφή Περιγραφή
MCUCR – Μητρώο ελέγχου MCU
Ο εξωτερικός καταχωρητής ελέγχου διακοπής A περιέχει bit ελέγχου για έλεγχο αίσθησης διακοπής.
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | Δ.Σ | ΠΟΥΤΙΓΚΑ | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Διαβάστε/Γράψτε | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Αρχική Αξία | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 1:0 – ISC0[1:0]: Interrupt Sense Control 0 Bit 1 και Bit 0
Η Εξωτερική Διακοπή 0 ενεργοποιείται από την εξωτερική ακίδα INT0 εάν έχει οριστεί η σημαία SREG I και η αντίστοιχη μάσκα διακοπής. Το επίπεδο και τα άκρα στον εξωτερικό πείρο INT0 που ενεργοποιούν τη διακοπή ορίζονται στο Πίνακας 9-2. Η τιμή στην ακίδα INT0 είναι sampled πριν ανιχνεύσει άκρες. Εάν έχει επιλεγεί η διακοπή άκρης ή εναλλαγής, παλμοί που διαρκούν περισσότερο από μία περίοδο ρολογιού θα δημιουργήσουν μια διακοπή. Οι μικρότεροι παλμοί δεν είναι εγγυημένο ότι θα δημιουργήσουν διακοπή. Εάν έχει επιλεγεί η διακοπή χαμηλού επιπέδου, το χαμηλό επίπεδο πρέπει να διατηρηθεί μέχρι την ολοκλήρωση της τρέχουσας εντολής που εκτελείται για να δημιουργηθεί μια διακοπή.
Πίνακας 9-2. Διακοπή 0 Έλεγχος αίσθησης
ISC01 | ISC00 | Περιγραφή |
0 | 0 | Το χαμηλό επίπεδο INT0 δημιουργεί ένα αίτημα διακοπής. |
0 | 1 | Οποιαδήποτε λογική αλλαγή στο INT0 δημιουργεί ένα αίτημα διακοπής. |
1 | 0 | Η πτώση του INT0 δημιουργεί ένα αίτημα διακοπής. |
1 | 1 | Η ανερχόμενη άκρη του INT0 δημιουργεί ένα αίτημα διακοπής. |
GIMSK – Γενικός καταχωρητής μάσκας διακοπής
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | INT0 | PCIE | – | – | – | – | – | GIMSK |
Διαβάστε/Γράψτε | R | R/W | R/W | R | R | R | R | R | |
Αρχική Αξία | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7, 4:0 – Απάντηση: Reserved Bits
Αυτά τα bit είναι δεσμευμένα bit στο ATtiny25/45/85 και θα διαβάζονται πάντα ως μηδέν.
Bit 6 – INT0: Αίτημα εξωτερικής διακοπής 0 Ενεργοποίηση
Όταν το bit INT0 έχει οριστεί (ένα) και το I-bit στον καταχωρητή κατάστασης (SREG) έχει οριστεί (ένα), ενεργοποιείται η διακοπή εξωτερικής καρφίτσας. Τα bit Interrupt Sense Control0 1/0 (ISC01 και ISC00) στον Μητρώο Ελέγχου MCU (MCUCR) καθορίζουν εάν η εξωτερική διακοπή ενεργοποιείται στην ανερχόμενη ή/και καθοδική άκρη της ακίδας INT0 ή στην ανιχνευόμενη στάθμη. Η δραστηριότητα στον ακροδέκτη θα προκαλέσει αίτημα διακοπής ακόμη και αν το INT0 έχει διαμορφωθεί ως έξοδος. Η αντίστοιχη διακοπή του Εξωτερικού Αιτήματος Διακοπής 0 εκτελείται από το Διάνυσμα Διακοπής INT0.
Bit 5 – PCIE: Pin Change Interrupt Enable
Όταν το bit PCIE έχει οριστεί (ένα) και το I-bit στον καταχωρητή κατάστασης (SREG) έχει οριστεί (ένα), ενεργοποιείται η διακοπή αλλαγής ακίδας. Οποιαδήποτε αλλαγή σε οποιοδήποτε ενεργοποιημένο pin PCINT[5:0] θα προκαλέσει διακοπή. Η αντίστοιχη διακοπή του αιτήματος διακοπής αλλαγής καρφίτσας εκτελείται από το διάνυσμα διακοπής PCI. Οι ακίδες PCINT[5:0] ενεργοποιούνται μεμονωμένα από τον καταχωρητή PCMSK0.
GIFR – Γενικό Μητρώο Σημαίας Διακοπής
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3A | – | INTF0 | PCIF | – | – | – | – | – | GIFR |
Διαβάστε/Γράψτε | R | R/W | R/W | R | R | R | R | R | |
Αρχική Αξία | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7, 4:0 – Απάντηση: Reserved Bits
Αυτά τα bit είναι δεσμευμένα bit στο ATtiny25/45/85 και θα διαβάζονται πάντα ως μηδέν.
Bit 6 – INTF0: Σημαία εξωτερικής διακοπής 0
Όταν μια αλλαγή άκρης ή λογικής στον ακροδέκτη INT0 ενεργοποιεί ένα αίτημα διακοπής, το INTF0 γίνεται set (one). Εάν το I-bit στο SREG και το INT0 bit στο GIMSK έχουν οριστεί (ένα), το MCU θα μεταπηδήσει στο αντίστοιχο διάνυσμα διακοπής. Η σημαία διαγράφεται όταν εκτελείται η ρουτίνα διακοπής. Εναλλακτικά, η σημαία μπορεί να διαγραφεί γράφοντας μια λογική σε αυτήν. Αυτή η σημαία διαγράφεται πάντα όταν το INT0 έχει ρυθμιστεί ως διακοπή επιπέδου.
Bit 5 – PCIF: Pin Change Interrupt Flag
Όταν μια αλλαγή λογικής σε οποιαδήποτε καρφίτσα PCINT[5:0] ενεργοποιεί ένα αίτημα διακοπής, το PCIF ορίζεται (ένα). Εάν το I-bit στο SREG και το bit PCIE στο GIMSK έχουν οριστεί (ένα), το MCU θα μεταπηδήσει στο αντίστοιχο διάνυσμα διακοπής. Η σημαία διαγράφεται όταν εκτελείται η ρουτίνα διακοπής. Εναλλακτικά, η σημαία μπορεί να διαγραφεί γράφοντας μια λογική σε αυτήν.
PCMSK – Εγγραφή μάσκας αλλαγής καρφίτσας
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | PCMSK |
Διαβάστε/Γράψτε | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Αρχική Αξία | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7:6 – Απάντηση: Reserved Bits
Αυτά τα bit είναι δεσμευμένα bit στο ATtiny25/45/85 και θα διαβάζονται πάντα ως μηδέν.
Bits 5:0 – PCINT[5:0]: Pin Change Enable Mask 5:0
Κάθε bit PCINT[5:0] επιλέγει εάν η διακοπή αλλαγής ακίδας είναι ενεργοποιημένη στην αντίστοιχη ακίδα I/O. Εάν έχει οριστεί το PCINT[5:0] και έχει οριστεί το bit PCIE στο GIMSK, η διακοπή αλλαγής ακίδας είναι ενεργοποιημένη στην αντίστοιχη ακίδα εισόδου/εξόδου. Εάν το PCINT[5:0] διαγραφεί, η διακοπή αλλαγής ακίδας στην αντίστοιχη ακίδα I/O απενεργοποιείται.
Θύρες I/O
Εισαγωγή
Όλες οι θύρες AVR έχουν πραγματική λειτουργία Read-Modify-Write όταν χρησιμοποιούνται ως γενικές ψηφιακές θύρες I/O. Αυτό σημαίνει ότι η κατεύθυνση μιας ακίδας θύρας μπορεί να αλλάξει χωρίς ακούσια αλλαγή της κατεύθυνσης οποιασδήποτε άλλης ακίδας με τις οδηγίες SBI και CBI. Το ίδιο ισχύει κατά την αλλαγή της τιμής του δίσκου (εάν έχει ρυθμιστεί ως έξοδος) ή την ενεργοποίηση/απενεργοποίηση των αντιστάσεων έλξης (εάν έχουν διαμορφωθεί ως είσοδος). Κάθε buffer εξόδου έχει συμμετρικά χαρακτηριστικά μονάδας δίσκου με υψηλή ικανότητα απορρόφησης και πηγής. Το πρόγραμμα οδήγησης pin είναι αρκετά ισχυρό για να οδηγεί απευθείας τις οθόνες LED. Όλες οι ακίδες θυρών έχουν ξεχωριστά επιλέξιμες αντιστάσεις έλξης με τροφοδοτικόtage αμετάβλητη αντίσταση. Όλες οι ακίδες I/O διαθέτουν διόδους προστασίας τόσο για το VCC όσο και για τη Γείωση, όπως υποδεικνύεται στο Εικόνα 10-1. Παραπέμπω «Ηλεκτρικά χαρακτηριστικά» στη σελίδα 161 για μια πλήρη λίστα παραμέτρων.
Εικόνα 10-1. I/O Pin Iquivalent Schematic
Όλοι οι καταχωρητές και οι αναφορές bit σε αυτήν την ενότητα είναι γραμμένες σε γενική μορφή. Ένα πεζό "x" αντιπροσωπεύει το γράμμα αρίθμησης για τη θύρα και ένα πεζό "n" αντιπροσωπεύει τον αριθμό bit. Ωστόσο, όταν χρησιμοποιείτε τον καταχωρητή ή τον ορισμό bit σε ένα πρόγραμμα, πρέπει να χρησιμοποιείται η ακριβής μορφή. Για π.χample, PORTB3 για το bit αρ. 3 στη Θύρα Β, εδώ τεκμηριώνεται γενικά ως PORTxn. Οι φυσικοί καταχωρητές εισόδου/εξόδου και οι θέσεις bit παρατίθενται στο "Εγγραφή περιγραφής" σε σελίδα 64.
Τρεις θέσεις διευθύνσεων μνήμης I/O έχουν εκχωρηθεί για κάθε θύρα, μία για το Data Register – PORTx, Data Direction Register – DDRx και τα Port Input Pins – PINx. Η θέση εισόδου/εξόδου των ακίδων εισόδου θύρας είναι μόνο για ανάγνωση, ενώ ο καταχωρητής δεδομένων και ο καταχωρητής κατεύθυνσης δεδομένων διαβάζονται/εγγράφονται. Ωστόσο, η εγγραφή ενός λογικού bit από ένα προς ένα στο μητρώο PINx, θα έχει ως αποτέλεσμα την εναλλαγή στο αντίστοιχο bit στο Μητρώο Δεδομένων. Επιπλέον, το Pull-up Disable – PUD bit στο MCUCR απενεργοποιεί τη λειτουργία pull-up για όλες τις ακίδες σε όλες τις θύρες όταν έχει οριστεί.
Η χρήση της θύρας I/O ως General Digital I/O περιγράφεται στο «Θύρες ως γενική ψηφιακή I/O» στη σελίδα 53. Οι περισσότερες ακίδες θύρας πολυπλέκονται με εναλλακτικές λειτουργίες για τα περιφερειακά χαρακτηριστικά της συσκευής. Ο τρόπος με τον οποίο κάθε εναλλακτική λειτουργία παρεμβαίνει στον ακροδέκτη θύρας περιγράφεται στο «Εναλλακτικές λειτουργίες θύρας» στη σελίδα 57. Ανατρέξτε στις μεμονωμένες ενότητες της μονάδας για μια πλήρη περιγραφή των εναλλακτικών λειτουργιών.
Σημειώστε ότι η ενεργοποίηση της εναλλακτικής λειτουργίας ορισμένων από τις ακίδες θύρας δεν επηρεάζει τη χρήση των άλλων ακίδων στη θύρα ως γενικής ψηφιακής εισόδου/εξόδου.
Θύρες ως General Digital I/O
Οι θύρες είναι αμφίδρομες θύρες I/O με προαιρετικά εσωτερικά pull-ups. Εικόνα 10-2 δείχνει μια λειτουργική περιγραφή μιας ακίδας θύρας I/O, που εδώ ονομάζεται γενικά Pxn.
Εικόνα 10-2. General Digital I/O(1)
Διαμόρφωση του Pin
Κάθε pin θύρας αποτελείται από τρία bit καταχωρητή: DDxn, PORTxn και PINxn. Όπως φαίνεται στο "Εγγραφή περιγραφής" σε σελίδα 64, η πρόσβαση στα bit DDxn γίνεται στη διεύθυνση εισόδου/εξόδου DDRx, στα bit PORTxn στη διεύθυνση εισόδου/εξόδου PORTx και στα bit PINxn στη διεύθυνση εισόδου/εξόδου PINx.
Το bit DDxn στον καταχωρητή DDRx επιλέγει την κατεύθυνση αυτού του pin. Εάν το DDxn είναι γραμμένο με λογική ένα, το Pxn διαμορφώνεται ως ακροδέκτης εξόδου. Εάν το DDxn είναι γραμμένο λογικό μηδέν, το Pxn διαμορφώνεται ως ακίδα εισόδου.
Εάν το PORTxn γραφτεί λογικό ένα όταν ο ακροδέκτης έχει διαμορφωθεί ως ακροδέκτης εισόδου, ενεργοποιείται η αντίσταση έλξης. Για να απενεργοποιήσετε την αντίσταση έλξης, το PORTxn πρέπει να γραφεί ως λογικό μηδέν ή η ακίδα πρέπει να διαμορφωθεί ως ακροδέκτης εξόδου. Οι ακίδες της θύρας δηλώνονται τρεις φορές όταν ενεργοποιείται η κατάσταση επαναφοράς, ακόμα κι αν δεν εκτελούνται ρολόγια.
Εάν το PORTxn είναι γραμμένο λογικό ένα όταν ο ακροδέκτης έχει ρυθμιστεί ως ακροδέκτης εξόδου, ο ακροδέκτης θύρας οδηγείται ψηλά (ένα). Εάν το PORTxn είναι γραμμένο λογικό μηδέν όταν ο ακροδέκτης έχει διαμορφωθεί ως ακροδέκτης εξόδου, ο ακροδέκτης θύρας οδηγείται χαμηλά (μηδέν).
Εναλλαγή της καρφίτσας
Η εγγραφή ενός λογικού στο PINxn αλλάζει την τιμή του PORTxn, ανεξάρτητα από την τιμή του DDRxn. Σημειώστε ότι η εντολή SBI μπορεί να χρησιμοποιηθεί για την εναλλαγή ενός μόνο bit σε μια θύρα.
Εναλλαγή μεταξύ εισόδου και εξόδου
Κατά την εναλλαγή μεταξύ τριπλής κατάστασης ({DDxn, PORTxn} = 0b00) και υψηλής εξόδου ({DDxn, PORTxn} = 0b11), μια ενδιάμεση κατάσταση είτε με ενεργοποιημένο το pull-up {DDxn, PORTxn} = 0b01) είτε με χαμηλή έξοδο ({DDxn, PORTxn} = 0b10) πρέπει να προκύψει. Κανονικά, η κατάσταση ενεργοποίησης pull-up είναι πλήρως αποδεκτή, καθώς ένα περιβάλλον υψηλής αντίστασης δεν θα παρατηρήσει τη διαφορά μεταξύ ενός ισχυρού οδηγού και ενός pull-up. Εάν αυτό δεν συμβαίνει, το bit PUD στον καταχωρητή MCUCR μπορεί να ρυθμιστεί ώστε να απενεργοποιεί όλα τα pull-ups σε όλες τις θύρες.
Η εναλλαγή μεταξύ εισόδου με pull-up και εξόδου χαμηλή δημιουργεί το ίδιο πρόβλημα. Ο χρήστης πρέπει να χρησιμοποιήσει είτε την τριπλή κατάσταση ({DDxn, PORTxn} = 0b00) είτε την υψηλή κατάσταση εξόδου ({DDxn, PORTxn} = 0b10) ως ενδιάμεσο βήμα.
Πίνακας 10-1 συνοψίζει τα σήματα ελέγχου για την τιμή της ακίδας.
Πίνακας 10-1. Διαμορφώσεις καρφίτσας θύρας
DDxn | PORTxn | ΠΟΥΤΙΓΚΑ
(στο MCUCR) |
I/O | Τραβήξιμο | Σχόλιο |
0 | 0 | X | Εισαγωγή | Οχι | Tri-state (Hi-Z) |
0 | 1 | 0 | Εισαγωγή | Ναί | Το Pxn θα πηγή ρεύματος εάν είναι ext. τράβηξε χαμηλά. |
0 | 1 | 1 | Εισαγωγή | Οχι | Tri-state (Hi-Z) |
1 | 0 | X | Παραγωγή | Οχι | Χαμηλή έξοδος (νεροχύτης) |
1 | 1 | X | Παραγωγή | Οχι | Έξοδος Υψηλό (Πηγή) |
Ανάγνωση της τιμής pin
Ανεξάρτητα από τη ρύθμιση του bit κατεύθυνσης δεδομένων DDxn, η ακίδα της θύρας μπορεί να διαβαστεί μέσω του bit καταχωρητή PINxn. Όπως φαίνεται στο Εικόνα 10-2, το μπιτ εγγραφής PINxn και το προηγούμενο μάνταλο αποτελούν έναν συγχρονιστή. Αυτό απαιτείται για να αποφευχθεί η μετασταθερότητα εάν η φυσική ακίδα αλλάζει τιμή κοντά στην άκρη του εσωτερικού ρολογιού, αλλά δημιουργεί επίσης καθυστέρηση. Εικόνα 10-3 δείχνει ένα διάγραμμα χρονισμού του συγχρονισμού κατά την ανάγνωση μιας τιμής ακίδας που εφαρμόζεται εξωτερικά. Οι μέγιστες και ελάχιστες καθυστερήσεις διάδοσης συμβολίζονται με tpd, max και tpd,min αντίστοιχα.
Εξετάστε την περίοδο του ρολογιού που ξεκινά λίγο μετά την πρώτη πτώση του ρολογιού του συστήματος. Το μάνδαλο κλείνει όταν το ρολόι είναι χαμηλό και γίνεται διαφανές όταν το ρολόι είναι ψηλά, όπως υποδεικνύεται από τη σκιασμένη περιοχή του σήματος "SYNC LATCH". Η τιμή του σήματος κλειδώνεται όταν το ρολόι του συστήματος πέσει χαμηλά. Χρονίζεται στον καταχωρητή PINxn στο επόμενο θετικό άκρο του ρολογιού. Όπως υποδεικνύεται από τα δύο βέλη tpd, max και tpd,min, μια ενιαία μετάβαση σήματος στον ακροδέκτη θα καθυστερήσει μεταξύ ½ και 1½ περιόδου ρολογιού του συστήματος ανάλογα με τον χρόνο βεβαίωσης.
Κατά την ανάγνωση μιας τιμής pin που έχει εκχωρηθεί στο λογισμικό, πρέπει να εισαχθεί μια οδηγία nop όπως υποδεικνύεται στο Εικόνα 10-4. Η εντολή εξόδου θέτει το σήμα "SYNC LATCH" στη θετική άκρη του ρολογιού. Σε αυτήν την περίπτωση, η καθυστέρηση tpd μέσω του συγχρονιστή είναι μία περίοδος ρολογιού συστήματος.
Ο παρακάτω κωδικός π.χampΤο le δείχνει πώς να ρυθμίσετε τις ακίδες της θύρας B 0 και 1 ψηλά, 2 και 3 χαμηλά, και ορίστε τις ακίδες θύρας από 4 έως 5 ως είσοδο με ένα pull-up αντιστοιχισμένο στην ακίδα θύρας 4. Οι τιμές που προκύπτουν διαβάζονται ξανά, αλλά Όπως συζητήθηκε προηγουμένως, περιλαμβάνεται μια εντολή nop για να μπορείτε να διαβάσετε την τιμή που εκχωρήθηκε πρόσφατα σε ορισμένες από τις ακίδες.
Κωδικός Συναρμολόγησης Πχample(1) |
…
; Καθορίστε τα pull-ups και ορίστε υψηλές εξόδους ; Καθορίστε τις οδηγίες για τις ακίδες θυρών ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) έξω PORTB,r16 έξω DDRB,r17 ; Εισαγάγετε το nop για συγχρονισμό όχι ; Διαβάστε τις ακίδες θυρών σε r16, PINB … |
Σημείωση: Για το πρόγραμμα συναρμολόγησης, χρησιμοποιούνται δύο προσωρινοί καταχωρητές για την ελαχιστοποίηση του χρόνου από τη ρύθμιση των pull-ups στις ακίδες 0, 1 και 4, έως ότου ρυθμιστούν σωστά τα bit κατεύθυνσης, ορίζοντας τα bit 2 και 3 ως low και επαναπροσδιορίζοντας τα bit 0 και 1 ως ισχυροί υψηλοί οδηγοί.
Κωδικός Γ Πχample |
ανυπόγραφο char i;
… /* Ορισμός pull-ups και ορισμός εξόδων υψηλών */ /* Καθορισμός οδηγιών για τις ακίδες θύρας */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* Εισαγωγή nop για συγχρονισμό*/ _NOP(); /* Ανάγνωση ακίδων θύρας */ i = PINB; … |
Ενεργοποίηση ψηφιακής εισόδου και Λειτουργίες ύπνου
Όπως φαίνεται στο Εικόνα 10-2, το ψηφιακό σήμα εισόδου μπορεί να είναι clamped στη γείωση στην είσοδο της σκανδάλης schmitt. Το σήμα που υποδηλώνεται SLEEP στο σχήμα, ρυθμίζεται από τον ελεγκτή ύπνου MCU σε λειτουργία απενεργοποίησης για να αποφευχθεί η υψηλή κατανάλωση ενέργειας εάν ορισμένα σήματα εισόδου παραμείνουν αιωρούμενα ή έχουν επίπεδο αναλογικού σήματος κοντά στο VCC/2.
Το SLEEP παρακάμπτεται για τις ακίδες θύρας που είναι ενεργοποιημένες ως εξωτερικές ακίδες διακοπής. Εάν το αίτημα εξωτερικής διακοπής δεν είναι ενεργοποιημένο, το SLEEP είναι ενεργό και για αυτές τις ακίδες. Το SLEEP παρακάμπτεται επίσης από διάφορες άλλες εναλλακτικές λειτουργίες όπως περιγράφεται στο «Εναλλακτικές λειτουργίες θύρας» στη σελίδα 57.
Εάν υπάρχει ένα υψηλό λογικό επίπεδο ("ένα") σε μια ασύγχρονη εξωτερική ακίδα διακοπής που έχει διαμορφωθεί ως "Διακοπή στην ανερχόμενη άκρη, πτώση ακμής ή οποιαδήποτε αλλαγή λογικής στην καρφίτσα" ενώ η εξωτερική διακοπή δεν είναι ενεργοποιημένη, η αντίστοιχη σημαία εξωτερικής διακοπής θα να ρυθμιστεί κατά την επανέναρξη από την προαναφερθείσα κατάσταση αναστολής λειτουργίας, καθώς το clampΗ χρήση σε αυτές τις καταστάσεις ύπνου παράγει την ζητούμενη λογική αλλαγή.
Μη συνδεδεμένες καρφίτσες
Εάν ορισμένες ακίδες δεν χρησιμοποιούνται, συνιστάται να βεβαιωθείτε ότι αυτές οι ακίδες έχουν καθορισμένο επίπεδο. Παρόλο που οι περισσότερες από τις ψηφιακές εισόδους είναι απενεργοποιημένες στις καταστάσεις βαθιάς αναστολής λειτουργίας, όπως περιγράφεται παραπάνω, οι αιωρούμενες είσοδοι θα πρέπει να αποφεύγονται για να μειωθεί η κατανάλωση ρεύματος σε όλες τις άλλες λειτουργίες όπου είναι ενεργοποιημένες οι ψηφιακές είσοδοι (Επαναφορά, Ενεργή λειτουργία και κατάσταση αναμονής).
Η απλούστερη μέθοδος για να εξασφαλίσετε ένα καθορισμένο επίπεδο μιας αχρησιμοποίητης ακίδας, είναι να ενεργοποιήσετε την εσωτερική έλξη. Σε αυτήν την περίπτωση, το pull-up θα απενεργοποιηθεί κατά την επαναφορά. Εάν η χαμηλή κατανάλωση ενέργειας κατά τη διάρκεια της επαναφοράς είναι σημαντική, συνιστάται η χρήση ενός εξωτερικού pull-up ή pulldown. Δεν συνιστάται η απευθείας σύνδεση των αχρησιμοποίητων ακίδων σε VCC ή GND, καθώς αυτό μπορεί να προκαλέσει υπερβολικά ρεύματα εάν ο ακροδέκτης διαμορφωθεί κατά λάθος ως έξοδος.
Εναλλακτικές λειτουργίες θύρας
Οι περισσότερες ακίδες θυρών έχουν εναλλακτικές λειτουργίες εκτός από γενικές ψηφιακές εισόδους/εξόδους. Εικόνα 10-5 δείχνει πώς η ακίδα ελέγχου της θύρας σηματοδοτεί από το απλοποιημένο Εικόνα 10-2 μπορεί να παρακαμφθεί από εναλλακτικές λειτουργίες. Τα υπερισχύοντα σήματα μπορεί να μην υπάρχουν σε όλες τις ακίδες θυρών, αλλά το σχήμα χρησιμεύει ως γενική περιγραφή που ισχύει για όλες τις ακίδες θυρών της οικογένειας μικροελεγκτών AVR.
Πίνακας 10-2. Γενική περιγραφή των σημάτων παράκαμψης για εναλλακτικές λειτουργίες
Όνομα σήματος | Ονοματεπώνυμο | Περιγραφή |
PUOE | Ενεργοποίηση παράκαμψης έλξης | Εάν έχει ρυθμιστεί αυτό το σήμα, η ενεργοποίηση pull-up ελέγχεται από το σήμα PUOV. Εάν αυτό το σήμα διαγραφεί, το pull-up ενεργοποιείται όταν
{DDxn, PORTxn, PUD} = 0b010. |
PUOV | Τιμή παράκαμψης Pull-up | Εάν έχει οριστεί το PUOE, το pull-up ενεργοποιείται/απενεργοποιείται όταν το PUOV έχει οριστεί/διαγραφεί, ανεξάρτητα από τη ρύθμιση των bit DDxn, PORTxn και PUD Register. |
DDOE | Ενεργοποίηση παράκαμψης κατεύθυνσης δεδομένων | Εάν έχει ρυθμιστεί αυτό το σήμα, το Output Driver Enable ελέγχεται από το σήμα DDOV. Εάν αυτό το σήμα διαγραφεί, το πρόγραμμα οδήγησης εξόδου ενεργοποιείται από το bit καταχωρητή DDxn. |
DDOV | Τιμή παράκαμψης κατεύθυνσης δεδομένων | Εάν έχει οριστεί DDOE, το πρόγραμμα οδήγησης εξόδου ενεργοποιείται/απενεργοποιείται όταν το DDOV έχει οριστεί/διαγραφεί, ανεξάρτητα από τη ρύθμιση του bit καταχωρητή DDxn. |
PVOE | Ενεργοποίηση παράκαμψης τιμής θύρας | Εάν αυτό το σήμα έχει ρυθμιστεί και το πρόγραμμα οδήγησης εξόδου είναι ενεργοποιημένο, η τιμή της θύρας ελέγχεται από το σήμα PVOV. Εάν το PVOE διαγραφεί και το πρόγραμμα οδήγησης εξόδου είναι ενεργοποιημένο, η τιμή θύρας ελέγχεται από το bit καταχωρητή PORTxn. |
PVOV | Παράκαμψη τιμής θύρας | Εάν έχει οριστεί PVOE, η τιμή θύρας ορίζεται σε PVOV, ανεξάρτητα από τη ρύθμιση του bit καταχωρητή PORTxn. |
ΠΤΟΕ | Ενεργοποίηση παράκαμψης εναλλαγής θύρας | Εάν έχει οριστεί PTOE, το bit καταχωρητή PORTxn αντιστρέφεται. |
ΔΙΕΟΕ | Ψηφιακή είσοδος Ενεργοποίηση Παράκαμψη Ενεργοποίηση | Εάν έχει ρυθμιστεί αυτό το bit, το Digital Input Enable ελέγχεται από το σήμα DIEOV. Εάν αυτό το σήμα διαγραφεί, η ενεργοποίηση ψηφιακής εισόδου καθορίζεται από την κατάσταση MCU (Κανονική λειτουργία, κατάσταση αναστολής λειτουργίας). |
DIEOV | Ψηφιακή είσοδος Ενεργοποίηση τιμής παράκαμψης | Εάν έχει οριστεί το DIEOE, η ψηφιακή είσοδος ενεργοποιείται/απενεργοποιείται όταν το DIEOV έχει ρυθμιστεί/διαγραφεί, ανεξάρτητα από την κατάσταση MCU (Κανονική λειτουργία, κατάσταση αναστολής λειτουργίας). |
DI | Ψηφιακή είσοδος | Αυτή είναι η ψηφιακή είσοδος για εναλλακτικές λειτουργίες. Στο σχήμα, το σήμα συνδέεται στην έξοδο της σκανδάλης schmitt αλλά πριν από τον συγχρονιστή. Εκτός εάν η ψηφιακή είσοδος χρησιμοποιείται ως πηγή ρολογιού, η μονάδα με την εναλλακτική λειτουργία θα χρησιμοποιεί τον δικό της συγχρονιστή. |
AIO | Αναλογική είσοδος / έξοδος | Αυτή είναι η Αναλογική Είσοδος/Έξοδος προς/από εναλλακτικές λειτουργίες. Το σήμα συνδέεται απευθείας στο pad και μπορεί να χρησιμοποιηθεί αμφίδρομα. |
Οι ακόλουθες υποενότητες περιγράφουν σύντομα τις εναλλακτικές λειτουργίες για κάθε θύρα και συσχετίζουν τα υπερισχύοντα σήματα με την εναλλακτική λειτουργία. Ανατρέξτε στην περιγραφή εναλλακτικής λειτουργίας για περισσότερες λεπτομέρειες.
Εναλλακτικές λειτουργίες της θύρας Β
Οι ακίδες Θύρας Β με εναλλακτική λειτουργία εμφανίζονται στο Πίνακας 10-3.
Πίνακας 10-3. Εναλλακτικές λειτουργίες ακίδων θύρας Β
Port Pin | Εναλλακτική Λειτουργία |
PB5 | ![]() RESET: Reset Pin dW: debugWIRE I/O ADC0: ADC Input Channel 0 PCINT5: Διακοπή αλλαγής καρφίτσας, Πηγή 5 |
PB4 | XTAL2: Έξοδος ταλαντωτή κρυστάλλου CLKO: Έξοδος ρολογιού συστήματος ADC2: Κανάλι εισόδου ADC 2
OC1B: Χρονοδιακόπτης/Μετρητής1 Σύγκριση αντιστοίχισης Β Έξοδος PCINT4: Διακοπή αλλαγής καρφίτσας 0, Πηγή 4 |
PB3 | XTAL1: Είσοδος ταλαντωτή κρυστάλλου CLKI: Είσοδος εξωτερικού ρολογιού ADC3: Κανάλι εισόδου ADC 3
OC1B: Συμπληρωματικός χρονοδιακόπτης/μετρητής1 Σύγκριση αντιστοίχισης Β Έξοδος PCINT3: Διακοπή αλλαγής καρφίτσας 0, πηγή 3 |
PB2 | SCK: Είσοδος σειριακού ρολογιού ADC1: Κανάλι εισόδου ADC 1
T0: Χρονοδιακόπτης/Μετρητής0 Πηγή ρολογιού USCK: Ρολόι USI (Λειτουργία τριών καλωδίων) SCL : Ρολόι USI (Λειτουργία δύο καλωδίων) INT0: Εξωτερική διακοπή 0 Είσοδος PCINT2: Διακοπή αλλαγής καρφίτσας 0, Πηγή 2 |
PB1 | MISO: Είσοδος βασικών δεδομένων SPI / Έξοδος δεδομένων Slave AIN1: Αναλογικός συγκριτής, αρνητική είσοδος OC0B: Χρονόμετρο/Μετρητής0 Σύγκριση αντιστοίχισης B Έξοδος OC1A: Χρονόμετρο/Μετρητής1 Σύγκριση αντιστοίχισης εξόδου DO: Έξοδος δεδομένων USI (Λειτουργία τριών καλωδίων) Διακοπή PCINT1:Pin 0, Πηγή 1 |
PB0 | MOSI:: Έξοδος SPI Master Data / Slave Data Input AIN0: Αναλογικός συγκριτής, θετική είσοδος
OC0A: Χρονοδιακόπτης/Μετρητής0 Έξοδος σύγκρισης αντιστοίχισης Α OC1A: Συμπληρωματικός χρονοδιακόπτης/μετρητής1 Σύγκριση αντιστοίχισης Α Έξοδος DI: Είσοδος δεδομένων USI (Λειτουργία τριών καλωδίων) SDA: Είσοδος δεδομένων USI (Λειτουργία δύο καλωδίων) AREF: Εξωτερική αναλογική αναφορά PCINT0: Διακοπή αλλαγής καρφίτσας 0, πηγή 0 |
Θύρα B, Bit 5 – RESET/dW/ADC0/PCINT5
RESET: Η είσοδος εξωτερικής επαναφοράς είναι ενεργή χαμηλά και ενεργοποιείται με την απενεργοποίηση (“1”) της ασφάλειας RSTDISBL. Το Pullup ενεργοποιείται και το πρόγραμμα οδήγησης εξόδου και η ψηφιακή είσοδος απενεργοποιούνται όταν η ακίδα χρησιμοποιείται ως ακροδέκτης RESET.
dW: Όταν η ασφάλεια DebugWIRE Enable (DWEN) είναι προγραμματισμένη και τα bit κλειδώματος δεν είναι προγραμματισμένα, ενεργοποιείται το σύστημα debugWIRE στη συσκευή προορισμού. Ο ακροδέκτης θύρας RESET έχει διαμορφωθεί ως ακροδέκτης εισόδου/εξόδου αμφίδρομου καλωδίου ΚΑΙ (ανοιχτής αποστράγγισης) με ενεργοποιημένο το pull-up και γίνεται η πύλη επικοινωνίας μεταξύ στόχου και εξομοιωτή.
ADC0: Μετατροπέας αναλογικού σε ψηφιακό, Κανάλι 0.
PCINT5: Pin Change Interrupt Source 5.
Θύρα B, Bit 4 – XTAL2/CLKO/ADC2/OC1B/PCINT4
XTAL2: Chip Clock Oscillator pin 2. Χρησιμοποιείται ως ακίδα ρολογιού για όλες τις πηγές ρολογιού τσιπ εκτός από τον εσωτερικό βαθμονομούμενο ταλαντωτή RC και το εξωτερικό ρολόι. Όταν χρησιμοποιείται ως ακίδα ρολογιού, η ακίδα δεν μπορεί να χρησιμοποιηθεί ως ακίδα I/O. Όταν χρησιμοποιείται εσωτερικός βαθμονομούμενος Ταλαντωτής RC ή Εξωτερικό ρολόι ως πηγές ρολογιού Chip, το PB4 χρησιμεύει ως συνηθισμένος ακροδέκτης I/O.
CLKO: Το διαιρεμένο ρολόι συστήματος μπορεί να βγει στην ακίδα PB4. Το διαιρεμένο ρολόι συστήματος θα βγει εάν είναι προγραμματισμένη η ασφάλεια CKOUT, ανεξάρτητα από τις ρυθμίσεις PORTB4 και DDB4. Θα βγει επίσης κατά την επαναφορά.
ADC2: Μετατροπέας αναλογικού σε ψηφιακό, Κανάλι 2.
OC1B: Έξοδος σύγκρισης εξόδου: Η ακίδα PB4 μπορεί να χρησιμεύσει ως εξωτερική έξοδος για το Timer/Counter1 Compare Match B όταν διαμορφωθεί ως έξοδος (σύνολο DDB4). Ο ακροδέκτης OC1B είναι επίσης ο ακροδέκτης εξόδου για τη λειτουργία χρονοδιακόπτη λειτουργίας PWM.
PCINT4: Pin Change Interrupt Source 4.
Θύρα B, Bit 3 – XTAL1/CLKI/ADC3/OC1B/PCINT3
XTAL1: Καρφίτσα ταλαντωτή ρολογιού τσιπ 1. Χρησιμοποιείται για όλες τις πηγές ρολογιού τσιπ εκτός από τον εσωτερικό βαθμονομούμενο ταλαντωτή RC. Όταν χρησιμοποιείται ως ακίδα ρολογιού, η ακίδα δεν μπορεί να χρησιμοποιηθεί ως ακίδα I/O.
CLKI: Είσοδος ρολογιού από εξωτερική πηγή ρολογιού, βλ «Εξωτερικό ρολόι» στη σελίδα 26.
ADC3: Μετατροπέας αναλογικού σε ψηφιακό, Κανάλι 3.
OC1B: Αντεστραμμένη έξοδος σύγκρισης αντιστοίχισης: Η ακίδα PB3 μπορεί να χρησιμεύσει ως εξωτερική έξοδος για το Timer/Counter1 Compare Match B όταν διαμορφωθεί ως έξοδος (σύνολο DDB3). Η ακίδα OC1B είναι επίσης η ανεστραμμένη ακίδα εξόδου για τη λειτουργία χρονοδιακόπτη λειτουργίας PWM.
PCINT3: Pin Change Interrupt Source 3.
Θύρα B, Bit 2 – SCK/ADC1/T0/USCK/SCL/INT0/PCINT2
SCK: Έξοδος Master Clock, ακίδα εισόδου Slave Clock για κανάλι SPI. Όταν το SPI είναι ενεργοποιημένο ως Slave, αυτό το pin διαμορφώνεται ως είσοδος ανεξάρτητα από τη ρύθμιση του DDB2. Όταν το SPI είναι ενεργοποιημένο ως Master, η κατεύθυνση δεδομένων αυτού του pin ελέγχεται από το DDPB2. Όταν η ακίδα εξαναγκάζεται από το SPI να είναι μια είσοδος, το pull-up μπορεί ακόμα να ελεγχθεί από το bit PORTB2.
ADC1: Μετατροπέας αναλογικού σε ψηφιακό, Κανάλι 1.
T0: Πηγή μετρητή Timer/Counter0.
USCK: Λειτουργία τριών καλωδίων Universal Serial Interface Clock.
SCL: Λειτουργία δύο καλωδίων Σειριακό ρολόι για USI λειτουργία δύο καλωδίων.
INT0: Εξωτερική πηγή διακοπής 0.
PCINT2: Pin Change Interrupt Source 2.
Θύρα B, Bit 1 – MISO/AIN1/OC0B/OC1A/DO/PCINT1
MISO: Είσοδος Master Data, Slave Data output pin για κανάλι SPI. Όταν το SPI είναι ενεργοποιημένο ως Master, αυτό το pin διαμορφώνεται ως είσοδος ανεξάρτητα από τη ρύθμιση του DDB1. Όταν το SPI είναι ενεργοποιημένο ως Slave, η κατεύθυνση δεδομένων αυτού του pin ελέγχεται από το DDB1. Όταν η ακίδα εξαναγκάζεται από το SPI να είναι μια είσοδος, το pull-up μπορεί ακόμα να ελεγχθεί από το bit PORTB1.
AIN1: Αρνητική είσοδος αναλογικού συγκριτή. Διαμορφώστε τον ακροδέκτη θύρας ως είσοδο με το εσωτερικό pull-up απενεργοποιημένο για να αποφύγετε την παρεμβολή της λειτουργίας ψηφιακής θύρας στη λειτουργία του Αναλογικού Συγκριτή.
OC0B: Έξοδος σύγκρισης Έξοδος αντιστοίχισης. Ο ακροδέκτης PB1 μπορεί να χρησιμεύσει ως εξωτερική έξοδος για το Timer/Counter0 Compare Match B. Ο ακροδέκτης PB1 πρέπει να διαμορφωθεί ως έξοδος (σύνολο DDB1 (ένα)) για να εξυπηρετεί αυτήν τη λειτουργία. Η ακίδα OC0B είναι επίσης η ακίδα εξόδου για τη λειτουργία χρονοδιακόπτη λειτουργίας PWM.
OC1A: Έξοδος σύγκρισης εξόδου: Η ακίδα PB1 μπορεί να χρησιμεύσει ως εξωτερική έξοδος για το Timer/Counter1 Compare Match B όταν διαμορφωθεί ως έξοδος (σύνολο DDB1). Ο ακροδέκτης OC1A είναι επίσης ο ακροδέκτης εξόδου για τη λειτουργία χρονοδιακόπτη λειτουργίας PWM.
DO: Λειτουργία τριών συρμάτων Έξοδος δεδομένων γενικής σειριακής διεπαφής. Λειτουργία τριών καλωδίων Η έξοδος δεδομένων υπερισχύει της τιμής PORTB1 και οδηγείται στη θύρα όταν το bit κατεύθυνσης δεδομένων DDB1 έχει οριστεί (ένα). Το PORTB1 εξακολουθεί να επιτρέπει το pull-up, εάν η κατεύθυνση είναι είσοδος και το PORTB1 έχει οριστεί (ένα).
PCINT1: Pin Change Interrupt Source 1.
Θύρα B, Bit 0 – MOSI/AIN0/OC0A/OC1A/DI/SDA/AREF/PCINT0
MOSI: Έξοδος SPI Master Data, Slave Data είσοδος για κανάλι SPI. Όταν το SPI είναι ενεργοποιημένο ως Slave, αυτό το pin διαμορφώνεται ως είσοδος ανεξάρτητα από τη ρύθμιση του DDB0. Όταν το SPI είναι ενεργοποιημένο ως Master, η κατεύθυνση δεδομένων αυτού του pin ελέγχεται από το DDB0. Όταν η ακίδα εξαναγκάζεται από το SPI να είναι μια είσοδος, το pull-up μπορεί ακόμα να ελεγχθεί από το bit PORTB0.
AIN0: Θετική είσοδος αναλογικής σύγκρισης. Διαμορφώστε τον ακροδέκτη θύρας ως είσοδο με το εσωτερικό pull-up απενεργοποιημένο για να αποφύγετε την παρεμβολή της λειτουργίας ψηφιακής θύρας στη λειτουργία του Αναλογικού Συγκριτή.
OC0A: Έξοδος Σύγκριση Έξοδος αντιστοίχισης. Ο ακροδέκτης PB0 μπορεί να χρησιμεύσει ως εξωτερική έξοδος για το Timer/Counter0 Compare Match A όταν διαμορφωθεί ως έξοδος (σύνολο DDB0 (ένα)). Ο ακροδέκτης OC0A είναι επίσης ο ακροδέκτης εξόδου για τη λειτουργία χρονοδιακόπτη λειτουργίας PWM.
OC1A: Έξοδος σύγκρισης αντιστοίχισης ανεστραμμένης εξόδου: Η ακίδα PB0 μπορεί να χρησιμεύσει ως εξωτερική έξοδος για το Timer/Counter1 Compare Match B όταν διαμορφωθεί ως έξοδος (σύνολο DDB0). Η ακίδα OC1A είναι επίσης η ανεστραμμένη ακίδα εξόδου για τη λειτουργία χρονοδιακόπτη λειτουργίας PWM.
SDA: Δεδομένα σειριακής διεπαφής σε λειτουργία δύο καλωδίων.
AREF: Εξωτερική αναλογική αναφορά για ADC. Το Pullup και το πρόγραμμα οδήγησης εξόδου είναι απενεργοποιημένα στο PB0 όταν η ακίδα χρησιμοποιείται ως εξωτερική αναφορά ή ως εσωτερικός τόμοςtage Αναφορά με εξωτερικό πυκνωτή στον ακροδέκτη AREF.
DI: Εισαγωγή δεδομένων σε λειτουργία USI Τριών καλωδίων. Η λειτουργία τριών καλωδίων USI δεν παρακάμπτει τις κανονικές λειτουργίες θύρας, επομένως η ακίδα πρέπει να διαμορφωθεί ως είσοδος για τη λειτουργία DI.
PCINT0: Pin Change Interrupt Source 0.
Πίνακας 10-4 και Πίνακας 10-5 συσχετίστε τις εναλλακτικές λειτουργίες της θύρας Β με τα υπερισχύοντα σήματα που φαίνονται στο Εικόνα 10-5 στις σελίδα 58.
Πίνακας 10-4. Σήματα παράκαμψης για εναλλακτικές λειτουργίες στο PB[5:3]
Όνομα σήματος | PB5/RESET/ADC0/PCINT5 | PB4/ADC2/XTAL2/ OC1B/PCINT4 | PB3/ADC3/XTAL1/ OC1B/PCINT3 |
PUOE | ![]() |
0 | 0 |
PUOV | 1 | 0 | 0 |
DDOE | RSTDISBL(1) • DWEN(1) | 0 | 0 |
DDOV | DebugWire Transmit | 0 | 0 |
PVOE | 0 | OC1B Ενεργοποίηση | ![]() OC1B Ενεργοποίηση |
PVOV | 0 | OC1B | OC1B |
ΠΤΟΕ | 0 | 0 | 0 |
ΔΙΕΟΕ | ![]() RSTDISBL(1) + (PCINT5 • PCIE + ADC0D) |
PCINT4 • PCIE + ADC2D | PCINT3 • PCIE + ADC3D |
DIEOV | ADC0D | ADC2D | ADC3D |
DI | Είσοδος PCINT5 | Είσοδος PCINT4 | Είσοδος PCINT3 |
AIO | Είσοδος RESET, Είσοδος ADC0 | Είσοδος ADC2 | Είσοδος ADC3 |
Σημείωση: όταν η ασφάλεια είναι "0" (Προγραμματισμένη).
Πίνακας 10-5. Σήματα παράκαμψης για εναλλακτικές λειτουργίες στο PB[2:0]
Όνομα σήματος | PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 | PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 | PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/
PCINT0 |
PUOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
PUOV | 0 | 0 | 0 |
DDOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
DDOV | (USI_SCL_HOLD + PORTB2) • DDB2 | 0 | ![]() ![]() (SDA + PORTB0) • DDB0 |
PVOE | USI_TWO_WIRE • DDB2 | OC0B Enable + OC1A Enable + USI_THREE_WIRE | ![]() OC0A Enable + OC1A Enable + (USI_TWO_WIRE DDB0) |
PVOV | 0 | OC0B + OC1A + DO | ![]() OC0A + OC1A |
ΠΤΟΕ | USITC | 0 | 0 |
ΔΙΕΟΕ | PCINT2 • PCIE + ADC1D + USISIE | PCINT1 • PCIE + AIN1D | PCINT0 • PCIE + AIN0D + USISIE |
DIEOV | ADC1D | AIN1D | AIN0D |
DI | T0/USCK/SCL/INT0/
Είσοδος PCINT2 |
Είσοδος PCINT1 | Είσοδος DI/SDA/PCINT0 |
AIO | Είσοδος ADC1 | Αρνητική είσοδος αναλογικού συγκριτή | Θετική είσοδος αναλογικού συγκριτή |
Εγγραφή Περιγραφή
MCUCR – Μητρώο ελέγχου MCU
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | Δ.Σ | ΠΟΥΤΙΓΚΑ | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Διαβάστε/Γράψτε | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Αρχική Αξία | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 6 – PUD: Pull-up Disable
Όταν αυτό το bit είναι γραμμένο σε ένα, τα pull-ups στις θύρες I/O απενεργοποιούνται ακόμη και αν οι καταχωρητές DDxn και PORTxn έχουν ρυθμιστεί ώστε να ενεργοποιούν τα pull-ups ({DDxn, PORTxn} = 0b01). Βλέπω «Διαμόρφωση της καρφίτσας» στη σελίδα 54 για περισσότερες λεπτομέρειες σχετικά με αυτό το χαρακτηριστικό.
PORTB – Port B Data Register
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | PORTB |
Διαβάστε/Γράψτε | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Αρχική Αξία | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DDRB – Port B Data Direction Register
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 | – | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
Διαβάστε/Γράψτε | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Αρχική Αξία | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PINB – Θύρα B Διεύθυνση ακίδων εισόδου
Κομμάτι | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 | – | – | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINB |
Διαβάστε/Γράψτε | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Αρχική Αξία | 0 | 0 | N/A | N/A | N/A | N/A | N/A | N/A |
8-bit Timer/Counter0 με PWM
Χαρακτηριστικά
Δύο ανεξάρτητες μονάδες σύγκρισης εξόδου
Καταχωρητές σύγκρισης εξόδου διπλής προσωρινής αποθήκευσης
Εκκαθάριση χρονοδιακόπτη στη σύγκριση αντιστοίχισης (Αυτόματη επαναφόρτωση)
Χωρίς δυσλειτουργία, διαμορφωτής πλάτους παλμού σωστής φάσης (PWM)
Μεταβλητή περίοδος PWM
Γεννήτρια συχνότητας
Τρεις ανεξάρτητες πηγές διακοπής (TOV0, OCF0A και OCF0B)
Υπερview
Το Timer/Counter0 είναι μια μονάδα χρονοδιακόπτη/μετρητή γενικής χρήσης 8-bit, με δύο ανεξάρτητες μονάδες σύγκρισης εξόδων και με υποστήριξη PWM. Επιτρέπει τον ακριβή χρονισμό εκτέλεσης του προγράμματος (διαχείριση συμβάντων) και τη δημιουργία κυμάτων.
Εμφανίζεται ένα απλοποιημένο μπλοκ διάγραμμα του χρονοδιακόπτη/μετρητή 8-bit Εικόνα 11-1. Για την πραγματική τοποθέτηση των ακίδων I/O, ανατρέξτε στο “Pinout ATtiny25/45/85” στη σελίδα 2. Οι καταχωρητές εισόδου/εξόδου με πρόσβαση σε CPU, συμπεριλαμβανομένων των bit I/O και των ακίδων I/O, εμφανίζονται με έντονη γραφή. Ο καταχωρητής εισόδου/εξόδου και οι θέσεις bit για συγκεκριμένη συσκευή παρατίθενται στο «Περιγραφή εγγραφής» στη σελίδα 77.
Οι καταχωρητές Timer/Counter (TCNT0) και Output Compare Register (OCR0A και OCR0B) είναι καταχωρητές 8-bit. Τα σήματα αιτήματος διακοπής (συντομογραφία Int.Req. στο σχήμα) είναι όλα ορατά στο Timer Interrupt Flag Register (TIFR). Όλες οι διακοπές καλύπτονται μεμονωμένα με το Μητρώο Μάσκας Διακοπής Χρονοδιακόπτη (TIMSK). Το TIFR και το TIMSK δεν φαίνονται στο σχήμα.
Ο χρονοδιακόπτης/μετρητής μπορεί να χρονιστεί εσωτερικά, μέσω του prescaler ή από μια εξωτερική πηγή ρολογιού στον ακροδέκτη T0. Το λογικό μπλοκ Επιλογή Ρολογιού ελέγχει ποια πηγή ρολογιού και άκρο χρησιμοποιεί ο Χρονόμετρο/Μετρητής για να αυξήσει (ή να μειώσει) την τιμή του. Ο χρονοδιακόπτης/μετρητής είναι ανενεργός όταν δεν έχει επιλεγεί πηγή ρολογιού. Η έξοδος από τη λογική επιλογής ρολογιού αναφέρεται ως χρονόμετρο (clkT0).
Οι καταχωρητές σύγκρισης εξόδου διπλής προσωρινής αποθήκευσης (OCR0A και OCR0B) συγκρίνονται με την τιμή Χρονοδιακόπτη/Μετρητή ανά πάσα στιγμή. Το αποτέλεσμα της σύγκρισης μπορεί να χρησιμοποιηθεί από τη Γεννήτρια Κυματομορφής για τη δημιουργία μιας εξόδου PWM ή μεταβλητής συχνότητας στις ακίδες σύγκρισης εξόδου (OC0A και OC0B). Ανατρέξτε στην ενότητα «Μονάδα σύγκρισης εξόδων» στη σελίδα 69. για λεπτομέρειες. Το συμβάν Compare Match θα ορίσει επίσης τη σημαία σύγκρισης (OCF0A ή OCF0B) που μπορεί να χρησιμοποιηθεί για τη δημιουργία ενός αιτήματος διακοπής σύγκρισης εξόδου.
Ορισμοί
Πολλοί καταχωρητές και αναφορές bit σε αυτήν την ενότητα είναι γραμμένες σε γενική μορφή. Ένα πεζό "n" αντικαθιστά τον αριθμό χρονοδιακόπτη/μετρητή, σε αυτήν την περίπτωση 0. Ένα πεζό "x" αντικαθιστά τη μονάδα σύγκρισης εξόδου, σε αυτήν την περίπτωση Συγκρίνετε μονάδα Α ή σύγκριση μονάδας Β. Ωστόσο, όταν χρησιμοποιείτε τον καταχωρητή ή το bit ορίζει σε ένα πρόγραμμα, πρέπει να χρησιμοποιείται η ακριβής φόρμα, π.χ. TCNT0 για πρόσβαση στην τιμή του μετρητή Timer/Counter0 και ούτω καθεξής.
Οι ορισμοί στο Πίνακας 11-1 χρησιμοποιούνται επίσης εκτενώς σε όλο το έγγραφο.
Πίνακας 11-1. Ορισμοί
Συνεχής | Περιγραφή |
ΚΑΤΩ ΜΕΡΟΣ | Ο μετρητής φτάνει στο BOTTOM όταν γίνει 0x00 |
ΜΕΓ | Ο μετρητής φτάνει στο μέγιστο όταν γίνει 0xFF (δεκαδικός αριθμός 255) |
ΚΟΡΥΦΗ | Ο μετρητής φτάνει στο TOP όταν γίνει ίσος με την υψηλότερη τιμή στην ακολουθία μέτρησης. Η τιμή TOP μπορεί να εκχωρηθεί ως η σταθερή τιμή 0xFF (MAX) ή η τιμή που είναι αποθηκευμένη στον καταχωρητή OCR0A. Η αντιστοίχιση εξαρτάται από τον τρόπο λειτουργίας |
Timer/Counter Prescaler και Clock Sources
Ο χρονοδιακόπτης/μετρητής μπορεί να χρονιστεί από μια εσωτερική ή μια εξωτερική πηγή ρολογιού. Η πηγή ρολογιού επιλέγεται από τη λογική επιλογής ρολογιού, η οποία ελέγχεται από τα bit επιλογής ρολογιού (c) που βρίσκονται στο Μητρώο Ελέγχου Timer/Counter0 (TCCR0B).
Εσωτερική πηγή ρολογιού με Prescaler
Το χρονόμετρο/Μετρητής 0 μπορεί να χρονιστεί απευθείας από το ρολόι του συστήματος (ρυθμίζοντας το CS0[2:0] = 1). Αυτό παρέχει την ταχύτερη λειτουργία, με μέγιστη συχνότητα χρονοδιακόπτη/μετρητή ρολογιού ίση με τη συχνότητα ρολογιού συστήματος (fCLK_I/O). Εναλλακτικά, ένα από τα τέσσερα χτυπήματα από το prescaler μπορεί να χρησιμοποιηθεί ως πηγή ρολογιού. Το προκλιμακωμένο ρολόι έχει συχνότητα από τα δύο
Επαναφορά Prescaler
Το prescaler λειτουργεί ελεύθερα, δηλαδή λειτουργεί ανεξάρτητα από τη λογική Clock Select του Timer/Counter0. Εφόσον ο προκλιμακωτής δεν επηρεάζεται από την επιλογή του χρονοδιακόπτη/μετρητή, η κατάσταση του προκλιμακωτή θα έχει επιπτώσεις σε περιπτώσεις όπου χρησιμοποιείται ένα προκλιμακωμένο ρολόι. Ένας πρώηνampΤο τεχνούργημα προκλιμάκωσης είναι όταν ο χρονοδιακόπτης/μετρητής είναι ενεργοποιημένος και χρονισμένος από τον προκλιμακωτή (6 > CS0[2:0] > 1). Ο αριθμός των κύκλων ρολογιού συστήματος από την ενεργοποίηση του χρονοδιακόπτη έως την πρώτη μέτρηση μπορεί να είναι από 1 έως N+1 κύκλους ρολογιού συστήματος, όπου το N ισούται με τον διαιρέτη προκλιμακωτή (8, 64, 256 ή 1024).
Είναι δυνατή η χρήση του Prescaler Reset για συγχρονισμό του χρονοδιακόπτη/μετρητή με την εκτέλεση του προγράμματος.
Εξωτερική πηγή ρολογιού
Μια εξωτερική πηγή ρολογιού που εφαρμόζεται στην ακίδα T0 μπορεί να χρησιμοποιηθεί ως χρονοδιακόπτης/μετρητής ρολόι (clkT0). Η ακίδα T0 είναι sampοδηγείται μία φορά σε κάθε κύκλο του ρολογιού του συστήματος από τη λογική συγχρονισμού ακίδων. Το συγχρονισμένο (σampled) περνάει το σήμα
μέσω του ανιχνευτή ακμών. Εικόνα 11-2 δείχνει ένα λειτουργικό ισοδύναμο μπλοκ διάγραμμα του συγχρονισμού T0 και της λογικής του ανιχνευτή ακμών. Οι καταχωρητές χρονίζονται στο θετικό άκρο του εσωτερικού ρολογιού του συστήματος (clkI/O). Το μάνδαλο είναι διαφανές στην υψηλή περίοδο του εσωτερικού ρολογιού του συστήματος.
Ο ανιχνευτής ακμών δημιουργεί έναν παλμό clkT0 για κάθε θετική (CS0[2:0] = 7) ή αρνητική (CS0[2:0] = 6) ακμή που ανιχνεύει.
Οι καταχωρητές OCR0x αποθηκεύονται διπλά στην προσωρινή μνήμη όταν χρησιμοποιείτε οποιαδήποτε από τις λειτουργίες διαμόρφωσης πλάτους παλμού (PWM). Για τον κανονικό τρόπο λειτουργίας και τον τρόπο λειτουργίας Clear Timer on Compare (CTC), η διπλή αποθήκευση στην προσωρινή μνήμη είναι απενεργοποιημένη. Η διπλή προσωρινή αποθήκευση συγχρονίζει την ενημέρωση των καταχωρητών σύγκρισης OCR0x είτε στο επάνω είτε στο κάτω μέρος της ακολουθίας μέτρησης. Ο συγχρονισμός αποτρέπει την εμφάνιση μη συμμετρικών παλμών PWM περιττού μήκους, καθιστώντας έτσι την έξοδο χωρίς προβλήματα.
Η πρόσβαση στο μητρώο OCR0x μπορεί να φαίνεται περίπλοκη, αλλά αυτό δεν συμβαίνει. Όταν η διπλή προσωρινή αποθήκευση είναι ενεργοποιημένη, η CPU έχει πρόσβαση στον καταχωρητή προσωρινής μνήμης OCR0x και εάν η διπλή προσωρινή αποθήκευση είναι απενεργοποιημένη, η CPU θα έχει απευθείας πρόσβαση στο OCR0x.
Σύγκριση εξόδου δύναμης
Σε τρόπους δημιουργίας κυματομορφής εκτός PWM, η έξοδος αντιστοίχισης του συγκριτή μπορεί να εξαναγκαστεί γράφοντας ένα στο bit Force Output Compare (FOC0x). Η επιβολή αντιστοίχισης σύγκρισης δεν θα ορίσει τη σημαία OCF0x ή θα επαναφορτώσει/διαγράψει το χρονόμετρο, αλλά η ακίδα OC0x θα ενημερωθεί σαν να είχε συμβεί μια πραγματική αντιστοίχιση σύγκρισης (οι ρυθμίσεις bits COM0x[1:0] καθορίζουν εάν η ακίδα OC0x έχει οριστεί, διαγραφεί ή εναλλαγή).
Συγκρίνετε το Match Blocking από το TCNT0 Write
Όλες οι λειτουργίες εγγραφής CPU στον καταχωρητή TCNT0 θα μπλοκάρουν οποιαδήποτε Αντιστοίχιση σύγκρισης που εμφανίζεται στον επόμενο κύκλο ρολογιού του χρονοδιακόπτη, ακόμη και όταν ο χρονοδιακόπτης έχει σταματήσει. Αυτή η δυνατότητα επιτρέπει την προετοιμασία του OCR0x στην ίδια τιμή με το TCNT0 χωρίς να προκαλείται διακοπή όταν είναι ενεργοποιημένο το ρολόι χρονοδιακόπτη/μετρητή.
Χρήση της Μονάδας Σύγκρισης Εξόδων
Εφόσον η εγγραφή του TCNT0 σε οποιονδήποτε τρόπο λειτουργίας θα μπλοκάρει όλες τις αντιστοιχίσεις σύγκρισης για έναν κύκλο ρολογιού με χρονοδιακόπτη, υπάρχουν κίνδυνοι κατά την αλλαγή του TCNT0 κατά τη χρήση της Μονάδας σύγκρισης εξόδων, ανεξάρτητα από το εάν το χρονόμετρο/μετρητής λειτουργεί ή όχι. Εάν η τιμή που έχει γραφτεί στο TCNT0 ισούται με την τιμή OCR0x, θα χαθεί η αντιστοίχιση σύγκρισης, με αποτέλεσμα τη δημιουργία εσφαλμένης κυματομορφής. Ομοίως, μην γράφετε την τιμή TCNT0 ίση με BOTTOM όταν ο μετρητής μετράει προς τα κάτω.
Η εγκατάσταση του OC0x θα πρέπει να πραγματοποιηθεί πριν ρυθμιστεί ο καταχωρητής κατεύθυνσης δεδομένων για την έξοδο του ακροδέκτη θύρας. Ο ευκολότερος τρόπος για να ορίσετε την τιμή OC0x είναι να χρησιμοποιήσετε τα bit στροβοσκοπικής σύγκρισης εξόδου δύναμης (FOC0x) στην Κανονική λειτουργία. Οι καταχωρητές OC0x διατηρούν τις τιμές τους ακόμη και όταν αλλάζουν μεταξύ των τρόπων δημιουργίας κυματομορφών.
Λάβετε υπόψη ότι τα bit COM0x[1:0] δεν αποθηκεύονται διπλά στην προσωρινή μνήμη μαζί με την τιμή σύγκρισης. Η αλλαγή των bit COM0x[1:0] θα εφαρμοστεί αμέσως.
Συγκρίνετε Μονάδα Εξόδου Αντιστοίχισης
Τα bit λειτουργίας σύγκρισης εξόδου (COM0x[1:0]) έχουν δύο λειτουργίες. Η Γεννήτρια Κυματομορφών χρησιμοποιεί τα bit COM0x[1:0] για τον καθορισμό της κατάστασης Σύγκρισης Εξόδου (OC0x) στην επόμενη Αντιστοίχιση σύγκρισης. Επίσης, τα bit COM0x[1:0] ελέγχουν την πηγή εξόδου του pin OC0x. Εικόνα 11-6 δείχνει ένα απλοποιημένο σχηματικό σχήμα της λογικής που επηρεάζεται από τη ρύθμιση bit COM0x[1:0]. Οι καταχωρητές εισόδου/εξόδου, τα bit εισόδου/εξόδου και οι ακίδες εισόδου/εξόδου στο σχήμα εμφανίζονται με έντονους χαρακτήρες. Εμφανίζονται μόνο τα τμήματα των γενικών καταχωρητών ελέγχου θυρών I/O (DDR και PORT) που επηρεάζονται από τα bit COM0x[1:0]. Όταν αναφέρεται στην κατάσταση OC0x, η αναφορά αφορά τον εσωτερικό καταχωρητή OC0x και όχι τον ακροδέκτη OC0x. Εάν συμβεί επαναφορά συστήματος, ο καταχωρητής OC0x επαναφέρεται στο "0".
Όταν το OC0A/OC0B είναι συνδεδεμένο στον ακροδέκτη I/O, η λειτουργία των bit COM0A[1:0]/COM0B[1:0] εξαρτάται από τη ρύθμιση bit WGM0[2:0]. Πίνακας 11-2 δείχνει τη λειτουργικότητα bit COM0x[1:0] όταν τα bit WGM0[2:0] έχουν ρυθμιστεί σε κανονική ή CTC λειτουργία (μη PWM).
Πίνακας 11-2. Συγκρίνετε τη λειτουργία εξόδου, τη λειτουργία μη PWM
COM0A1 COM0B1 | COM0A0 COM0B0 | Περιγραφή |
0 | 0 | Κανονική λειτουργία θύρας, OC0A/OC0B αποσυνδεδεμένο. |
0 | 1 | Εναλλαγή OC0A/OC0B στη σύγκριση αντιστοίχισης |
1 | 0 | Διαγράψτε το OC0A/OC0B στο Compare Match |
1 | 1 | Ρυθμίστε το OC0A/OC0B στο Compare Match |
Πίνακας 11-3 δείχνει τη λειτουργικότητα bit COM0x[1:0] όταν τα bit WGM0[2:0] έχουν ρυθμιστεί σε λειτουργία γρήγορης PWM.
Πίνακας 11-3. Συγκρίνετε τη λειτουργία εξόδου, τη λειτουργία γρήγορης PWM(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Περιγραφή |
0 | 0 | Κανονική λειτουργία θύρας, OC0A/OC0B αποσυνδεδεμένο. |
0 | 1 | Ρεζερβέ |
1 | 0 | Διαγράψτε το OC0A/OC0B στην αντιστοίχιση σύγκρισης, ορίστε το OC0A/OC0B στο BOTTOM (λειτουργία χωρίς αναστροφή) |
1 | 1 | Ρυθμίστε το OC0A/OC0B στο Compare Match, διαγράψτε το OC0A/OC0B στο BOTTOM (λειτουργία αναστροφής) |
Σημείωση: Μια ειδική περίπτωση παρουσιάζεται όταν το OCR0A ή OCR0B ισούται με TOP και έχει οριστεί COM0A1/COM0B1. Σε αυτήν την περίπτωση, η αντιστοίχιση σύγκρισης αγνοείται, αλλά το σετ ή η εκκαθάριση γίνεται στο BOTTOM. Βλέπω «Γρήγορη λειτουργία PWM» στη σελίδα 73 για περισσότερες λεπτομέρειες.
Πίνακας 11-4 δείχνει τη λειτουργικότητα bit COM0x[1:0] όταν τα bit WGM0[2:0] έχουν ρυθμιστεί στη σωστή λειτουργία PWM φάσης.
Πίνακας 11-4. Συγκρίνετε τη λειτουργία εξόδου, τη λειτουργία PWM σωστής φάσης(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Περιγραφή |
0 | 0 | Κανονική λειτουργία θύρας, OC0A/OC0B αποσυνδεδεμένο. |
0 | 1 | Ρεζερβέ |
1 | 0 | Διαγράψτε το OC0A/OC0B στη σύγκριση αντιστοίχισης κατά τη μέτρηση. Ρυθμίστε το OC0A/OC0B στο Compare Match κατά τη μείωση της μέτρησης. |
1 | 1 | Ρυθμίστε το OC0A/OC0B στη σύγκριση αντιστοίχισης κατά τη μέτρηση. Διαγράψτε το OC0A/OC0B στη σύγκριση αντιστοίχισης κατά τη μείωση της μέτρησης. |
Σημείωση: 1. Μια ειδική περίπτωση παρουσιάζεται όταν το OCR0A ή OCR0B ισούται με TOP και έχει οριστεί COM0A1/COM0B1. Σε αυτήν την περίπτωση, το Compare Match αγνοείται, αλλά το set or clear γίνεται στο TOP. Βλέπω «Λειτουργία Phase Correct PWM» στη σελίδα 74 για περισσότερες λεπτομέρειες.
Bits 3:2 – Απάντηση: Reserved Bits
Αυτά τα bit είναι δεσμευμένα bit στο ATtiny25/45/85 και θα διαβάζονται πάντα ως μηδέν.
Bits 1:0 – WGM0[1:0]: Λειτουργία δημιουργίας κυματομορφών
Σε συνδυασμό με το bit WGM02 που βρίσκεται στον καταχωρητή TCCR0B, αυτά τα bit ελέγχουν την ακολουθία μέτρησης του μετρητή, την πηγή για τη μέγιστη τιμή μετρητή (TOP) και τον τύπο δημιουργίας κυματομορφής που θα χρησιμοποιηθεί, βλ. Πίνακας 11-5. Οι τρόποι λειτουργίας που υποστηρίζονται από τη μονάδα Χρονοδιακόπτη/Μετρητή είναι: Κανονική λειτουργία (μετρητής), Εκκαθάριση χρονοδιακόπτη στη σύγκριση αντιστοίχισης (CTC) και δύο τύποι λειτουργιών διαμόρφωσης πλάτους παλμού (PWM) (βλ. «Τρόποι λειτουργίας» στη σελίδα 71).
Πίνακας 11-5. Περιγραφή bit λειτουργίας δημιουργίας κυματομορφής
Τρόπος | WGM 02 | WGM 01 | WGM 00 | Τρόπος λειτουργίας χρονοδιακόπτη/μετρητή | ΚΟΡΥΦΗ | Ενημέρωση του OCRx στο | TOV Flag Ρυθμίστηκε |
0 | 0 | 0 | 0 | Κανονικός | 0xFF | Αμεσος | ΜΕΓ(1) |
1 | 0 | 0 | 1 | PWM, Phase Correct | 0xFF | ΚΟΡΥΦΗ | ΚΑΤΩ ΜΕΡΟΣ(2) |
2 | 0 | 1 | 0 | CTC | μπάμιες | Αμεσος | ΜΕΓ(1) |
3 | 0 | 1 | 1 | Γρήγορο PWM | 0xFF | ΚΑΤΩ ΜΕΡΟΣ(2) | ΜΕΓ(1) |
4 | 1 | 0 | 0 | Ρεζερβέ | – | – | – |
5 | 1 | 0 | 1 | PWM, Phase Correct | μπάμιες | ΚΟΡΥΦΗ | ΚΑΤΩ ΜΕΡΟΣ(2) |
6 | 1 | 1 | 0 | Ρεζερβέ | – | – | – |
7 | 1 | 1 | 1 | Γρήγορο PWM | μπάμιες | ΚΑΤΩ ΜΕΡΟΣ(2) | ΚΟΡΥΦΗ |
Bit 7 – FOC0A: Έξοδος δύναμης Σύγκριση A
Το bit FOC0A είναι ενεργό μόνο όταν τα bit WGM καθορίζουν μια λειτουργία εκτός PWM.
Ωστόσο, για να διασφαλιστεί η συμβατότητα με μελλοντικές συσκευές, αυτό το bit πρέπει να μηδενιστεί όταν γράφεται το TCCR0B όταν λειτουργεί σε λειτουργία PWM. Όταν γράφετε ένα λογικό στο bit FOC0A, επιβάλλεται μια άμεση αντιστοίχιση σύγκρισης στη μονάδα δημιουργίας κυματομορφών. Η έξοδος OC0A αλλάζει σύμφωνα με τη ρύθμιση bits COM0A[1:0]. Σημειώστε ότι το bit FOC0A υλοποιείται ως στροβοσκόπιο. Επομένως, είναι η τιμή που υπάρχει στα bit COM0A[1:0] που καθορίζει το αποτέλεσμα της αναγκαστικής σύγκρισης.
Ένα στροβοσκόπιο FOC0A δεν θα δημιουργήσει καμία διακοπή, ούτε θα διαγράψει το χρονόμετρο στη λειτουργία CTC χρησιμοποιώντας το OCR0A ως TOP. Το bit FOC0A διαβάζεται πάντα ως μηδέν.
Bit 6 – FOC0B: Force Output Σύγκριση B
Το bit FOC0B είναι ενεργό μόνο όταν τα bit WGM καθορίζουν μια λειτουργία εκτός PWM.
Ωστόσο, για να διασφαλιστεί η συμβατότητα με μελλοντικές συσκευές, αυτό το bit πρέπει να μηδενιστεί όταν γράφεται το TCCR0B όταν λειτουργεί σε λειτουργία PWM. Όταν γράφετε ένα λογικό στο bit FOC0B, επιβάλλεται μια άμεση αντιστοίχιση σύγκρισης στη μονάδα δημιουργίας κυματομορφών. Η έξοδος OC0B αλλάζει σύμφωνα με τη ρύθμιση bits COM0B[1:0]. Σημειώστε ότι το bit FOC0B υλοποιείται ως στροβοσκόπιο. Επομένως, είναι η τιμή που υπάρχει στα bit COM0B[1:0] που καθορίζει το αποτέλεσμα της αναγκαστικής σύγκρισης.
Ένα στροβοσκοπικό FOC0B δεν θα δημιουργήσει καμία διακοπή, ούτε θα διαγράψει το χρονόμετρο στη λειτουργία CTC χρησιμοποιώντας το OCR0B ως TOP.
Το bit FOC0B διαβάζεται πάντα ως μηδέν.
Bits 5:4 – Απάντηση: Reserved Bits
Αυτά τα bit είναι δεσμευμένα bit στο ATtiny25/45/85 και θα διαβάζονται πάντα ως μηδέν.
Bit 3 – WGM02: Λειτουργία δημιουργίας κυματομορφών
Δείτε την περιγραφή στο «TCCR0A – Μητρώος χρονοδιακόπτη/μετρητή ελέγχου A» στη σελίδα 77.
Bits 2:0 – CS0[2:0]: Επιλογή ρολογιού
Τα τρία bit επιλογής ρολογιού επιλέγουν την πηγή ρολογιού που θα χρησιμοποιηθεί από το χρονόμετρο/μετρητή.
Πίνακας 11-6. Περιγραφή bit επιλογής ρολογιού
CS02 | CS01 | CS00 | Περιγραφή |
0 | 0 | 0 | Δεν υπάρχει πηγή ρολογιού (ο χρονοδιακόπτης/μετρητής σταμάτησε) |
0 | 0 | 1 | clkI/O/(Χωρίς προκλιμάκωση) |
0 | 1 | 0 | clkI/O/8 (Από το prescaler) |
0 | 1 | 1 | clkI/O/64 (Από το prescaler) |
1 | 0 | 0 | clkI/O/256 (Από το prescaler) |
1 | 0 | 1 | clkI/O/1024 (Από το prescaler) |
1 | 1 | 0 | Εξωτερική πηγή ρολογιού στην ακίδα T0. Ρολόι στην άκρη που πέφτει. |
1 | 1 | 1 | Εξωτερική πηγή ρολογιού στην ακίδα T0. Ρολόι στην ανερχόμενη άκρη. |
Εάν χρησιμοποιούνται λειτουργίες εξωτερικής ακίδας για το Timer/Counter0, οι μεταβάσεις στον ακροδέκτη T0 θα χρονίσουν τον μετρητή ακόμα κι αν ο ακροδέκτης έχει διαμορφωθεί ως έξοδος. Αυτή η δυνατότητα επιτρέπει τον έλεγχο λογισμικού της καταμέτρησης.
Μονάδες μέτρησης και σύγκρισης
Η γενική λειτουργία Timer/Counter1 περιγράφεται στην ασύγχρονη λειτουργία και η λειτουργία στη σύγχρονη λειτουργία αναφέρεται μόνο εάν υπάρχουν διαφορές μεταξύ αυτών των δύο λειτουργιών. Εικόνα 12-2 εμφανίζει μπλοκ διάγραμμα καταχωρητή συγχρονισμού χρονοδιακόπτη/μετρητή 1 και καθυστερήσεις συγχρονισμού μεταξύ των καταχωρητών. Σημειώστε ότι όλες οι λεπτομέρειες της πύλης ρολογιού δεν φαίνονται στο σχήμα. Οι τιμές καταχωρητή Timer/Counter1 περνούν από τους εσωτερικούς καταχωρητές συγχρονισμού, οι οποίοι προκαλούν την καθυστέρηση συγχρονισμού εισόδου, πριν επηρεάσουν τη λειτουργία του μετρητή. Οι καταχωρητές TCCR1, GTCCR, OCR1A, OCR1B και OCR1C μπορούν να διαβαστούν αμέσως μετά την εγγραφή του μητρώου. Οι τιμές ανάγνωσης καθυστερούν για τον καταχωρητή Timer/Counter1 (TCNT1) και τις σημαίες (OCF1A, OCF1B και TOV1), λόγω του συγχρονισμού εισόδου και εξόδου.
Το Timer/Counter1 διαθέτει υψηλή ανάλυση και χρήση υψηλής ακρίβειας με τις χαμηλότερες ευκαιρίες προκλιμάκωσης. Μπορεί επίσης να υποστηρίξει δύο ακριβείς, υψηλής ταχύτητας, 8-bit διαμορφωτές πλάτους παλμού που χρησιμοποιούν ταχύτητες ρολογιού έως 64 MHz (ή 32 MHz σε λειτουργία χαμηλής ταχύτητας). Σε αυτήν τη λειτουργία, το Timer/Counter1 και οι καταχωρητές σύγκρισης εξόδου χρησιμεύουν ως δύο αυτόνομα PWM με μη επικαλυπτόμενες μη ανεστραμμένες και ανεστραμμένες εξόδους. Παραπέμπω σελίδα 86 για λεπτομερή περιγραφή αυτής της λειτουργίας. Ομοίως, οι υψηλές ευκαιρίες προκλιμάκωσης καθιστούν αυτή τη μονάδα χρήσιμη για λειτουργίες χαμηλότερης ταχύτητας ή λειτουργίες ακριβούς χρονισμού με σπάνιες ενέργειες.
Εικόνα 12-2. Χρονοδιακόπτης/Μετρητής 1 Συγχρονισμός Εγγραφή Μπλοκ Διάγραμμα.
Ο χρονοδιακόπτης/μετρητής1 και ο προκλιμακωτής επιτρέπουν τη λειτουργία της CPU από οποιαδήποτε πηγή ρολογιού ενώ η προκλιμάκωση λειτουργεί στο γρήγορο ρολόι PCK 64 MHz (ή 32 MHz σε λειτουργία χαμηλής ταχύτητας) στην ασύγχρονη λειτουργία.
Σημειώστε ότι η συχνότητα ρολογιού του συστήματος πρέπει να είναι μικρότερη από το ένα τρίτο της συχνότητας PCK. Ο μηχανισμός συγχρονισμού του ασύγχρονου χρονοδιακόπτη/μετρητή1 χρειάζεται τουλάχιστον δύο άκρες του PCK όταν το ρολόι του συστήματος είναι υψηλό. Εάν η συχνότητα του ρολογιού του συστήματος είναι πολύ υψηλή, υπάρχει κίνδυνος απώλειας δεδομένων ή τιμών ελέγχου.
Τα παρακάτω Εικόνα 12-3 δείχνει το μπλοκ διάγραμμα για το Timer/Counter1.
Πίνακας 12-1. Λειτουργία σύγκρισης Επιλέξτε σε λειτουργία PWM
COM1x1 | COM1x0 | Επίδραση στις καρφίτσες σύγκρισης εξόδου |
0 | 0 | Το OC1x δεν είναι συνδεδεμένο. Το OC1x δεν είναι συνδεδεμένο. |
0 | 1 | Το OC1x διαγράφηκε κατά τη σύγκριση της αντιστοίχισης. Ορίστε ότανTCNT1 = 00 $. Το OC1x ορίστηκε σε σύγκριση με τον αγώνα. Διαγράφηκε όταν TCNT1 = 00 $. |
1 | 0 | Το OC1x διαγράφηκε κατά τη σύγκριση της αντιστοίχισης. Ορίστε όταν TCNT1 = 00 $. Το OC1x δεν είναι συνδεδεμένο. |
1 | 1 | OC1x Ρυθμίστε την αντιστοίχιση σύγκρισης. Διαγράφηκε όταν TCNT1 = 00 $. Το OC1x δεν είναι συνδεδεμένο. |
Χαρακτηριστικά ADC
Πίνακας 21-8. Χαρακτηριστικά ADC, Κανάλια μεμονωμένων άκρων. ΤΑ = -40°C έως +85°C
Σύμβολο | Παράμετρος | Κατάσταση | Ελάχ | Τυπ | Μέγ | Μονάδες |
Ψήφισμα | 10 | Bits | ||||
Απόλυτη ακρίβεια (Συμπεριλαμβανομένου των σφαλμάτων INL, DNL και Quantization, Gain και Offset) | VREF = 4V, VCC = 4V,
Ρολόι ADC = 200 kHz |
2 | LSB | |||
VREF = 4V, VCC = 4V,
Ρολόι ADC = 1 MHz |
3 | LSB | ||||
VREF = 4V, VCC = 4V,
Ρολόι ADC = 200 kHz Λειτουργία μείωσης θορύβου |
1.5 | LSB | ||||
VREF = 4V, VCC = 4V,
Ρολόι ADC = 1 MHz Λειτουργία μείωσης θορύβου |
2.5 | LSB | ||||
Ολοκληρωμένη μη γραμμικότητα (INL) (Ακρίβεια μετά τη βαθμονόμηση μετατόπισης και απολαβής) | VREF = 4V, VCC = 4V,
Ρολόι ADC = 200 kHz |
1 | LSB | |||
Διαφορική μη γραμμικότητα (DNL) | VREF = 4V, VCC = 4V,
Ρολόι ADC = 200 kHz |
0.5 | LSB | |||
Σφάλμα κέρδους | VREF = 4V, VCC = 4V,
Ρολόι ADC = 200 kHz |
2.5 | LSB | |||
Σφάλμα μετατόπισης | VREF = 4V, VCC = 4V,
Ρολόι ADC = 200 kHz |
1.5 | LSB | |||
Χρόνος μετατροπής | Μετατροπή δωρεάν εκτέλεσης | 14 | 280 | μs | ||
Συχνότητα ρολογιού | 50 | 1000 | kHz | |||
VIN | Είσοδος Voltage | GND | VREF | V | ||
Εύρος ζώνης εισόδου | 38.4 | kHz | ||||
ΑΡΕΦ | External Reference Voltage | 2.0 | VCC | V | ||
VINT | Εσωτερικός τόμοςtagε Αναφορά | 1.0 | 1.1 | 1.2 | V | |
Εσωτερική αναφορά 2.56V (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | 32 | kΩ | ||||
ΒΡΟΧΗ | Αντίσταση αναλογικής εισόδου | 100 | MΩ | |||
Έξοδος ADC | 0 | 1023 | LSB |
Σημείωση: 1. Οι τιμές είναι μόνο κατευθυντήριες γραμμές.
Πίνακας 21-9. Χαρακτηριστικά ADC, Διαφορικά κανάλια (Μονοπολική λειτουργία). ΤΑ = -40°C έως +85°C
Σύμβολο | Παράμετρος | Κατάσταση | Ελάχ | Τυπ | Μέγ | Μονάδες |
Ψήφισμα | Κέρδος = 1x | 10 | Bits | |||
Κέρδος = 20x | 10 | Bits | ||||
Απόλυτη ακρίβεια (συμπεριλαμβανομένων των INL, DNL και
Σφάλματα κβαντοποίησης, κέρδους και μετατόπισης) |
Κέρδος = 1x
VREF = 4V, VCC = 5V Ρολόι ADC = 50 – 200 kHz |
10.0 | LSB | |||
Κέρδος = 20x
VREF = 4V, VCC = 5V Ρολόι ADC = 50 – 200 kHz |
20.0 | LSB | ||||
Ολοκληρωμένη μη γραμμικότητα (INL) (Ακρίβεια μετά τη βαθμονόμηση μετατόπισης και απολαβής) | Κέρδος = 1x
VREF = 4V, VCC = 5V Ρολόι ADC = 50 – 200 kHz |
4.0 | LSB | |||
Κέρδος = 20x
VREF = 4V, VCC = 5V Ρολόι ADC = 50 – 200 kHz |
10.0 | LSB | ||||
Σφάλμα κέρδους | Κέρδος = 1x | 10.0 | LSB | |||
Κέρδος = 20x | 15.0 | LSB | ||||
Σφάλμα μετατόπισης | Κέρδος = 1x
VREF = 4V, VCC = 5V Ρολόι ADC = 50 – 200 kHz |
3.0 | LSB | |||
Κέρδος = 20x
VREF = 4V, VCC = 5V Ρολόι ADC = 50 – 200 kHz |
4.0 | LSB | ||||
Χρόνος μετατροπής | Μετατροπή δωρεάν εκτέλεσης | 70 | 280 | μs | ||
Συχνότητα ρολογιού | 50 | 200 | kHz | |||
VIN | Είσοδος Voltage | GND | VCC | V | ||
VDIFF | Εισαγωγή διαφορικό τόμοςtage | VREF/Κέρδος | V | |||
Εύρος ζώνης εισόδου | 4 | kHz | ||||
ΑΡΕΦ | External Reference Voltage | 2.0 | VCC – 1.0 | V | ||
VINT | Εσωτερικός τόμοςtagε Αναφορά | 1.0 | 1.1 | 1.2 | V | |
Εσωτερική αναφορά 2.56V (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | Αντίσταση εισόδου αναφοράς | 32 | kΩ | |||
ΒΡΟΧΗ | Αντίσταση αναλογικής εισόδου | 100 | MΩ | |||
Έξοδος μετατροπής ADC | 0 | 1023 | LSB |
Σημείωση: Οι τιμές είναι μόνο οδηγίες.
Πίνακας 21-10. Χαρακτηριστικά ADC, Διαφορικά κανάλια (Διπολική λειτουργία). ΤΑ = -40°C έως +85°C
Σύμβολο | Παράμετρος | Κατάσταση | Ελάχ | Τυπ | Μέγ | Μονάδες |
Ψήφισμα | Κέρδος = 1x | 10 | Bits | |||
Κέρδος = 20x | 10 | Bits | ||||
Απόλυτη ακρίβεια (συμπεριλαμβανομένων των INL, DNL και
Σφάλματα κβαντοποίησης, κέρδους και μετατόπισης) |
Κέρδος = 1x
VREF = 4V, VCC = 5V Ρολόι ADC = 50 – 200 kHz |
8.0 | LSB | |||
Κέρδος = 20x
VREF = 4V, VCC = 5V Ρολόι ADC = 50 – 200 kHz |
8.0 | LSB | ||||
Ολοκληρωμένη μη γραμμικότητα (INL) (Ακρίβεια μετά τη βαθμονόμηση μετατόπισης και απολαβής) | Κέρδος = 1x
VREF = 4V, VCC = 5V Ρολόι ADC = 50 – 200 kHz |
4.0 | LSB | |||
Κέρδος = 20x
VREF = 4V, VCC = 5V Ρολόι ADC = 50 – 200 kHz |
5.0 | LSB | ||||
Σφάλμα κέρδους | Κέρδος = 1x | 4.0 | LSB | |||
Κέρδος = 20x | 5.0 | LSB | ||||
Σφάλμα μετατόπισης | Κέρδος = 1x
VREF = 4V, VCC = 5V Ρολόι ADC = 50 – 200 kHz |
3.0 | LSB | |||
Κέρδος = 20x
VREF = 4V, VCC = 5V Ρολόι ADC = 50 – 200 kHz |
4.0 | LSB | ||||
Χρόνος μετατροπής | Μετατροπή δωρεάν εκτέλεσης | 70 | 280 | μs | ||
Συχνότητα ρολογιού | 50 | 200 | kHz | |||
VIN | Είσοδος Voltage | GND | VCC | V | ||
VDIFF | Εισαγωγή διαφορικό τόμοςtage | VREF/Κέρδος | V | |||
Εύρος ζώνης εισόδου | 4 | kHz | ||||
ΑΡΕΦ | External Reference Voltage | 2.0 | VCC – 1.0 | V | ||
VINT | Εσωτερικός τόμοςtagε Αναφορά | 1.0 | 1.1 | 1.2 | V | |
Εσωτερική αναφορά 2.56V (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | Αντίσταση εισόδου αναφοράς | 32 | kΩ | |||
ΒΡΟΧΗ | Αντίσταση αναλογικής εισόδου | 100 | MΩ | |||
Έξοδος μετατροπής ADC | -512 | 511 | LSB |
Σύνοψη σετ οδηγιών
Βελτίωση της μνήμης | Λειτουργίες | Περιγραφή | Λειτουργία | Σημαίες | #Ρολόγια |
ΟΔΗΓΙΕΣ ΑΡΙΘΜΗΤΙΚΗΣ ΚΑΙ ΛΟΓΙΚΗΣ | |||||
ΠΡΟΣΘΕΤΩ | Rd, Rr | Προσθέστε δύο Μητρώα | Rd ← Rd + Rr | Z,C,N,V,H | 1 |
ADC | Rd, Rr | Προσθήκη με Carry two Registers | Rd ← Rd + Rr + C | Z,C,N,V,H | 1 |
ADIW | Rdl, K | Προσθήκη Άμεσης στο Word | Rdh:Rdl ← Rdh:Rdl + K | Z,C,N,V,S | 2 |
ΥΠΟ | Rd, Rr | Αφαιρέστε δύο καταχωρητές | Rd ← Rd – Rr | Z,C,N,V,H | 1 |
ΠΑΝΩ | Rd, K | Αφαιρέστε τη σταθερά από το μητρώο | Rd ← Rd – K | Z,C,N,V,H | 1 |
SBC | Rd, Rr | Αφαίρεση με Carry two Registers | Rd ← Rd – Rr – C | Z,C,N,V,H | 1 |
SBCI | Rd, K | Αφαίρεση με Constant Carry από το Reg. | Rd ← Rd – K – C | Z,C,N,V,H | 1 |
SBIW | Rdl, K | Αφαιρέστε το Άμεσο από το Word | Rdh:Rdl ← Rdh:Rdl – K | Z,C,N,V,S | 2 |
ΚΑΙ | Rd, Rr | Logical AND Registers | Rd ← Rd ∙ Rr | Z,N,V | 1 |
ΑΝΤΙ | Rd, K | Λογικό ΚΑΙ Εγγραφή και Σταθερό | Rd ← Rd ∙ K | Z,N,V | 1 |
OR | Rd, Rr | Logical OR Registers | Rd ← Rd v Rr | Z,N,V | 1 |
ORI | Rd, K | Logical OR Register και Constant | Rd ← Rd v K | Z,N,V | 1 |
EOR | Rd, Rr | Αποκλειστικά Μητρώα Ή | Rd ← Rd ⊕ Rr | Z,N,V | 1 |
COM | Rd | Το συμπλήρωμα κάποιου | Rd ← 0xFF − Rd | Z,C,N,V | 1 |
ΝΕΟ | Rd | Συμπλήρωμα δύο | Rd ← 0x00 − Rd | Z,C,N,V,H | 1 |
SBR | Rd,K | Ορισμός Bit(s) στο Register | Rd ← Rd v K | Z,N,V | 1 |
CBR | Rd,K | Εκκαθάριση bit(α) στο μητρώο | Rd ← Rd ∙ (0xFF – K) | Z,N,V | 1 |
INC | Rd | Αύξηση | Rd ← Rd + 1 | Z,N,V | 1 |
ΔΕΚ | Rd | Μείωση | Rd ← Rd − 1 | Z,N,V | 1 |
TST | Rd | Δοκιμή για μηδέν ή μείον | Rd ← Rd ∙ Rd | Z,N,V | 1 |
CLR | Rd | Εκκαθάριση μητρώου | Rd ← Rd ⊕ Rd | Z,N,V | 1 |
SER | Rd | Ορίστε το μητρώο | Rd ← 0xFF | Κανένας | 1 |
ΟΔΗΓΙΕΣ ΥΠΟΚΑΤΑΣΤΗΜΑΤΟΣ | |||||
RJMP | k | Σχετικό Άλμα | PC ← PC + k + 1 | Κανένας | 2 |
IJMP | Έμμεσο άλμα στο (Z) | Η/Υ ← Ζ | Κανένας | 2 | |
RCALL | k | Σχετική κλήση υπορουτίνας | PC ← PC + k + 1 | Κανένας | 3 |
ICALL | Έμμεση κλήση προς (Ζ) | Η/Υ ← Ζ | Κανένας | 3 | |
ΜΟΥΣΚΕΥΩ | Υπορουτίνα Επιστροφή | Η/Υ ← ΣΤΟΙΒΑ | Κανένας | 4 | |
ΡΕΤΙ | Διακοπή Επιστροφή | Η/Υ ← ΣΤΟΙΒΑ | I | 4 | |
CPSE | Rd, Rr | Σύγκριση, Παράλειψη αν είναι ίσο | εάν (Rd = Rr) PC ← PC + 2 ή 3 | Κανένας | 1/2/3 |
CP | Rd, Rr | Συγκρίνω | Rd − Rr | Z, N, V, C, H | 1 |
CPC | Rd, Rr | Συγκρίνετε με το Carry | Rd − Rr − C | Z, N, V, C, H | 1 |
ΔΤΚ | Rd,K | Συγκρίνετε Εγγραφή με Άμεση | Rd − K | Z, N, V, C, H | 1 |
SBRC | Rr, b | Παράλειψη εάν το Bit in Register Cleared | εάν (Rr(b)=0) PC ← PC + 2 ή 3 | Κανένας | 1/2/3 |
SBRS | Rr, b | Παράλειψη εάν το Bit in Register έχει οριστεί | εάν (Rr(b)=1) PC ← PC + 2 ή 3 | Κανένας | 1/2/3 |
SBIC | Ρ, β | Παράβλεψη εάν έχει διαγραφεί η εγγραφή Bit in I/O | εάν (P(b)=0) PC ← PC + 2 ή 3 | Κανένας | 1/2/3 |
SBIS | Ρ, β | Παράλειψη εάν το Bit in I/O Register έχει οριστεί | εάν (P(b)=1) PC ← PC + 2 ή 3 | Κανένας | 1/2/3 |
BRBS | s, k | Branch if Status Flag Set | αν (SREG(s) = 1) τότε PC←PC+k + 1 | Κανένας | 1/2 |
BRBC | s, k | Υποκατάστημα εάν η σημαία κατάστασης έχει διαγραφεί | αν (SREG(s) = 0) τότε PC←PC+k + 1 | Κανένας | 1/2 |
BREQ | k | Κλάδος αν ίσος | αν (Z = 1) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRNE | k | Υποκατάστημα αν όχι ίσο | αν (Z = 0) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRCS | k | Branch if Carry Set | αν (C = 1) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRCC | k | Υποκατάστημα εάν έχει εκκαθαριστεί | αν (C = 0) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRSH | k | Υποκατάστημα αν είναι Ίδιο ή Ανώτερο | αν (C = 0) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRLO | k | Υποκατάστημα αν Κάτω | αν (C = 1) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRMI | k | Υποκατάστημα αν Μείον | εάν (N = 1) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRPL | k | Υποκατάστημα αν Plus | εάν (N = 0) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRGE | k | Υποκατάστημα αν Μεγαλύτερο ή Ίσο, Υπογεγραμμένο | αν (N ⊕ V= 0) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRLT | k | Υποκατάστημα αν είναι λιγότερο από μηδέν, υπογεγραμμένο | αν (N ⊕ V= 1) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRHS | k | Branch if Half Carry Flag Set | αν (H = 1) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRHC | k | Υποκατάστημα εάν το Half Carry Flag Cleared | αν (H = 0) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRTS | k | Branch if T Σετ σημαία | αν (T = 1) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRTC | k | Υποκατάστημα εάν η σημαία T έχει διαγραφεί | αν (T = 0) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRVS | k | Διακλάδωση εάν έχει οριστεί η σημαία υπερχείλισης | αν (V = 1) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRVC | k | Υποκαταστήστε εάν η σημαία υπερχείλισης έχει διαγραφεί | αν (V = 0) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
BRIE | k | Διακλάδωση εάν είναι ενεργοποιημένη η διακοπή | αν ( I = 1) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
ΓΕΦΥΡΑ | k | Υποκατάστημα εάν η διακοπή είναι απενεργοποιημένη | αν ( I = 0) τότε PC ← PC + k + 1 | Κανένας | 1/2 |
ΟΔΗΓΙΕΣ BIT ΚΑΙ BIT-TEST | |||||
SBI | Ρ,β | Ρύθμιση bit στο μητρώο εισόδου/εξόδου | I/O(P,b) ← 1 | Κανένας | 2 |
CBI | Ρ,β | Εκκαθάριση bit στο μητρώο εισόδου/εξόδου | I/O(P,b) ← 0 | Κανένας | 2 |
LSL | Rd | Λογική μετατόπιση προς τα αριστερά | Rd(n+1) ← Rd(n), Rd(0) ← 0 | Z,C,N,V | 1 |
LSR | Rd | Λογική μετατόπιση προς τα δεξιά | Rd(n) ← Rd(n+1), Rd(7) ← 0 | Z,C,N,V | 1 |
Ο ΡΟΛΟΣ | Rd | Περιστρέψτε αριστερά μέσω μεταφοράς | Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) | Z,C,N,V | 1 |
ROR | Rd | Περιστροφή δεξιά μέσω μεταφοράς | Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) | Z,C,N,V | 1 |
ASR | Rd | Αριθμητική μετατόπιση προς τα δεξιά | Rd(n) ← Rd(n+1), n=0..6 | Z,C,N,V | 1 |
Βελτίωση της μνήμης | Λειτουργίες | Περιγραφή | Λειτουργία | Σημαίες | #Ρολόγια |
ΑΝΤΑΛΑΓΗ | Rd | Ανταλλάξτε Nibbles | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | Κανένας | 1 |
BSET | s | Σετ σημαίας | SREG(s) ← 1 | SREG(ες) | 1 |
BCLR | s | Σημαία Καθαρή | SREG(s) ← 0 | SREG(ες) | 1 |
BST | Rr, b | Bit Store από την εγγραφή στο T | T ← Rr(b) | T | 1 |
BLD | Rd, b | Φόρτωση bit από το T στο Register | Rd(b) ← T | Κανένας | 1 |
SEC | Σετ Μεταφορά | Γ ← 1 | C | 1 | |
CLC | Clear Carry | Γ ← 0 | C | 1 | |
ΙΑΠΩΝΙΚΟ ΛΕΠΤΟ | Ορισμός αρνητικής σημαίας | Ν ← 1 | N | 1 | |
CLN | Καθαρή αρνητική σημαία | Ν ← 0 | N | 1 | |
SEZ | Ορισμός μηδενικής σημαίας | Z ← 1 | Z | 1 | |
CLZ | Clear Zero Flag | Z ← 0 | Z | 1 | |
SEI | Ενεργοποίηση καθολικής διακοπής | I ← 1 | I | 1 | |
CLI | Απενεργοποίηση καθολικής διακοπής | I ← 0 | I | 1 | |
SES | Ορισμός υπογεγραμμένης σημαία δοκιμής | S ← 1 | S | 1 | |
CLS | Καθαρή υπογεγραμμένη δοκιμαστική σημαία | S ← 0 | S | 1 | |
ΣΕΒ | Σετ Υπερχείλιση Συμπληρώματος Twos. | V ← 1 | V | 1 | |
CLV | Clear Twos Complement Overflow | V ← 0 | V | 1 | |
ΣΕΙΡΑ | Ορίστε το T στο SREG | T ← 1 | T | 1 | |
CLT | Καθαρίστε το T στο SREG | T ← 0 | T | 1 | |
SEH | Ρύθμιση Half Carry Flag στο SREG | H ← 1 | H | 1 | |
CLH | Clear Half Carry Flag στο SREG | H ← 0 | H | 1 | |
ΟΔΗΓΙΕΣ ΜΕΤΑΦΟΡΑ ΔΕΔΟΜΕΝΩΝ | |||||
MOV | Rd, Rr | Μετακίνηση μεταξύ μητρώων | Rd ← Rr | Κανένας | 1 |
MOVW | Rd, Rr | Αντιγράψτε το Word Register | Rd+1:Rd ← Rr+1:Rr | Κανένας | 1 |
LDI | Rd, K | Φόρτωση Άμεση | Rd ← K | Κανένας | 1 |
LD | Rd, X | Φόρτωση Έμμεσης | Rd ← (X) | Κανένας | 2 |
LD | Rd, X+ | Φόρτωση Indirect και Post-Inc. | Rd ← (X), X ← X + 1 | Κανένας | 2 |
LD | Rd, – X | Φόρτωση Έμμεσης και Προ-Δεκ. | X ← X – 1, Rd ← (X) | Κανένας | 2 |
LD | Rd, Y | Φόρτωση Έμμεσης | Rd ← (Y) | Κανένας | 2 |
LD | Rd, Y+ | Φόρτωση Indirect και Post-Inc. | Rd ← (Y), Y ← Y + 1 | Κανένας | 2 |
LD | Rd, – Y | Φόρτωση Έμμεσης και Προ-Δεκ. | Y ← Y – 1, Rd ← (Y) | Κανένας | 2 |
LDD | Rd,Y+q | Φόρτωση Έμμεσης με Μετατόπιση | Rd ← (Y + q) | Κανένας | 2 |
LD | Rd, Z | Φόρτωση Έμμεσης | Rd ← (Z) | Κανένας | 2 |
LD | Rd, Z+ | Φόρτωση Indirect και Post-Inc. | Rd ← (Z), Z ← Z+1 | Κανένας | 2 |
LD | Rd, -Z | Φόρτωση Έμμεσης και Προ-Δεκ. | Z ← Z – 1, Rd ← (Z) | Κανένας | 2 |
LDD | Rd, Z+q | Φόρτωση Έμμεσης με Μετατόπιση | Rd ← (Z + q) | Κανένας | 2 |
LDS | Rd, k | Φόρτωση απευθείας από SRAM | Rd ← (k) | Κανένας | 2 |
ST | X, Rr | Αποθήκευση Indirect | (X) ← Rr | Κανένας | 2 |
ST | X+, Rr | Store Indirect και Post-Inc. | (X) ← Rr, X ← X + 1 | Κανένας | 2 |
ST | – X, Rr | Αποθήκευση Indirect και Pre-Dec. | X ← X – 1, (X) ← Rr | Κανένας | 2 |
ST | Υ, Rr | Αποθήκευση Indirect | (Y) ← Rr | Κανένας | 2 |
ST | Y+, Rr | Store Indirect και Post-Inc. | (Y) ← Rr, Y ← Y + 1 | Κανένας | 2 |
ST | – Y, Rr | Αποθήκευση Indirect και Pre-Dec. | Y ← Y – 1, (Y) ← Rr | Κανένας | 2 |
ΣΜΝ | Y+q, Rr | Αποθήκευση Έμμεσης με Μετατόπιση | (Y + q) ← Rr | Κανένας | 2 |
ST | Ζ, Rr | Αποθήκευση Indirect | (Ζ) ← Rr | Κανένας | 2 |
ST | Z+, Rr | Store Indirect και Post-Inc. | (Z) ← Rr, Z ← Z + 1 | Κανένας | 2 |
ST | -Z, Rr | Αποθήκευση Indirect και Pre-Dec. | Z ← Z – 1, (Z) ← Rr | Κανένας | 2 |
ΣΜΝ | Z+q, Rr | Αποθήκευση Έμμεσης με Μετατόπιση | (Z + q) ← Rr | Κανένας | 2 |
STS | k, Rr | Αποθηκεύστε απευθείας στη SRAM | (ια) ← Rr | Κανένας | 2 |
LPM | Φόρτωση μνήμης προγράμματος | R0 ← (Z) | Κανένας | 3 | |
LPM | Rd, Z | Φόρτωση μνήμης προγράμματος | Rd ← (Z) | Κανένας | 3 |
LPM | Rd, Z+ | Φόρτωση Μνήμης Προγράμματος και Post-Inc | Rd ← (Z), Z ← Z+1 | Κανένας | 3 |
SPM | Αποθήκευση Μνήμης Προγράμματος | (z) ← R1:R0 | Κανένας | ||
IN | Rd, P | Στο λιμάνι | Rd ← P | Κανένας | 1 |
ΕΞΩ | P, Rr | Έξω από το λιμάνι | P ← Rr | Κανένας | 1 |
ΣΠΡΩΞΤΕ | Rr | Πατήστε Εγγραφή στη Στοίβα | ΣΤΟΙΒΑ ← Rr | Κανένας | 2 |
ΚΡΟΤΟΣ | Rd | Pop Εγγραφή από το Stack | Rd ← ΣΤΟΙΒΑ | Κανένας | 2 |
ΟΔΗΓΙΕΣ ΕΛΕΓΧΟΥ MCU | |||||
ΟΧΙ | Καμία λειτουργία | Κανένας | 1 | ||
ΥΠΝΟΣ | Υπνος | (δείτε τη συγκεκριμένη περιγραφή για τη λειτουργία Sleep) | Κανένας | 1 | |
WDR | Επαναφορά Watchdog | (δείτε τη συγκεκριμένη περιγραφή για WDR/Timer) | Κανένας | 1 | |
ΔΙΑΚΟΠΗ | Διακοπή |
Ταχύτητα (MHz) (1) | Προμήθεια Voltage (V) | Εύρος Θερμοκρασίας | Πακέτο (2) | Κωδικός παραγγελίας (3) |
10 | 1.8 – 5.5 | Βιομηχανικός
(-40 ° C έως + 85 ° C) (4) |
8P3 | ATtiny45V-10PU |
8S2 | ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR | |||
8X | ATtiny45V-10XU ATtiny45V-10XUR | |||
20M1 | ATtiny45V-10MU ATtiny45V-10MUR | |||
20 | 2.7 – 5.5 | Βιομηχανικός
(-40 ° C έως + 85 ° C) (4) |
8P3 | ATtiny45-20PU |
8S2 | ATtiny45-20SU ATtiny45-20SUR
ATtiny45-20SH ATtiny45-20SHR |
|||
8X | ATtiny45-20XU ATtiny45-20XUR | |||
20M1 | ATtiny45-20MU ATtiny45-20MUR |
Σημειώσεις: 1. Για ταχύτητα έναντι παροχής voltagε, βλέπε ενότητα 21.3 «Ταχύτητα» στη σελίδα 163.
Όλες οι συσκευασίες είναι χωρίς Pb, χωρίς αλογονίδια και πλήρως πράσινες και συμμορφώνονται με την ευρωπαϊκή οδηγία για τον περιορισμό των επικίνδυνων ουσιών (RoHS).
Ενδείξεις κωδικών
H: NiPdAu φινίρισμα μολύβδου
U: ματ κασσίτερο
R: ταινία & καρούλι
Αυτές οι συσκευές μπορούν επίσης να παρέχονται σε μορφή γκοφρέτας. Επικοινωνήστε με το τοπικό γραφείο πωλήσεων της Atmel για λεπτομερείς πληροφορίες παραγγελίας και ελάχιστες ποσότητες.
Ερράτα
Errata ATtiny25
Η επιστολή αναθεώρησης σε αυτήν την ενότητα αναφέρεται στην αναθεώρηση της συσκευής ATtiny25.
Rev D – F
Κανένα γνωστό σφάλμα.
Αναθ. B – C
Η ανάγνωση του EEPROM μπορεί να αποτύχει σε χαμηλή ένταση τροφοδοσίαςtage / χαμηλή συχνότητα ρολογιού
Η ανάγνωση του EEPROM μπορεί να αποτύχει σε χαμηλή ένταση τροφοδοσίαςtage / χαμηλή συχνότητα ρολογιού
Προσπάθεια ανάγνωσης EEPROM σε χαμηλές συχνότητες ρολογιού ή/και χαμηλή ένταση τροφοδοσίαςtage μπορεί να οδηγήσει σε μη έγκυρα δεδομένα.
Διόρθωση προβλήματος/Λύση
Μην χρησιμοποιείτε το EEPROM όταν η συχνότητα ρολογιού είναι κάτω από 1MHz και ο όγκος τροφοδοσίαςtage είναι κάτω από 2V. Εάν η συχνότητα λειτουργίας δεν μπορεί να αυξηθεί πάνω από 1 MHz, τότε τροφοδοσία voltagΤο e θα πρέπει να είναι περισσότερο από 2V. Ομοίως, εάν η προσφορά τομtagΤο e δεν μπορεί να ανυψωθεί πάνω από 2V, τότε η συχνότητα λειτουργίας θα πρέπει να είναι μεγαλύτερη από 1MHz.
Αυτό το χαρακτηριστικό είναι γνωστό ότι εξαρτάται από τη θερμοκρασία, αλλά δεν έχει χαρακτηριστεί. Δίνονται οδηγίες μόνο για τη θερμοκρασία δωματίου.
Αναθ. Α
Όχι sampοδήγησε.
Errata ATtiny45
Η επιστολή αναθεώρησης σε αυτήν την ενότητα αναφέρεται στην αναθεώρηση της συσκευής ATtiny45.
Rev F – G
Κανένα γνωστό σφάλμα
Rev D – E
Η ανάγνωση του EEPROM μπορεί να αποτύχει σε χαμηλή ένταση τροφοδοσίαςtage / χαμηλή συχνότητα ρολογιού
Η ανάγνωση του EEPROM μπορεί να αποτύχει σε χαμηλή ένταση τροφοδοσίαςtage / χαμηλή συχνότητα ρολογιού
Προσπάθεια ανάγνωσης EEPROM σε χαμηλές συχνότητες ρολογιού ή/και χαμηλή ένταση τροφοδοσίαςtage μπορεί να οδηγήσει σε μη έγκυρα δεδομένα.
Διόρθωση προβλήματος/Λύση
Μην χρησιμοποιείτε το EEPROM όταν η συχνότητα ρολογιού είναι κάτω από 1MHz και ο όγκος τροφοδοσίαςtage είναι κάτω από 2V. Εάν η συχνότητα λειτουργίας δεν μπορεί να αυξηθεί πάνω από 1 MHz, τότε τροφοδοσία voltagΤο e θα πρέπει να είναι περισσότερο από 2V. Ομοίως, εάν η προσφορά τομtagΤο e δεν μπορεί να ανυψωθεί πάνω από 2V, τότε η συχνότητα λειτουργίας θα πρέπει να είναι μεγαλύτερη από 1MHz.
Αυτό το χαρακτηριστικό είναι γνωστό ότι εξαρτάται από τη θερμοκρασία αλλά δεν έχει χαρακτηριστεί. Δίνονται οδηγίες μόνο για τη θερμοκρασία δωματίου.
Αναθ. B – C
Το PLL δεν κλειδώνει
Το EEPROM που διαβάζεται από τον κώδικα εφαρμογής δεν λειτουργεί στη λειτουργία Lock Bit 3
Η ανάγνωση του EEPROM μπορεί να αποτύχει σε χαμηλή ένταση τροφοδοσίαςtage / χαμηλή συχνότητα ρολογιού
Ο μετρητής χρονοδιακόπτη 1 παραγωγή εξόδου PWM στο OC1B- XOC1B δεν λειτουργεί σωστά
Το PLL δεν κλειδώνει
Όταν σε συχνότητες κάτω των 6.0 MHz, το PLL δεν θα κλειδώσει
Διόρθωση προβλήματος / Λύση
Όταν χρησιμοποιείτε το PLL, τρέχετε στα 6.0 MHz ή υψηλότερα.
Το EEPROM που διαβάζεται από τον κώδικα εφαρμογής δεν λειτουργεί στη λειτουργία Lock Bit 3
Όταν τα Bits Κλείδωμα Μνήμης LB2 και LB1 είναι προγραμματισμένα στη λειτουργία 3, η ανάγνωση EEPROM δεν λειτουργεί από τον κωδικό εφαρμογής.
Επιδιόρθωση προβλήματος/Εργασία
Μην ρυθμίζετε το Lock Bit Protection Mode 3 όταν χρειάζεται ανάγνωση του κωδικού της εφαρμογής από το EEPROM.
Η ανάγνωση του EEPROM μπορεί να αποτύχει σε χαμηλή ένταση τροφοδοσίαςtage / χαμηλή συχνότητα ρολογιού
Προσπάθεια ανάγνωσης EEPROM σε χαμηλές συχνότητες ρολογιού ή/και χαμηλή ένταση τροφοδοσίαςtage μπορεί να οδηγήσει σε μη έγκυρα δεδομένα.
Διόρθωση προβλήματος/Λύση
Μην χρησιμοποιείτε το EEPROM όταν η συχνότητα ρολογιού είναι κάτω από 1MHz και ο όγκος τροφοδοσίαςtage είναι κάτω από 2V. Εάν η συχνότητα λειτουργίας δεν μπορεί να αυξηθεί πάνω από 1 MHz, τότε τροφοδοσία voltagΤο e θα πρέπει να είναι περισσότερο από 2V. Ομοίως, εάν η προσφορά τομtagΤο e δεν μπορεί να ανυψωθεί πάνω από 2V, τότε η συχνότητα λειτουργίας θα πρέπει να είναι μεγαλύτερη από 1MHz.
Αυτό το χαρακτηριστικό είναι γνωστό ότι εξαρτάται από τη θερμοκρασία, αλλά δεν έχει χαρακτηριστεί. Δίνονται οδηγίες μόνο για τη θερμοκρασία δωματίου.
Μετρητής χρονοδιακόπτη 1 Παραγωγή εξόδου PWM στο OC1B – Το XOC1B δεν λειτουργεί σωστά
Χρονοδιακόπτης 1 Η έξοδος PWM OC1B-XOC1B δεν λειτουργεί σωστά. Μόνο στην περίπτωση που τα bit ελέγχου, COM1B1 και COM1B0 βρίσκονται στον ίδιο τρόπο λειτουργίας με τα COM1A1 και COM1A0, αντίστοιχα, η έξοδος OC1B-XOC1B λειτουργεί σωστά.
Επιδιόρθωση προβλήματος/Εργασία
Η μόνη λύση είναι να χρησιμοποιήσετε την ίδια ρύθμιση ελέγχου στα bit ελέγχου COM1A[1:0] και COM1B[1:0], δείτε τον πίνακα 14-4 στο φύλλο δεδομένων. Το πρόβλημα επιδιορθώθηκε για το Tiny45 rev D.
Αναθ. Α
Πολύ υψηλή κατανάλωση ρεύματος
Το DebugWIRE χάνει την επικοινωνία όταν μεμονωμένα μπαίνει σε διακοπές
Το PLL δεν κλειδώνει
Το EEPROM που διαβάζεται από τον κώδικα εφαρμογής δεν λειτουργεί στη λειτουργία Lock Bit 3
Η ανάγνωση του EEPROM μπορεί να αποτύχει σε χαμηλή ένταση τροφοδοσίαςtage / χαμηλή συχνότητα ρολογιού
Πολύ υψηλή κατανάλωση ρεύματος
Τρεις καταστάσεις θα οδηγήσουν σε υπερβολικά υψηλή κατανάλωση ρεύματος. Αυτά είναι:
Ένα εξωτερικό ρολόι επιλέγεται από ασφάλειες, αλλά η θύρα I/O εξακολουθεί να είναι ενεργοποιημένη ως έξοδος.
Το EEPROM διαβάζεται πριν τεθεί εκτός λειτουργίας.
Το VCC είναι 4.5 βολτ ή υψηλότερο.
Αποποίηση ευθύνης: Οι πληροφορίες σε αυτό το έγγραφο παρέχονται σε σχέση με προϊόντα Atmel. Καμία άδεια, ρητή ή σιωπηρή, με estoppel ή με άλλο τρόπο, για οποιοδήποτε δικαίωμα πνευματικής ιδιοκτησίας δεν χορηγείται από αυτό το έγγραφο ή σε σχέση με την πώληση προϊόντων Atmel. ΕΚΤΟΣ ΟΣΟΝ ΔΙΑΘΕΤΕΙ ΣΤΟΥΣ ΟΡΟΥΣ ΚΑΙ ΠΡΟΫΠΟΘΕΣΕΙΣ ΠΩΛΗΣΕΩΝ ATMEL ΠΟΥ ΕΝΤΟΠΙΖΟΝΤΑΙ ΣΤΟ ATMEL WEBΟ ΙΣΤΟΤΟΠΟΣ, Η ATMEL ΔΕΝ ΑΝΑΛΑΜΒΑΝΕΙ ΚΑΜΙΑ ΕΥΘΥΝΗ ΚΑΙ ΑΠΟΠΟΙΕΙΤΑΙ ΟΠΟΙΑΔΗΠΟΤΕ ΡΗΤΗ, ΣΙΩΠΗΡΗ Ή ΝΟΜΙΚΕΣ ΕΓΓΥΗΣΗ ΣΧΕΤΙΚΑ ΜΕ ΤΑ ΠΡΟΪΟΝΤΑ ΤΟΥ ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΩΝ, ΑΛΛΑ ΔΕΝ ΠΕΡΙΟΡΙΣΤΟΥΝ ΤΗΝ ΣΙΩΠΗΡΩΜΕΝΗ ΕΓΓΥΗΣΗ ΤΗΣ ΕΓΓΥΗΣΗΣ ΤΗΣ ΕΓΓΥΗΣΗΣ, -ΠΑΡΑΒΑΣΗ. ΣΕ ΚΑΜΙΑ ΠΕΡΙΠΤΩΣΗ ΔΕΝ ΕΙΝΑΙ ΥΠΕΥΘΥΝΗ Η ATMEL ΓΙΑ ΟΠΟΙΑΔΗΠΟΤΕ ΑΜΕΣΗ, ΕΜΜΕΣΗ, ΕΠΑΓΓΕΛΜΑΤΙΚΗ, ΤΙΜΩΡΙΚΗ, ΕΙΔΙΚΕΣ Ή ΣΥΜΠΑΙΤΙΚΕΣ ΖΗΜΙΕΣ (ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΩΝ, ΧΩΡΙΣ ΠΕΡΙΟΡΙΣΜΟ, ΖΗΜΙΕΣ ΓΙΑ ΑΠΩΛΕΙΑ ΚΑΙ ΑΠΩΛΕΙΑ, ΑΠΩΛΕΙΑ). ΕΚΤΟΣ ΧΡΗΣΗΣ Ή ΑΔΥΝΑΤΟΤΗΤΑΣ ΧΡΗΣΗΣ ΑΥΤΟ ΤΟ ΕΓΓΡΑΦΟ, ΑΚΟΜΑ ΚΑΙ ΑΝ Η ATMEL ΕΧΕΙ ΕΝΗΜΕΡΩΘΕΙ ΓΙΑ ΤΗΝ ΠΙΘΑΝΟΤΗΤΑ ΤΕΤΟΙΩΝ ΖΗΜΙΩΝ.
Η Atmel δεν προβαίνει σε δηλώσεις ή εγγυήσεις σχετικά με την ακρίβεια ή την πληρότητα των περιεχομένων αυτού του εγγράφου και διατηρεί το δικαίωμα να κάνει αλλαγές στις προδιαγραφές και τις περιγραφές των προϊόντων ανά πάσα στιγμή χωρίς προειδοποίηση. Η Atmel δεν δεσμεύεται να ενημερώσει τις πληροφορίες που περιέχονται στο παρόν. Εκτός εάν ορίζεται διαφορετικά, τα προϊόντα της Atmel δεν είναι κατάλληλα και δεν πρέπει να χρησιμοποιούνται σε εφαρμογές αυτοκινήτων. Τα προϊόντα Atmel δεν προορίζονται, εξουσιοδοτούνται ή καλύπτονται από εγγύηση για χρήση ως εξαρτήματα σε εφαρμογές που προορίζονται για υποστήριξη ή διατήρηση ζωής.