Εφαρμογή σχημάτων MK AVR και αλγορίθμων προγραμμάτων. Πού και πώς να σπουδάσω; Πρόσθετες παράμετροι του mega μικροελεγκτή AVR

CISC και RISC
Με βάση τον αριθμό των εντολών, οι μικροεπεξεργαστές χωρίζονται σε CISC (Complex Instruction Set Computer) και RISC (Reduced Instruction Set Computer). Ο όρος CISC σημαίνει πολύπλοκο σύστημαεντολές, RISC - συντομογραφία.
Η ιδέα πίσω από το RISC είναι να επιλέγουμε προσεκτικά εντολές που μπορούν να εκτελεστούν σε έναν μόνο κύκλο ρολογιού. Οτι. Η εφαρμογή υλικού του επεξεργαστή απλοποιείται, ο αριθμός των τρανζίστορ μειώνεται, η κατανάλωση ενέργειας και η τιμή μειώνονται.
Προφανώς, στη γενική περίπτωση, μια εντολή CISC πρέπει να αντιστοιχεί σε πολλές εντολές RISC. Ωστόσο, συνήθως τα κέρδη απόδοσης του RISC υπερτερούν των απωλειών. Ναι, τα περισσότερα γρήγορη εντολήγια το 8051 χρειάζονται 12 κύκλοι ρολογιού. Ακόμα κι αν για κάθε εντολή CISC είναι απαραίτητο να εκτελεστούν τρεις εντολές RISC, τότε στο τέλος η αρχιτεκτονική RISC θα είναι 4 φορές πιο παραγωγική.
Σήμερα, η γραμμή μεταξύ RISC και CISC είναι θολή. Για παράδειγμα, τα AVR έχουν 133 εντολές, που είναι CISC, αλλά οι περισσότερες από αυτές εκτελούνται σε έναν κύκλο ρολογιού, κάτι που είναι χαρακτηριστικό του RISC. Ως εκ τούτου, το κύριο χαρακτηριστικό του RISC θεωρείται ότι είναι η εκτέλεση εντολών σε έναν κύκλο ρολογιού.


Η καρδιά των μικροελεγκτών AVR είναι ένας πυρήνας μικροεπεξεργαστή 8-bit ή μια κεντρική μονάδα επεξεργασίας (CPU), που βασίζεται στις αρχές της αρχιτεκτονικής RISC. Η βάση αυτού του μπλοκ είναι μια αριθμητική λογική μονάδα (ALU). Με βάση το σήμα ρολογιού του συστήματος από τη μνήμη προγράμματος σύμφωνα με τα περιεχόμενα του μετρητή προγράμματος (Program Counter - PC), επιλέγεται η επόμενη εντολή και εκτελείται η ALU. Όταν επιλέγεται μια εντολή από τη μνήμη προγράμματος, εκτελείται η προηγούμενη επιλεγμένη εντολή, η οποία της επιτρέπει να επιτύχει ταχύτητα 1 MIPS στο 1 MHz.
Το ALU είναι συνδεδεμένο με καταχωρητές γενικού σκοπού RON (General Purpose Registers - GPR). Υπάρχουν μόνο 32 καταχωρητές γενικού σκοπού· είναι σε μορφή byte, δηλαδή, καθένας από αυτούς αποτελείται από οκτώ bit. Τα RON βρίσκονται στην αρχή του χώρου διευθύνσεων μνήμη τυχαίας προσπέλασης, αλλά δεν αποτελούν φυσικά μέρος του. Επομένως, η πρόσβαση τους γίνεται με δύο τρόπους (ως καταχωρητές και ως μνήμη). Αυτή η λύση είναι χαρακτηριστικό του AVR και αυξάνει την απόδοση και την απόδοση του μικροελεγκτή.
Η διαφορά μεταξύ καταχωρητών και RAM είναι ότι οποιεσδήποτε πράξεις (αριθμητικές, λογικές, bit) μπορούν να εκτελεστούν με καταχωρητές, αλλά τα δεδομένα από τους καταχωρητές μπορούν να εγγραφούν μόνο στη μνήμη RAM.
Μνήμη

Αρχιτεκτονική Fonneumann και Χάρβαρντ
Το 1945, ο Αμερικανός μαθηματικός John von Neumann διατύπωσε τις βασικές αρχές των σύγχρονων υπολογιστών. Πρότεινε μια αρχιτεκτονική που έλαβε το όνομά του (αρχιτεκτονική von Neumann) και περιελάμβανε την αποθήκευση προγραμμάτων και δεδομένων σε κοινή μνήμη(1946). Σήμερα, αυτή η αρχιτεκτονική είναι πιο χαρακτηριστική για μικροεπεξεργαστές που προορίζονται για χρήση σε υπολογιστές. Ένα παράδειγμα είναι η οικογένεια μικροεπεξεργαστών x86.
Η αρχιτεκτονική που περιλαμβάνει ξεχωριστή χρήση της μνήμης προγραμμάτων και δεδομένων ονομάζεται αρχιτεκτονική του Χάρβαρντ. Η αρχιτεκτονική του Χάρβαρντ επιτρέπει στον κεντρικό επεξεργαστή να λειτουργεί ταυτόχρονα τόσο με τη μνήμη προγράμματος όσο και με τη μνήμη δεδομένων, γεγονός που αυξάνει σημαντικά την απόδοση.


Οι μικροελεγκτές AVR εφαρμόζουν την αρχιτεκτονική του Χάρβαρντ, σύμφωνα με την οποία δεν διαχωρίζονται μόνο οι χώροι διευθύνσεων της μνήμης προγράμματος και της μνήμης δεδομένων, αλλά και οι δίαυλοι πρόσβασης σε αυτούς. Κάθε μία από τις περιοχές μνήμης δεδομένων (RAM και EEPROM) βρίσκεται επίσης στο δικό της χώρο διευθύνσεων.

Μνήμη προγράμματος (Flash ROM ή Flash ROM)

Η μνήμη προγράμματος έχει σχεδιαστεί για να αποθηκεύει μια ακολουθία εντολών που ελέγχουν τη λειτουργία του μικροελεγκτή και έχει οργάνωση 16 bit. Όλα τα AVR διαθέτουν μνήμη προγράμματος Flash, η οποία μπορεί να είναι διάφορα μεγέθη- από 1 έως 256 KB. Το κύριο πλεονέκτημά του είναι ότι βασίζεται στην αρχή του ηλεκτρικού επαναπρογραμματισμού, δηλαδή επιτρέπει επαναλαμβανόμενη διαγραφή και καταγραφή πληροφοριών. Το πρόγραμμα εισάγεται στη μνήμη Flash AVR τόσο με τη χρήση συμβατικού προγραμματιστή όσο και με τη χρήση της διεπαφής SPI, συμπεριλαμβανομένης απευθείας στη συναρμολογημένη πλακέτα. Δυνατότητα προγραμματισμού εντός κυκλώματος (λειτουργία ISP) μέσω επικοινωνίας Διεπαφή SPIΌλοι οι μικροελεγκτές AVR εκτός από τους Tiny11 και Tiny28 τους έχουν.
Όλοι οι μικροελεγκτές της οικογένειας Mega έχουν τη δυνατότητα να αυτοπρογραμματίζονται, δηλαδή να αλλάζουν ανεξάρτητα τα περιεχόμενα της μνήμης του προγράμματος τους. Αυτή η δυνατότητα σάς επιτρέπει να δημιουργείτε πολύ ευέλικτα συστήματα με βάση αυτά, ο αλγόριθμος λειτουργίας των οποίων θα αλλάζει από τον ίδιο τον μικροελεγκτή ανάλογα με τυχόν εσωτερικές συνθήκες ή εξωτερικά συμβάντα.
Ο εγγυημένος αριθμός κύκλων επανεγγραφής μνήμης flash για μικροελεγκτές AVR δεύτερης γενιάς είναι τουλάχιστον 10 χιλιάδες κύκλοι με τυπική τιμή 100 χιλιάδες κύκλους. (Η επίσημη τεχνική τεκμηρίωση της Atmel Corp. υποδεικνύει μια τιμή 10 χιλιάδων κύκλων.)

Μνήμη δεδομένων

Η μνήμη δεδομένων χωρίζεται σε τρία μέρη: μνήμη καταχωρητή, μνήμη τυχαίας πρόσβασης (RAM - μνήμη τυχαίας πρόσβασης ή RAM) και μη πτητική μνήμη (EEPROM ή EEPROM).

Μνήμη εγγραφής (RON και RVV)

Η μνήμη καταχωρητή περιλαμβάνει 32 καταχωρητές γενικής χρήσης (RON ή GPR), συνδυασμένους σε ένα αρχείο, και καταχωρητές εισόδου/εξόδου υπηρεσίας (καταχωρητές I/O). Και τα δύο βρίσκονται στο χώρο διευθύνσεων RAM, αλλά δεν αποτελούν μέρος του.
Στην περιοχή των καταχωρητών εισόδου/εξόδου υπάρχουν διάφοροι καταχωρητές υπηρεσιών (μητρώοι ελέγχου μικροελεγκτή, καταχωρητές κατάστασης κ.λπ.), καθώς και καταχωρητές για τον έλεγχο περιφερειακών συσκευών που περιλαμβάνονται στον μικροελεγκτή. Ουσιαστικά, ο έλεγχος ενός μικροελεγκτή αφορά τη διαχείριση αυτών των καταχωρητών.

Μη πτητική μνήμη δεδομένων (EEPROM)

Για μακροχρόνια αποθήκευσηΗ μνήμη EEPROM χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών που μπορούν να αλλάξουν κατά τη λειτουργία του συστήματος μικροελεγκτή. Όλα τα AVR διαθέτουν μια μονάδα μη πτητικής ηλεκτρικά επανεγγράψιμης μνήμης δεδομένων EEPROM από 64 Byte έως 4 KB. Αυτός ο τύπος μνήμης διαθέσιμα στο πρόγραμμαμικροελεγκτής απευθείας κατά την εκτέλεσή του, βολικό για την αποθήκευση ενδιάμεσων δεδομένων, διαφόρων σταθερών, συντελεστών, σειριακοί αριθμοί, κλειδιά κ.λπ. Το EEPROM μπορεί να φορτωθεί εξωτερικά είτε μέσω της διεπαφής SPI είτε με χρήση συμβατικού προγραμματιστή. Ο αριθμός των κύκλων διαγραφής/εγγραφής είναι τουλάχιστον 100 χιλιάδες.

Μνήμη τυχαίας πρόσβασης (RAM ή RAM)

Η εσωτερική στατική μνήμη RAM (SRAM) έχει μορφή byte και χρησιμοποιείται για λειτουργική αποθήκευσηδεδομένα.
Το μέγεθος της μνήμης RAM μπορεί να ποικίλλει μεταξύ διαφορετικών τσιπ από 64 Byte έως 4 KB. Ο αριθμός των κύκλων ανάγνωσης και εγγραφής στη μνήμη RAM δεν είναι περιορισμένος, αλλά όταν η τάση τροφοδοσίας είναι απενεργοποιημένη, όλες οι πληροφορίες χάνονται.
Για ορισμένους μικροελεγκτές, είναι δυνατή η σύνδεση εξωτερικής στατικής μνήμης RAM έως 64K.

Περιφέρεια

Τα περιφερειακά μικροελεγκτή AVR περιλαμβάνουν: θύρες (από 3 έως 48 γραμμές εισόδου και εξόδου), υποστήριξη για εξωτερικές διακοπές, χρονοδιακόπτες, χρονοδιακόπτη παρακολούθησης, αναλογικούς συγκριτές, ADC 8 καναλιών 10 bit, Διεπαφές UART, JTAG και SPI, συσκευή επαναφοράς χαμηλής ισχύος, διαμορφωτές πλάτους παλμού.

Θύρες εισόδου/εξόδου (I/O)

Οι θύρες εισόδου/εξόδου AVR έχουν έναν αριθμό ανεξάρτητων γραμμών εισόδου/εξόδου από 3 έως 53. Κάθε γραμμή θύρας μπορεί να προγραμματιστεί ως είσοδος ή έξοδος. Τα ισχυρά προγράμματα οδήγησης εξόδου παρέχουν χωρητικότητα μεταφοράς ρεύματος 20 mA ανά γραμμή θύρας (ρεύμα βύθισης) με μέγιστη τιμή 40 mA, επιτρέποντας, για παράδειγμα, απευθείας σύνδεση LED και διπολικά τρανζίστορ. Το συνολικό φορτίο ρεύματος σε όλες τις γραμμές μιας θύρας δεν πρέπει να υπερβαίνει τα 80 mA (όλες οι τιμές δίνονται για μια τάση τροφοδοσίας 5 V).
Ένα αρχιτεκτονικό χαρακτηριστικό της κατασκευής θυρών εισόδου/εξόδου στο AVR είναι ότι για κάθε φυσική έξοδο (pin) υπάρχουν 3 bit ελέγχου/ελέγχου και όχι 2, όπως στους κοινούς μικροελεγκτές 8 bit (Intel, Microchip, Motorola κ.λπ. . ). Αυτό αποφεύγει την ανάγκη ύπαρξης αντιγράφου των περιεχομένων της θύρας στη μνήμη για ασφάλεια και βελτιώνει την ταχύτητα του μικροελεγκτή κατά την εργασία με εξωτερικές συσκευές, ειδικά σε περιβάλλοντα με εξωτερικό ηλεκτρικό θόρυβο.

Διακοπές (INTERRUPTS)

Το σύστημα διακοπής είναι ένα από τα τα πιο σημαντικά μέρημικροελεγκτή. Όλοι οι μικροελεγκτές AVR διαθέτουν σύστημα διακοπής πολλαπλών επιπέδων. Μια διακοπή διακόπτει την κανονική ροή ενός προγράμματος για την εκτέλεση μιας εργασίας προτεραιότητας που καθορίζεται από ένα εσωτερικό ή εξωτερικό συμβάν.
Για κάθε τέτοιο συμβάν, αναπτύσσεται ένα ξεχωριστό πρόγραμμα, το οποίο ονομάζεται υπορουτίνα επεξεργασίας αιτήματος διακοπής (για συντομία, υπορουτίνα διακοπής) και βρίσκεται στη μνήμη του προγράμματος.
Όταν συμβαίνει ένα συμβάν που προκαλεί διακοπή, ο μικροελεγκτής αποθηκεύει τα περιεχόμενα του μετρητή προγράμματος και διακόπτει την εκτέλεση του κεντρικού επεξεργαστή τρέχον πρόγραμμακαι προχωρά στην εκτέλεση της ρουτίνας διακοπής.
Μετά την εκτέλεση της ρουτίνας διακοπής, ο προηγουμένως αποθηκευμένος μετρητής προγράμματος αποκαθίσταται και ο επεξεργαστής επιστρέφει στην εκτέλεση του προγράμματος που έχει διακοπεί.
Σε κάθε εκδήλωση μπορεί να δοθεί προτεραιότητα. Η έννοια της προτεραιότητας σημαίνει ότι μια ρουτίνα διακοπής που εκτελείται μπορεί να διακοπεί από άλλο συμβάν μόνο εάν έχει μεγαλύτερη προτεραιότητα από την τρέχουσα. Διαφορετικά, ο κεντρικός επεξεργαστής θα ξεκινήσει την επεξεργασία ενός νέου συμβάντος μόνο αφού ολοκληρώσει την επεξεργασία του προηγούμενου.

Χρονόμετρα/μετρητές (TIMER/COUNTERS)

Μικροελεγκτές AVRπεριέχει από 1 έως 4 χρονόμετρα/μετρητές με πλάτος 8 ή 16 bit, τα οποία μπορούν επίσης να λειτουργήσουν ως χρονόμετρα από μια εσωτερική πηγή συχνότητα ρολογιού, και ως εξωτερικοί μετρητές συμβάντων.
Μπορούν να χρησιμοποιηθούν για τον ακριβή σχηματισμό χρονικών διαστημάτων, την καταμέτρηση παλμών στις ακίδες ενός μικροελεγκτή, τη δημιουργία μιας ακολουθίας παλμών και τον χρονισμό ενός πομποδέκτη σειριακού καναλιού επικοινωνίας. Στη λειτουργία PWM, ο χρονοδιακόπτης/μετρητής μπορεί να είναι διαμορφωτής εύρους παλμών και χρησιμοποιείται για τη δημιουργία σήματος με προγραμματιζόμενη συχνότητα και κύκλο λειτουργίας. Οι χρονοδιακόπτες/μετρητές είναι ικανοί να δημιουργούν αιτήματα διακοπής, να αλλάζουν τον επεξεργαστή στην εξυπηρέτησή τους βάσει συμβάντων και να τον απαλλάσσουν από την ανάγκη περιοδικής δημοσκόπησης της κατάστασης των χρονόμετρων. Δεδομένου ότι οι μικροελεγκτές χρησιμοποιούνται κυρίως σε συστήματα πραγματικού χρόνου, οι χρονομετρητές/μετρητές είναι ένα από τα πιο σημαντικά στοιχεία.

Watchdog Timer (WDT)

Το WatchDog Timer έχει σχεδιαστεί για να αποτρέπει καταστροφικές συνέπειες από τυχαίες αποτυχίες προγράμματος. Διαθέτει δικό του ταλαντωτή RC που λειτουργεί στο 1 MHz. Όπως και με τον κύριο εσωτερικό ταλαντωτή RC, η τιμή του 1 MHz είναι κατά προσέγγιση και εξαρτάται κυρίως από την τάση και τη θερμοκρασία τροφοδοσίας του μικροελεγκτή.
Η ιδέα της χρήσης ενός χρονοδιακόπτη παρακολούθησης είναι εξαιρετικά απλή και συνίσταται στην τακτική επαναφορά του υπό τον έλεγχο ενός προγράμματος ή εξωτερική επιρροήπροτού λήξει το χρονικό όριο λήξης του και γίνει επαναφορά του επεξεργαστή. Εάν το πρόγραμμα εκτελείται κανονικά, η εντολή επαναφοράς του watchdog θα πρέπει να εκτελείται τακτικά για να αποτραπεί η επαναφορά του επεξεργαστή. Εάν ο μικροεπεξεργαστής υπερέβη κατά λάθος τα όρια του προγράμματος (για παράδειγμα, από ισχυρές παρεμβολέςκατά μήκος του κυκλώματος τροφοδοσίας) ή έχει κολλήσει σε κάποιο μέρος του προγράμματος, η εντολή επαναφοράς χρονοδιακόπτη παρακολούθησης πιθανότατα δεν θα εκτελεστεί μέσα σε αρκετό χρόνο και θα πραγματοποιηθεί πλήρης επαναφορά του επεξεργαστή, αρχικοποιώντας όλους τους καταχωρητές και φέρνοντας το σύστημα σε κατάσταση λειτουργίας.

Αναλογικός Συγκριτής (AC)

Ένας αναλογικός συγκριτής συγκρίνει τις τάσεις σε δύο ακροδέκτες του μικροελεγκτή. Το αποτέλεσμα της σύγκρισης θα είναι μια Boolean τιμή που μπορεί να διαβαστεί από το πρόγραμμα.
Η έξοδος του αναλογικού συγκριτή μπορεί να συνδεθεί με μια διακοπή από τον αναλογικό συγκριτή. Ο χρήστης μπορεί να ρυθμίσει τη διακοπή ώστε να ενεργοποιείται σε μια ανερχόμενη ή καθοδική άκρη ή σε έναν διακόπτη.
Υπάρχει σε όλα τα σύγχρονα AVR εκτός από το Mega8515

Μετατροπέας αναλογικού σε ψηφιακό (A/D CONVERTER)

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

Universal σειριακός πομποδέκτης (UART ή USART)

Καθολικός ασύγχρονος ή καθολικός σύγχρονος/ασύγχρονος πομποδέκτης (Universal Synchronous/Asynchronous Receiver and Transmitter - UART ή USART) - βολικός και απλός σειριακή διεπαφήγια οργάνωση κανάλι πληροφοριώνανταλλαγή του μικροελεγκτή με τον έξω κόσμο. Δυνατότητα λειτουργίας σε λειτουργία duplex (ταυτόχρονη μετάδοση και λήψη δεδομένων). Υποστηρίζει το τυπικό πρωτόκολλο RS-232, το οποίο καθιστά δυνατή την επικοινωνία με έναν προσωπικό υπολογιστή. (Για να συνδέσετε το MK και έναν υπολογιστή, θα χρειαστείτε οπωσδήποτε ένα κύκλωμα για τη σύζευξη των επιπέδων σήματος. Υπάρχουν ειδικά μικροκυκλώματα για αυτό, για παράδειγμα το MAX232.)

Σειριακή περιφερειακή διεπαφή SPI

Η σειριακή περιφερειακή διεπαφή τριών καλωδίων SPI (Serial Peripheral Interface) έχει σχεδιαστεί για να οργανώνει την ανταλλαγή δεδομένων μεταξύ δύο συσκευών. Μπορεί να χρησιμοποιηθεί για την ανταλλαγή δεδομένων μεταξύ του μικροελεγκτή και διάφορες συσκευές, όπως ψηφιακά ποτενσιόμετρα, DAC/ADC, FLASH ROM, κ.λπ. Χρησιμοποιώντας αυτή τη διεπαφή, είναι βολικό να ανταλλάσσετε δεδομένα μεταξύ πολλών μικροελεγκτών AVR.
Επιπλέον, ο μικροελεγκτής μπορεί να προγραμματιστεί μέσω της διεπαφής SPI.

Σειριακή διεπαφή δύο καλωδίων TWI

Η σειριακή διεπαφή δύο συρμάτων TWI (Σειριακή διεπαφή δύο συρμάτων) είναι εντελώς ανάλογη βασική έκδοσηΔιεπαφή I2C (διαγωγός αμφίδρομος δίαυλος) από τη Philips. Αυτή η διεπαφή επιτρέπει τη σύνδεση έως και 128 διαφορετικών συσκευών μεταξύ τους χρησιμοποιώντας έναν αμφίδρομο δίαυλο που αποτελείται από μια γραμμή ρολογιού (SCL) και μια γραμμή δεδομένων (SDA).

Διεπαφή JTAG

Η διεπαφή JTAG αναπτύχθηκε από μια ομάδα κορυφαίων ειδικών στη δοκιμή ηλεκτρονικών εξαρτημάτων (Joint Test Action Group) και καταχωρήθηκε ως βιομηχανικό πρότυπο IEEE Std 1149.1-1990. Η διασύνδεση JTAG τεσσάρων καλωδίων χρησιμοποιείται για δοκιμή PCB, εντοπισμό σφαλμάτων εντός κυκλώματος και προγραμματισμό μικροελεγκτή.
Πολλοί μικροελεγκτές της οικογένειας Mega διαθέτουν διεπαφή JTAG ή debugWIRE συμβατή με IEEE Std 1149.1 για εντοπισμό σφαλμάτων στο chip. Επιπλέον, όλοι οι μικροελεγκτές Mega με μνήμη flash 16 KB ή μεγαλύτερη μπορούν να προγραμματιστούν μέσω της διεπαφής JTAG.

Γεννήτρια ρολογιού

Η γεννήτρια ρολογιού παράγει παλμούς για να συγχρονίσει τη λειτουργία όλων των κόμβων μικροελεγκτή. Το εσωτερικό ρολόι του AVR μπορεί να οδηγηθεί από πολλαπλές πηγές αναφοράς (εξωτερικός ταλαντωτής, εξωτερικός κρύσταλλος, εσωτερικός ή εξωτερικός RC). Η ελάχιστη επιτρεπόμενη συχνότητα δεν περιορίζεται με κανέναν τρόπο (μέχρι τη λειτουργία βήμα προς βήμα). Η μέγιστη συχνότητα λειτουργίας καθορίζεται από τον συγκεκριμένο τύπο μικροελεγκτή και υποδεικνύεται από την Atmel στα χαρακτηριστικά του, αν και σχεδόν κάθε μικροελεγκτής AVR με το δηλωμένο συχνότητα λειτουργίας, για παράδειγμα, τα 10 MHz σε θερμοκρασία δωματίου μπορούν εύκολα να «υπερχρονιστούν» στα 12 MHz και άνω.

Σύστημα πραγματικού χρόνου (RTC)

Το RTC υλοποιείται σε όλους τους μικροελεγκτές Mega και σε δύο «κλασικούς» κρυστάλλους - AT90(L)S8535. Ο χρονοδιακόπτης/μετρητής RTC διαθέτει ξεχωριστό προκλιμακωτή που μπορεί να είναι προγραμματικάσυνδέεται είτε με την κύρια πηγή ρολογιού είτε με μια πρόσθετη πηγή ασύγχρονης συχνότητας αναφοράς (χαλαζία ή εξωτερικό σήμα ρολογιού). Δύο ακίδες του μικροκυκλώματος έχουν δεσμευτεί για αυτό το σκοπό. Ο εσωτερικός ταλαντωτής είναι βελτιστοποιημένος για να λειτουργεί με εξωτερικό ρολόι χαλαζία 32,768 kHz.

Θρέψη

Τα AVR λειτουργούν σε τάσεις τροφοδοσίας από 1,8 έως 6,0 Volt. Η κατανάλωση ρεύματος στην ενεργή λειτουργία εξαρτάται από την τάση τροφοδοσίας και τη συχνότητα στην οποία λειτουργεί ο μικροελεγκτής και είναι μικρότερη από 1 mA για 500 kHz, 5 ... 6 mA για 5 MHz και 8 ... 9 mA για 12 MHz.
Τα AVR μπορούν να μεταφερθούν προγραμματικάσε μία από τις τρεις λειτουργίες χαμηλής κατανάλωσης.
Λειτουργία αδράνειας (IDLE).Μόνο ο επεξεργαστής σταματά να λειτουργεί και τα περιεχόμενα της μνήμης δεδομένων παγώνουν, ενώ η εσωτερική γεννήτρια ρολογιού, τα χρονόμετρα, το σύστημα διακοπής και ο χρονοδιακόπτης παρακολούθησης συνεχίζουν να λειτουργούν. Η κατανάλωση ρεύματος δεν υπερβαίνει τα 2,5 mA σε συχνότητα 12 MHz.
Λειτουργία διακοπής (POWER DOWN).Τα περιεχόμενα του αρχείου καταχωρητή διατηρούνται, αλλά η εσωτερική γεννήτρια ρολογιού έχει σταματήσει και επομένως όλες οι λειτουργίες διακόπτονται έως ότου ληφθεί ένα σήμα εξωτερικής διακοπής ή επαναφοράς υλικού. Όταν ο χρονοδιακόπτης παρακολούθησης είναι ενεργοποιημένος, η κατανάλωση ρεύματος σε αυτήν τη λειτουργία είναι περίπου 80 μA και όταν είναι απενεργοποιημένο, είναι μικρότερη από 1 μA. (Όλες οι τιμές που δίνονται βασίζονται σε τάση τροφοδοσίας 5 V).
Οικονομική λειτουργία (ΕΞΟΙΚΟΝΟΜΗΣΗ ΕΝΕΡΓΕΙΑΣ).Μόνο η γεννήτρια χρονοδιακόπτη συνεχίζει να λειτουργεί, γεγονός που διασφαλίζει την ασφάλεια της βάσης χρόνου. Όλες οι άλλες λειτουργίες είναι απενεργοποιημένες.

Υπό επαναφορά τάσης (BOD)

Το κύκλωμα BOD (Brown-Out Detection$WinAVR = ($_GET["avr"]); if($WinAVR) include($WinAVR);?>) παρακολουθεί την τάση τροφοδοσίας. Εάν το κύκλωμα είναι ενεργοποιημένο, τότε όταν η ισχύς πέσει κάτω από μια ορισμένη τιμή, θέτει τον μικροελεγκτή σε κατάσταση επαναφοράς. Όταν η τάση τροφοδοσίας ανέβει ξανά στην τιμή κατωφλίου, ξεκινά ο χρονοδιακόπτης καθυστέρησης επαναφοράς. Αφού σχηματιστεί η καθυστέρηση, το εσωτερικό σήμα επαναφοράς αφαιρείται και ο μικροελεγκτής ξεκινά.

Οι μικροελεγκτές (εφεξής MK) έχουν μπει σταθερά στη ζωή μας· στο Διαδίκτυο μπορείτε να βρείτε πολλά ενδιαφέροντα κυκλώματα που εκτελούνται στο MK. Τι δεν μπορείτε να συναρμολογήσετε σε ένα MK: διάφορες ενδείξεις, βολτόμετρα, οικιακές συσκευές (συσκευές προστασίας, συσκευές μεταγωγής, θερμόμετρα...), ανιχνευτές μετάλλων, διάφορα παιχνίδια, ρομπότ κ.λπ. Η λίστα μπορεί να διαρκέσει πολύ. Είδα το πρώτο κύκλωμα σε έναν μικροελεγκτή πριν από 5-6 χρόνια σε ένα ραδιοφωνικό περιοδικό και σχεδόν αμέσως γύρισα σελίδα, σκεπτόμενος «Ακόμα δεν θα μπορώ να το συναρμολογήσω». Πράγματι, εκείνη την εποχή τα MK ήταν μια πολύ περίπλοκη και παρεξηγημένη συσκευή για μένα· δεν είχα ιδέα πώς λειτουργούσαν, πώς να τα flash και τι να τα κάνω σε περίπτωση λανθασμένου υλικολογισμικού. Αλλά πριν από περίπου ένα χρόνο, συναρμολόγησα το πρώτο μου κύκλωμα στο MK για πρώτη φορά, ήταν ένα κύκλωμα ψηφιακό βολτόμετροσε ενδείξεις 7 τμημάτων και μικροελεγκτή ATmega8. Έτυχε να αγόρασα έναν μικροελεγκτή τυχαία, όταν στεκόμουν στο τμήμα εξαρτημάτων του ραδιοφώνου, ο τύπος μπροστά μου αγόραζε ένα MK και αποφάσισα επίσης να το αγοράσω και να προσπαθήσω να συναρμολογήσω κάτι. Στα άρθρα μου θα σας μιλήσω για Μικροελεγκτές AVR, θα σας μάθω πώς να δουλέψετε μαζί τους, θα δούμε προγράμματα για υλικολογισμικό, θα φτιάξουμε έναν απλό και αξιόπιστο προγραμματιστή, θα εξετάσουμε τη διαδικασία του υλικολογισμικού και, το πιο σημαντικό, τα προβλήματα που μπορεί να προκύψουν δεν μόνο για αρχάριους.

Βασικές παράμετροι ορισμένων μικροελεγκτών της οικογένειας AVR:

Μικροελεγκτής

Μνήμη flash

Μνήμη RAM

Μνήμη EEPROM

Θύρες I/O

U δύναμη

Πρόσθετες παράμετροι MK AVR mega:

Θερμοκρασία λειτουργίας: -55…+125*С
Θερμοκρασία αποθήκευσης: -65…+150*С
Τάση στον ακροδέκτη RESET σε σχέση με το GND: max 13V
Μέγιστη τάση τροφοδοσίας: 6,0V
Μέγιστο ρεύμα γραμμής I/O: 40mA
Μέγιστο ρεύμα τροφοδοσίας VCC και GND: 200mA

Pinouts μοντέλου ATmega 8X

Pinouts για μοντέλα ATmega48x, 88x, 168x

Διάταξη καρφίτσας για μοντέλα ATmega8515x

Διάταξη καρφίτσας για μοντέλα ATmega8535x

Διάταξη καρφίτσας για μοντέλα ATmega16, 32x

Διάταξη καρφίτσας για μοντέλα ATtiny2313

Στο τέλος του άρθρου επισυνάπτεται ένα αρχείο με φύλλα δεδομένων για ορισμένους μικροελεγκτές.

MK AVR εγκατάσταση FUSE bits

Θυμηθείτε, μια προγραμματισμένη ασφάλεια είναι 0, μια μη προγραμματισμένη είναι 1. Θα πρέπει να είστε προσεκτικοί όταν ρυθμίζετε τις ασφάλειες· μια λανθασμένα προγραμματισμένη ασφάλεια μπορεί να μπλοκάρει τον μικροελεγκτή. Εάν δεν είστε σίγουροι ποια ασφάλεια πρέπει να προγραμματίσετε, είναι καλύτερα να αναβοσβήσετε το MK χωρίς ασφάλειες για πρώτη φορά.

Οι πιο δημοφιλείς μικροελεγκτές μεταξύ των ραδιοερασιτέχνων είναι ο ATmega8 και ακολουθούν οι ATmega48, 16, 32, ATtiny2313 και άλλοι. Οι μικροελεγκτές πωλούνται σε πακέτα TQFP και DIP· για αρχάριους, προτείνω την αγορά σε DIP. Εάν αγοράσετε TQFP, θα είναι πιο προβληματικό να τα αναβοσβήσετε· θα πρέπει να αγοράσετε ή να κολλήσετε την πλακέτα επειδή τα πόδια τους βρίσκονται πολύ κοντά το ένα στο άλλο. Σας συμβουλεύω να εγκαταστήσετε μικροελεγκτές σε πακέτα DIP σε ειδικές υποδοχές, είναι βολικό και πρακτικό, δεν χρειάζεται να ξεκολλήσετε το MK εάν θέλετε να το επαναφέρετε ή να το χρησιμοποιήσετε για άλλο σχέδιο.

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

Για τον προγραμματισμό χρησιμοποιούνται 6 ακίδες:
ΕΠΑΝΑΦΟΡΑ- Είσοδος MK
VCC- Συν τροφοδοσία, 3-5V, εξαρτάται από το MK
GND- Κοινό καλώδιο, μείον την ισχύ.
MOSI- Είσοδος MK ( σήμα πληροφοριώνστα ΜΚ)
MISO- Έξοδος MK (σήμα πληροφοριών από MK)
SCK- Είσοδος MK (σήμα ρολογιού σε MK)

Μερικές φορές χρησιμοποιούν επίσης τις ακίδες XTAL 1 και XTAL2· ο χαλαζίας συνδέεται σε αυτές τις ακίδες εάν ο MK τροφοδοτείται από έναν εξωτερικό ταλαντωτή· στα ATmega 64 και 128, οι ακίδες MOSI και MISO δεν χρησιμοποιούνται για προγραμματισμό ISP· αντίθετα, οι ακίδες MOSI είναι συνδέεται με τον ακροδέκτη PE0 και το MISO με τον ακροδέκτη PE1. Όταν συνδέετε τον μικροελεγκτή στον προγραμματιστή, τα καλώδια σύνδεσης πρέπει να είναι όσο το δυνατόν πιο κοντά και το καλώδιο να τρέχει από τον προγραμματιστή Θύρα LPTεπίσης δεν πρέπει να είναι πολύ μεγάλο.

Η σήμανση του μικροελεγκτή μπορεί να περιέχει περίεργα γράμματα με αριθμούς, για παράδειγμα Atmega 8L 16PU, 8 16AU, 8A PU, κλπ. Το γράμμα L σημαίνει ότι το MK λειτουργεί σε χαμηλότερη τάση από το MK χωρίς το γράμμα L, συνήθως 2,7V. Οι αριθμοί μετά την παύλα ή το διάστημα 16PU ή 8AU υποδεικνύουν την εσωτερική συχνότητα της γεννήτριας που βρίσκεται στο MK. Εάν οι ασφάλειες έχουν ρυθμιστεί να λειτουργούν από εξωτερικό χαλαζία, ο χαλαζίας πρέπει να ρυθμιστεί σε συχνότητα που δεν υπερβαίνει τη μέγιστη σύμφωνα με το φύλλο δεδομένων, αυτή είναι 20 MHz για το ATmega48/88/168 και 16 MHz για άλλα atmega.

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

γενικές πληροφορίες

Οι μικροελεγκτές μπορούν να βρεθούν παντού. Βρίσκονται σε ψυγεία, πλυντήρια, τηλέφωνα, βιομηχανικά μηχανήματα, έξυπνα σπίτιακαι σε πολλές διαφορετικές τεχνικές συσκευές. Η ευρεία χρήση τους οφείλεται στη δυνατότητα αντικατάστασης πιο περίπλοκων και μεγάλης κλίμακας αναλογικά κυκλώματασυσκευές. Ο προγραμματισμός του AVR MK επιτρέπει τον αυτόνομο έλεγχο ηλεκτρονικών συσκευών. Αυτοί οι μικροελεγκτές μπορούν να θεωρηθούν ως απλός υπολογιστής, το οποίο μπορεί να αλληλεπιδράσει με εξωτερικό εξοπλισμό. Έτσι, μπορούν να ανοίγουν/κλείνουν τρανζίστορ, να λαμβάνουν δεδομένα από αισθητήρες και να τα εμφανίζουν σε οθόνες. Οι μικροελεγκτές μπορούν επίσης να εκτελούν διάφορες επεξεργασίες πληροφοριών εισόδου, παρόμοια με έναν προσωπικό υπολογιστή. Εάν κατακτήσετε τον προγραμματισμό AVR από την αρχή και φτάσετε σε επαγγελματικό επίπεδο, σχεδόν θα το κάνετε απεριόριστες δυνατότητεςγια να ελέγξετε διάφορες συσκευές χρησιμοποιώντας θύρες I/O, καθώς και να αλλάξετε τον κωδικό τους.

Λίγα λόγια για το AVR

Το άρθρο θα εξετάσει μια οικογένεια μικροελεγκτών που παράγονται από την Atmel. Έχουν αρκετά καλή απόδοση, γεγονός που τους επιτρέπει να χρησιμοποιούνται σε πολλές ερασιτεχνικές συσκευές. Χρησιμοποιείται ευρέως στη βιομηχανία. Μπορεί να βρεθεί σε αυτήν την τεχνική:

  1. Οικιακός. Πλυντήρια ρούχων, ψυγεία, φούρνοι μικροκυμάτων κ.λπ.
  2. Κινητό. Ρομπότ, επικοινωνίες και ούτω καθεξής.
  3. Χρήση υπολογιστή. Συστήματα ελέγχου περιφερειακών συσκευών, μητρικές πλακέτες.
  4. Διασκεδαστικο. Κοσμήματα και παιδικά παιχνίδια.
  5. Μεταφορά. Ασφάλεια οχημάτων και συστήματα διαχείρισης κινητήρα.
  6. Βιομηχανικός εξοπλισμός. Συστήματα ελέγχου μηχανών.

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

Πώς να αποκτήσετε τον πρώτο σας μικροελεγκτή;

Ο προγραμματισμός AVR απαιτεί:

  1. Διαθεσιμότητα του απαραίτητου περιβάλλοντος ανάπτυξης.
  2. Στην πραγματικότητα οι ίδιοι οι μικροελεγκτές.

Ας εξετάσουμε το δεύτερο σημείο με περισσότερες λεπτομέρειες. Υπάρχουν τρεις επιλογές για να αποκτήσετε την απαιτούμενη συσκευή:

  1. Αγοράστε τον ίδιο τον μικροελεγκτή απευθείας.
  2. Αποκτήστε μια συσκευή ως μέρος του σχεδιαστή (για παράδειγμα, Arduino).
  3. Συναρμολογήστε μόνοι σας τον μικροελεγκτή.

Δεν υπάρχει τίποτα περίπλοκο στο πρώτο σημείο, οπότε ας προχωρήσουμε στο δεύτερο και το τρίτο.

Αποκτήστε μια συσκευή ως μέρος του σχεδιαστή

Ως παράδειγμα θα επιλεγεί το γνωστό Arduino. Αυτή είναι επίσης μια βολική πλατφόρμα για γρήγορη και υψηλής ποιότητας ανάπτυξη διαφόρων ηλεκτρονικών συσκευών. Η πλακέτα Arduino περιλαμβάνει ένα ορισμένο σύνολοεξαρτήματα προς λειτουργία (διατίθενται διάφορες διαμορφώσεις). Πρέπει να περιλαμβάνει έναν ελεγκτή AVR. Αυτή η προσέγγιση σάς επιτρέπει να ξεκινήσετε γρήγορα την ανάπτυξη μιας συσκευής, δεν απαιτεί ειδικές δεξιότητες, έχει σημαντικές δυνατότητες όσον αφορά τη σύνδεση πρόσθετων πλακών και μπορείτε επίσης να βρείτε πολλές πληροφορίες στο Διαδίκτυο για ερωτήσεις που σας ενδιαφέρουν. Υπήρχαν όμως κάποια μειονεκτήματα. Αγοράζοντας ένα Arduino, ένα άτομο στερεί από τον εαυτό του την ευκαιρία να βουτήξει πιο βαθιά στον προγραμματισμό AVR, για να κατανοήσει καλύτερα τον μικροελεγκτή και τις ιδιαιτερότητες της λειτουργίας του. Στα αρνητικά προστίθεται επίσης η σχετικά στενή γκάμα μοντέλων, γι' αυτό συχνά πρέπει να αγοράζετε σανίδες για συγκεκριμένες εργασίες. Μια άλλη ιδιαιτερότητα είναι ότι ο προγραμματισμός σε "SI" εδώ διαφέρει αρκετά από την τυπική μορφή. Παρά όλες τις ελλείψεις του, το Arduino είναι κατάλληλο για αρχάριους να μάθουν. Αλλά δεν πρέπει να το καταχραστείτε.

Αυτοσυναρμολόγηση

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

Πώς να δουλέψω?

Λοιπόν, ας πούμε ότι το πρόβλημα με τον μικροελεγκτή έχει λυθεί. Περαιτέρω θα θεωρηθεί ότι αγοράστηκε ή αγοράστηκε ανεξάρτητα. Τι άλλο χρειάζεστε για να κατακτήσετε τον προγραμματισμό AVR; Για το σκοπό αυτό, χρειάζεστε ένα περιβάλλον ανάπτυξης (ένα κανονικό σημειωματάριο θα είναι ως βάση, αλλά προτείνω να χρησιμοποιήσετε το Notepad++). Αν και υπάρχουν άλλα προγράμματα για Προγραμματισμός AVR, το παρεχόμενο λογισμικό μπορεί να ανταπεξέλθει σε όλες τις απαιτήσεις. Ζητείται επίσης προγραμματιστής. Μπορείτε να το αγοράσετε στο τοπικό σας κατάστημα, να το παραγγείλετε online ή να το συναρμολογήσετε μόνοι σας. Ούτε θα κάνει κακό πλακέτα τυπωμένου κυκλώματος. Δεν απαιτείται, αλλά η χρήση του σάς επιτρέπει να εξοικονομήσετε νεύρα και χρόνο. Επίσης αγοράστηκε/δημιουργήθηκε ανεξάρτητα. Και το τελευταίο πράγμα είναι η πηγή ενέργειας. Για το AVR είναι απαραίτητο να παρέχεται τροφοδοσία τάσης 5V.

Πού και πώς να σπουδάσω;

Δεν θα μπορείτε να δημιουργήσετε αριστουργήματα από την αρχή. Αυτό απαιτεί γνώση, εμπειρία και πρακτική. Αλλά πού μπορώ να τα βρω; Υπάρχουν διάφοροι τρόποι. Αρχικά, μπορείτε να αναζητήσετε ανεξάρτητα τις απαραίτητες πληροφορίες στον Παγκόσμιο Ιστό. Μπορείτε να εγγραφείτε σε μαθήματα προγραμματισμού (από απόσταση ή πρόσωπο με πρόσωπο) για να αποκτήσετε βασικές δεξιότητες εργασίας. Κάθε προσέγγιση έχει τα πλεονεκτήματά της. Έτσι, τα μαθήματα προγραμματισμού εξ αποστάσεως θα είναι φθηνότερα, και ίσως ακόμη και δωρεάν. Αλλά αν κάτι δεν λειτουργήσει, τότε με μαθήματα πρόσωπο με πρόσωπο, ένας έμπειρος προγραμματιστής θα είναι σε θέση να βρει γρήγορα την αιτία του προβλήματος. Θα ήταν επίσης καλή ιδέα να εξοικειωθείτε με τη βιβλιογραφία που διατίθεται δωρεάν. Φυσικά, δεν θα μπορείτε να ταξιδέψετε μόνο με βιβλία, αλλά μπορείτε να το κάνετε ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣσχετικά με τη συσκευή, προγραμματισμό σε "SI", "Assembler" και άλλες πτυχές εργασίας.

Θύρες I/O

Αυτό είναι ένα εξαιρετικά σημαντικό θέμα. Χωρίς να κατανοήσουμε πώς λειτουργούν οι θύρες I/O, ο προγραμματισμός κυκλώματος του AVR δεν είναι καθόλου δυνατός. Άλλωστε, η αλληλεπίδραση του μικροελεγκτή με εξωτερικές συσκευές πραγματοποιείται ακριβώς με τη μεσολάβησή τους. Με την πρώτη ματιά, μπορεί να φαίνεται σε έναν αρχάριο ότι η θύρα είναι ένας μάλλον συγκεχυμένος μηχανισμός. Για να αποφύγουμε μια τέτοια εντύπωση, δεν θα εξετάσουμε λεπτομερώς το σχέδιο λειτουργίας του, αλλά θα πάρουμε μόνο μια γενική ιδέα γι 'αυτό. Ας σκεφτούμε υλοποίηση λογισμικού. Ως παράδειγμα συσκευής, επιλέχθηκε ο μικροελεγκτής AtMega8 - ένας από τους πιο δημοφιλείς ολόκληρης της οικογένειας AVR. Η θύρα I/O αποτελείται από τρεις καταχωρητές που είναι υπεύθυνοι για τη λειτουργία της. Επί σωματικό επίπεδοπραγματοποιούνται ως πόδια. Κάθε ένα από αυτά αντιστοιχεί σε ένα συγκεκριμένο bit στον καταχωρητή ελέγχου. Κάθε σκέλος μπορεί να λειτουργήσει τόσο για την εισαγωγή πληροφοριών όσο και για την εξαγωγή τους. Για παράδειγμα, μπορείτε να επισυνάψετε μια λειτουργία για την ανάφλεξη ενός LED ή την επεξεργασία ενός πατήματος κουμπιού σε αυτό. Παρεμπιπτόντως, οι τρεις καταχωρητές που αναφέρθηκαν είναι: PORTx, PINx και DDRx. Κάθε ένα από αυτά είναι οκτώ bit (θυμηθείτε, εξετάζουμε το AtMega8). Δηλαδή ένα μπιτ καταλαμβάνεται από ένα συγκεκριμένο πόδι.

Εγγραφή λειτουργίας

Το πιο σημαντικό από άποψη προσανατολισμού είναι ο έλεγχος DDRx. Είναι επίσης οκτώ bit. Οι τιμές για αυτό μπορούν να γραφτούν 0 ή 1. Πώς αλλάζει η λειτουργία του ελεγκτή όταν χρησιμοποιούνται μηδενικά και μονάδες; Εάν ένα συγκεκριμένο bit έχει ρυθμιστεί στο 0, τότε το αντίστοιχο σκέλος θα μεταβεί στη λειτουργία εισόδου. Και από αυτό θα είναι δυνατή η ανάγνωση των δεδομένων που συνοδεύουν εξωτερικές συσκευές. Εάν οριστεί στο 1, ο μικροελεγκτής θα μπορεί να ελέγξει κάτι (για παράδειγμα, να δώσει εντολή σε ένα τρανζίστορ να περάσει τάση και να ανάψει ένα LED). Το δεύτερο πιο σημαντικό είναι το PORTx. Διαχειρίζεται την κατάσταση του ποδιού. Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε μια θύρα εξόδου. Αν ορίσουμε μια λογική στο PORTx, τότε στέλνεται σήμα από τον μικροελεγκτή στη συσκευή ελέγχου για να ξεκινήσει να λειτουργεί. Για παράδειγμα, ανάψτε το LED. Όταν τεθεί το μηδέν, θα σβήσει. Δηλαδή, δεν χρειάζεται να εργάζεστε συνεχώς με τον καταχωρητή ελέγχου DDRx. Και τέλος, ας μιλήσουμε για PINx. Αυτός ο καταχωρητής είναι υπεύθυνος για την εμφάνιση της κατάστασης του ακροδέκτη του ελεγκτή όταν έχει ρυθμιστεί σε κατάσταση εισόδου. Θα πρέπει να σημειωθεί ότι το PINx μπορεί να λειτουργήσει μόνο σε λειτουργία ανάγνωσης. Δεν θα μπορείτε να γράψετε τίποτα σε αυτό. Αλλά η ανάγνωση της τρέχουσας κατάστασης του ποδιού δεν είναι πρόβλημα.

Εργασία με ανάλογα

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

Μέτρα ασφαλείας

Όταν προγραμματίζετε μικροελεγκτές AVR σε "SI" ή "Assembler", πρέπει να εργάζεστε πολύ προσεκτικά. Το γεγονός είναι ότι ορίζοντας έναν συγκεκριμένο συνδυασμό καταχωρητών και αλλάζοντας τις εσωτερικές ρυθμίσεις, μπορείτε να αποκλείσετε με ασφάλεια τον μικροελεγκτή. Αυτό ισχύει ιδιαίτερα για τις ασφάλειες. Εάν δεν είστε σίγουροι για την ορθότητα των ενεργειών σας, τότε είναι καλύτερο να αρνηθείτε να τις χρησιμοποιήσετε. Το ίδιο ισχύει και για τους προγραμματιστές. Εάν αγοράσετε εργοστασιακό εξοπλισμό, θα αναβοσβήνει τους μικροελεγκτές χωρίς προβλήματα. Όταν το συναρμολογείτε μόνοι σας, μπορεί να προκύψει μια θλιβερή κατάσταση κατά την οποία ο προγραμματιστής μπλοκάρει τη συσκευή. Αυτό μπορεί να συμβεί λόγω σφάλματος κώδικα προγράμματος, και μέσα από προβλήματα από μόνη της. Παρεμπιπτόντως, για ένα άλλο (θετικό αυτή τη φορά) σημείο που προηγουμένως αναφέρθηκε εν παρόδω, αλλά δεν αποκαλύφθηκε ποτέ πλήρως. Τώρα σχεδόν όλοι οι σύγχρονοι μικροελεγκτές διαθέτουν λειτουργία προγραμματισμού εντός κυκλώματος. Τι σημαίνει? Ας υποθέσουμε ότι η συσκευή ήταν κολλημένη στην πλακέτα. Και για να αλλάξετε το υλικολογισμικό του, τώρα δεν χρειάζεται να το αποκολλήσετε, γιατί μια τέτοια επέμβαση μπορεί να βλάψει τον ίδιο τον μικροελεγκτή. Αρκεί να συνδεθείς με τις αντίστοιχες ακίδες και να το επαναπρογραμματίσεις μέσω αυτών.

Ποιο μοντέλο να επιλέξετε;

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

συμπέρασμα

Έτσι, το θέμα του προγραμματισμού AVR εξετάστηκε με τους πιο γενικούς όρους. Φυσικά, υπάρχουν πολλά περισσότερα που μπορούν να ειπωθούν. Έτσι, για παράδειγμα, δεν ελήφθη υπόψη η σήμανση των μικροελεγκτών. Και μπορεί να πει πολλά. Έτσι, οι μικροελεγκτές λειτουργούν γενικά σε τάση 5 V. Ενώ η παρουσία, για παράδειγμα, του γράμματος L μπορεί να υποδηλώνει ότι μόνο 2,7 V είναι αρκετά για να λειτουργήσει η συσκευή. Όπως μπορείτε να δείτε, μερικές φορές η γνώση σχετικά με τις σημάνσεις μπορεί να παίξει πολύ σημαντικό ρόλο όσον αφορά τη σωστή και ανθεκτική λειτουργία των συσκευών . Ο χρόνος λειτουργίας των μικροελεγκτών είναι επίσης ενδιαφέρον θέμα. Κάθε συσκευή έχει σχεδιαστεί για να συγκεκριμένη περίοδος. Έτσι, κάποιοι μπορούν να δουλέψουν χίλιες ώρες. Άλλοι έχουν αποθεματικό εγγύησης 10.000!

Οι μικροελεγκτές ενός τσιπ χρησιμοποιούνται ευρέως σε μια μεγάλη ποικιλία τομέων: από όργανα μέτρησης, κάμερες και βιντεοκάμερες, εκτυπωτές, σαρωτές και φωτοαντιγραφικά έως ηλεκτρονικά προϊόντα ψυχαγωγίας και όλα τα είδη οικιακών συσκευών.

Από την εισαγωγή των πρώτων μικροεπεξεργαστών στη δεκαετία του 1970, η πολυπλοκότητά τους αυξάνεται συνεχώς με την εισαγωγή νέων λύσεων υλικού και την προσθήκη νέων οδηγιών που έχουν σχεδιαστεί για την επίλυση νέων προβλημάτων. Έτσι αναπτύχθηκε σταδιακά η αρχιτεκτονική, η οποία αργότερα έλαβε το όνομα CISC (Complete Instruction Set Computers - υπολογιστές με σύνθετο σύνολο εντολών). Στη συνέχεια, μια άλλη κατεύθυνση προέκυψε και βρήκε ενεργό ανάπτυξη: η αρχιτεκτονική RISC (Reduced Instruction Set Computers - υπολογιστές με μειωμένο σύνολο εντολών). Είναι αυτή η αρχιτεκτονική που περιλαμβάνει τους μικροελεγκτές AVR από την Atmel και PIC από τη Microchip, στους οποίους είναι αφιερωμένο αυτό το βιβλίο.

Το κύριο πλεονέκτημα των επεξεργαστών RISC είναι ότι είναι απλοί, εκτελούν ένα περιορισμένο σύνολο εντολών και, ως εκ τούτου, είναι πολύ γρήγοροι. Αυτό μειώνει το κόστος και την πολυπλοκότητα του προγραμματισμού τους.

Το μειονέκτημα της αρχιτεκτονικής RISC ήταν η ανάγκη δημιουργίας πρόσθετες εντολέςσε assembler, τα οποία υλοποιούνται σε υλικό για συσκευές CISC. Για παράδειγμα, αντί να καλεί απλώς μια εντολή διαίρεσης, η οποία είναι τυπική για συσκευές CISC, ένας σχεδιαστής που ασχολείται με έναν επεξεργαστή RISC πρέπει να χρησιμοποιήσει αρκετές διαδοχικές οδηγίες αφαίρεσης. Ωστόσο, αυτό το μειονέκτημα αντισταθμίζεται περισσότερο από την τιμή και την ταχύτητα των συσκευών RISC. Επιπλέον, αν δημιουργήσετε προγράμματα σε C, τότε παρόμοια προβλήματαγενικά παύουν να έχουν νόημα για τον προγραμματιστή, καθώς επιλύονται από τον μεταγλωττιστή, ο οποίος δημιουργεί αυτόματα όλο τον κώδικα συγκρότησης που λείπει.

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

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


Αρχιτεκτονική μικροελεγκτή AVR και PIC

Γενικά, όλοι οι μικροελεγκτές κατασκευάζονται σύμφωνα με το ίδιο σχήμα. Το σύστημα ελέγχου, που αποτελείται από έναν μετρητή προγράμματος και ένα κύκλωμα αποκωδικοποίησης, διαβάζει και αποκωδικοποιεί οδηγίες από τη μνήμη του προγράμματος και συσκευή λειτουργίαςείναι υπεύθυνος για την εκτέλεση αριθμητικής και λογικές πράξεις; Η διεπαφή I/O σάς επιτρέπει να ανταλλάσσετε δεδομένα με περιφερειακές συσκευές. και τέλος, πρέπει να έχετε μια συσκευή αποθήκευσης για την αποθήκευση προγραμμάτων και δεδομένων (Εικ. 1.1).

Ρύζι. 1.1. Γενικευμένη δομή μικροελεγκτή

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

Μνήμη μικροελεγκτή AVR

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

Μνήμη δεδομένων

Η μνήμη δεδομένων έχει σχεδιαστεί για εγγραφή/ανάγνωση δεδομένων που χρησιμοποιούνται από προγράμματα. Είναι πτητικό, δηλαδή εάν απενεργοποιηθεί η τροφοδοσία του μικροελεγκτή, όλα τα δεδομένα που είναι αποθηκευμένα σε αυτόν θα χαθούν. Στους μικροελεγκτές AVR, η μνήμη δεδομένων έχει πιο ανεπτυγμένη δομή σε σύγκριση με τους μικροελεγκτές PIC, όπως φαίνεται στην Εικ. 2.1.


Ρύζι. 2.1. Δομή μνήμης δεδομένων σε μικροελεγκτές AVR και PIC

Περιοχή στατική μνήμηΤο SRAM (Στατική μνήμη τυχαίας πρόσβασης) υποδεικνύεται στο Σχ. Το 2.1 είναι διακεκομμένο, καθώς δεν χρησιμοποιείται από όλους τους μικροελεγκτές AVR (αυτό ισχύει τόσο για εσωτερική όσο και για εξωτερική SRAM). Η αρχική του διεύθυνση είναι 0x060 και η κορυφαία διεύθυνση διαφέρει από συσκευή σε συσκευή.

Σε ορισμένους μικροελεγκτές AVR, μπορείτε να αυξήσετε το χώρο μνήμης SRAM συνδέοντας μπλοκ εξωτερικών μνήμης έως και 64 KB, αλλά αυτό απαιτεί να θυσιαστούν οι θύρες A και C, οι οποίες σε αυτήν την περίπτωση χρησιμοποιούνται για τη μεταφορά δεδομένων και διευθύνσεων.

Μητρώα γενικής χρήσης

Η περιοχή μητρώου γενικού σκοπού (εργαζόμενοι καταχωρητές) προορίζεται για την προσωρινή αποθήκευση μεταβλητών και δεικτών που χρησιμοποιούνται από τον επεξεργαστή για την εκτέλεση προγραμμάτων. Στους μικροελεγκτές AVR αποτελείται από 32 καταχωρητές οκτώ bit (εύρος διευθύνσεων 0x000 - 0x01F). Στους μικροελεγκτές PIC, οι καταχωρητές γενικής χρήσης είναι επίσης οκτώ bit, αλλά ο αριθμός και το εύρος διευθύνσεών τους εξαρτώνται από συγκεκριμένου τύπουσυσκευές.

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

Καταχωρητές ειδικών λειτουργιών μικροελεγκτή PIC

Μητρώα ειδικές λειτουργίεςχρησιμοποιείται σε μικροελεγκτές PIC για τον έλεγχο διαφόρων λειτουργιών. Όπως και με τους καταχωρητές γενικής χρήσης, ο αριθμός και η διεύθυνσή τους διαφέρουν από συσκευή σε συσκευή. Σε προγράμματα γραμμένα σε C, συνήθως δεν απαιτείται άμεση πρόσβαση σε καταχωρητές ειδικών συναρτήσεων, εκτός εάν χρησιμοποιούνται τμήματα γλώσσας συγκρότησης.

Περιοχή I/O μικροελεγκτών AVR

Η περιοχή I/O των μικροελεγκτών AVR περιέχει 64 καταχωρητές που χρησιμοποιούνται για τον έλεγχο ή την αποθήκευση δεδομένων από περιφερειακές συσκευές. Καθένας από αυτούς τους καταχωρητές μπορεί να προσπελαστεί από μια διεύθυνση I/O (ξεκινώντας από 0x000) ή από μια διεύθυνση SRAM (στην περίπτωση αυτή θα πρέπει να προστεθεί το 0x020 στη διεύθυνση I/O). Τα προγράμματα C συνήθως χρησιμοποιούν συμβατικά ονόματα καταχωρητών εισόδου/εξόδου και οι διευθύνσεις έχουν νόημα μόνο για προγράμματα γλώσσας assembly.

Τα ονόματα, οι διευθύνσεις I/O και SRAM, καθώς και μια σύντομη περιγραφή των καταχωρητών από την περιοχή I/O των μικροελεγκτών AVR παρουσιάζονται στον πίνακα. 2.1. Πρέπει να σημειωθεί ότι σε διάφορα μοντέλαμικροελεγκτές, ορισμένοι από τους καταχωρητές που αναφέρονται δεν χρησιμοποιούνται και οι διευθύνσεις δεν αναφέρονται στον πίνακα. 2.1 δεσμεύονται από την Atmel για μελλοντική χρήση.

Πίνακας 2.1. Περιγραφή καταχωρητών από την περιοχή I/O

Όνομα εγγραφής Διεύθυνση I/O Διεύθυνση SRAM Περιγραφή
ACSR 0x08 0x28 Αναλογικός έλεγχος σύγκρισης και καταχωρητής κατάστασης
UBRR 0x09 0x29 UART Baud Rate Register
UCR 0x0A 0x2A Καταχωρητής ελέγχου πομποδέκτη UART
USR 0x0V 0x2V Καταχώρηση κατάστασης πομποδέκτη UART
UDR 0х0С 0x2С Μητρώο δεδομένων πομποδέκτη UART
SPCR 0x0D 0x2D Μητρώο ελέγχου διεπαφής SPI
SPSR 0x0E 0x2E Εγγραφή κατάστασης διεπαφής SPI
SPDR 0x0F 0x2F SPI Data I/O Register
PIND 0x10 0x30 Καρφίτσες θύρας D
DDRD 0x11 0x31 Port D Data Direction Register
PORTD 0x12 0x32 Μητρώο δεδομένων Port D
PINC 0x13 0x33 Θύρα C pins
DDRC 0x14 0x34 Port C Data Direction Register
PORTC 0x15 0x35 Port C Data Register
PINB 0x16 0x36 Καρφίτσες θύρας Β
DDRB 0x17 0x37 Θύρα Β Μητρώο Κατεύθυνσης Δεδομένων
PORTB 0x18 0x38 Μητρώο δεδομένων θύρας Β
PINA 0x19 0x39 Καρφίτσες θύρας Α
DDRA 0x1A 0x3A Port A Data Direction Register
ΠΟΡΤΑ 0x1V 0x3V Μητρώο δεδομένων Port A
EECR 0x1С 0x3С Καταχωρητής ελέγχου μνήμης EEPROM
EEDR 0x1D 0x3D Μητρώο δεδομένων EEPROM
EEARL 0x1E 0x3E Καταχωρητής διευθύνσεων μνήμης EEPROM (χαμηλό byte)
EEARH 0x1F 0x3F Καταχωρητής διεύθυνσης μνήμης EEPROM (υψηλό byte)
WDTCR 0x21 0x41 Μητρώο ελέγχου χρονοδιακόπτη Watchdog
ICR1L 0x24 0x44
ICR1H 0x25 0x45 Καταχωρητής καταγραφής χρονοδιακόπτη/μετρητή T/C1 (χαμηλό byte)
OCR1BL 0x28 0x48 Συγκριτικός καταχωρητής Β του χρονοδιακόπτη T/C1 (χαμηλό byte)
OCR1BH 0x29 0x49 Συγκριτικός καταχωρητής Β του χρονοδιακόπτη T/C1 (υψηλό byte)
OCR1AL 0x2A 0x4A Συγκριτικός καταχωρητής Α του χρονοδιακόπτη T/C1 (χαμηλό byte)
OCR1AH 0x2V 0x4V Συγκριτικός καταχωρητής Α του χρονοδιακόπτη T/C1 (υψηλό byte)
TCNT1L 0x2С 0х4С Καταγραφή καταμέτρησης χρονοδιακόπτη/μετρητή T/C1 (χαμηλό byte)
TCNT1H 0x2D 0x4D Καταγραφή καταμέτρησης χρονοδιακόπτη/μετρητή T/C1 (υψηλό byte)
TCCR1B 0x2E 0x4E Καταχωρητής ελέγχου Β του χρονοδιακόπτη/μετρητή T/C1
TCCR1A 0x2F 0x4F Καταχωρητής ελέγχου Α του χρονοδιακόπτη/μετρητή T/C1
TCNT0 0x32 0x52 Καταγραφή καταμέτρησης χρονοδιακόπτη/μετρητή T/C0
TCCR0 0x33 0x53 Καταχωρητής χρονοδιακόπτη/μετρητή ελέγχου T/C0
MCUCR 0x35 0x55 Μητρώο ελέγχου μικροελεγκτή
TIFR 0x38 0x58 Καταχωρητής σημαίας διακοπής χρονοδιακόπτη/μετρητή
TIMSK 0x39 0x59 Καταχωρητής συγκάλυψης διακοπής χρονοδιακόπτη
GIFR 0x3A 0x5A Γενικός καταχωρητής σημαίας διακοπής
GIMSK 0x3V 0x5V Γενικό Μητρώο Συγκάλυψης Διακοπών
SPL 0x3D 0x5D Δείκτης στοίβας (χαμηλό byte)
SPH 0x3E 0x5E Δείκτης στοίβας (υψηλό byte)
SREG 0x3F 0x5F Μητρώο κατάστασης

Καταχωρητής κατάστασης SREG μικροελεγκτών AVR

Ο καταχωρητής κατάστασης περιέχει τις σημαίες κατάστασης των μικροελεγκτών AVR και βρίσκεται στην περιοχή I/O στη διεύθυνση $3F (η διεύθυνση SRAM είναι $5F). Αφού δοθεί το σήμα επαναφοράς, αρχικοποιείται σε μηδενικά.

Οικογένεια AVR - περιλαμβάνει μικροελεγκτές 8-bit για ένα ευρύ φάσμα εργασιών. Για σύνθετα έργα με μεγάλο ποσόεισόδους/εξόδους, σας παρέχονται οι μικροελεγκτές AVR Mega και AVR xmega, οι οποίοι είναι διαθέσιμοι σε πακέτα από 44 έως 100 ακίδες και διαθέτουν έως και 1024 kB μνήμης Flash και η ταχύτητα λειτουργίας τους είναι έως και 32 εκατομμύρια λειτουργίες ανά δευτερόλεπτο. Σχεδόν όλα τα μοντέλα έχουν τη δυνατότητα δημιουργίας PWM, ενσωματωμένου ADC και DAC.

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

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

Η δημοτικότητα της οικογένειας AVR υποστηρίζεται από υψηλό επίπεδοεδώ και πολλά χρόνια, τα τελευταία 10 χρόνια έχει τροφοδοτηθεί το ενδιαφέρον για αυτά Έργο Arduino– μια πλακέτα για εύκολη είσοδο στον κόσμο των ψηφιακών ηλεκτρονικών.

Είναι αδύνατο να περιγραφεί με σαφήνεια το πεδίο εφαρμογής του μικροελεγκτή, επειδή είναι απεριόριστο, αλλά μπορεί να ταξινομηθεί ως εξής:

  1. Το Tiny AVR είναι το απλούστερο από τεχνική άποψη. Έχουν λίγη μνήμη και ακίδες για σύνδεση σημάτων και η τιμή είναι κατάλληλη. Ωστόσο αυτό τέλεια λύσηγια τα απλούστερα έργα, που κυμαίνονται από τον αυτόματο έλεγχο του εσωτερικού φωτισμού του αυτοκινήτου έως τους ανιχνευτές παλμογράφου για επισκευή ηλεκτρονικών ειδών «φτιάξ' το μόνος σου». Χρησιμοποιούνται επίσης στο έργο συμβατό με Arduino - Digispark. Αυτή είναι η μικρότερη έκδοση ενός Arduino τρίτου κατασκευαστή. κατασκευασμένο σε μορφή μονάδας flash USB.
  2. Η οικογένεια MEGA έχει παραμείνει εδώ και πολύ καιρό η κύρια μεταξύ των προηγμένων ραδιοερασιτέχνων· είναι πιο ισχυρή και έχει μεγαλύτερη χωρητικότητα μνήμης και μεγαλύτερο αριθμό ακίδων από ό,τι στο Tiny. Αυτό επιτρέπει πολύπλοκα έργα, αλλά η οικογένεια είναι πολύ ευρεία για να περιγραφεί εν συντομία. Ήταν αυτοί που χρησιμοποιήθηκαν στην πρώτη Πλακέτες Arduino, οι τρέχουσες πλακέτες είναι εξοπλισμένες κυρίως με ATMEGA

Η έξοδος οποιουδήποτε MK χωρίς πρόσθετους ενισχυτές θα τραβήξει LED ή Μήτρα LEDως δείκτες, για παράδειγμα.

AVR xMega ή παλαιότεροι μικροελεγκτές

Οι προγραμματιστές της Atmel δημιούργησαν το AVR xMega ως πιο ισχυρό MK, ενώ εξακολουθεί να ανήκει στην οικογένεια AVR. Αυτό ήταν απαραίτητο για να διευκολύνει το έργο του προγραμματιστή όταν μετακομίζει σε μια πιο ισχυρή οικογένεια.

Το AVR xMega έχει δύο κατευθύνσεις:

  • Τα MK με τάση τροφοδοσίας 1,8-2,7 βολτ λειτουργούν με συχνότητα έως και 12 MHz, οι είσοδοι τους είναι ανθεκτικές σε τάση 3,3 V.
  • Τα MK με τάση τροφοδοσίας 2,7-3,6 βολτ μπορούν ήδη να λειτουργούν σε περισσότερα υψηλές συχνότητες– έως 32 MHz, και η είσοδος είναι ανθεκτική στα 5 volt.

Αξίζει επίσης να σημειωθεί: Το AVR xMega λειτουργεί εξαιρετικά αυτόνομα συστήματαγιατί έχουν χαμηλή κατανάλωση ρεύματος. Για παράδειγμα: όταν λειτουργούν τα χρονόμετρα και τα ρολόγια πραγματικού χρόνου, τα RTC καταναλώνουν ρεύμα 2 mA και είναι έτοιμα για λειτουργία από εξωτερικές διακοπές ή υπερχείλιση χρονοδιακόπτη, καθώς και από το χρόνο. Χρησιμοποιείται μια ποικιλία χρονόμετρων 16-bit για την εκτέλεση ποικίλων λειτουργιών.

Εργασία με θύρα USB

Ας ξεκινήσουμε με το γεγονός ότι για να προγραμματίσετε τον μικροελεγκτή που πρέπει να χρησιμοποιήσετε σειριακή θύρα, ωστόσο, στους σύγχρονους υπολογιστές λείπει συχνά μια θύρα COM. Πώς να συνδέσετε έναν μικροελεγκτή σε έναν τέτοιο υπολογιστή; Εάν χρησιμοποιείτε μετατροπείς USB-UART, αυτό το πρόβλημα μπορεί να λυθεί πολύ εύκολα. Μπορείτε να συναρμολογήσετε τον απλούστερο μετατροπέα χρησιμοποιώντας μικροκυκλώματα FT232 και CH340 και το διάγραμμά του παρουσιάζεται παρακάτω.

Ένας τέτοιος μετατροπέας βρίσκεται σε σανίδες Arduino UNOκαι το Aduino Nano.

Ορισμένοι μικροελεγκτές AVR διαθέτουν ενσωματωμένο (υλικό) USB:

  • ATmega8U2;
  • ATmega16U2;
  • ATmega32U2.

Αυτή η λύση χρησιμοποιείται για την υλοποίηση επικοινωνίας μεταξύ ενός υπολογιστή και του Arduino mega2560 μέσω USB, στο οποίο ο μικροελεγκτής «καταλαβαίνει» μόνο το UART.

Σκοπός DAC και ADC μικροελεγκτών AVR

Οι μετατροπείς ψηφιακού σε αναλογικό (DAC) είναι συσκευές που μετατρέπουν τα σήματα ενός και μηδενικού (ψηφιακό) σε αναλογικό (ομαλά μεταβαλλόμενο). Τα κύρια χαρακτηριστικά είναι το βάθος bit και η συχνότητα δειγματοληψίας. Μετατρέπεται σε ADC αναλογικό σήμασε ψηφιακή μορφή.

Απαιτούνται θύρες με υποστήριξη ADC για τη σύνδεση αναλογικών αισθητήρων, για παράδειγμα, τύπου αντίστασης, στον μικροελεγκτή.

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


Ένα παράδειγμα χρήσης ενός ADC είναι ένας παλμογράφος σε έναν μικροελεγκτή. Δυστυχώς οι συχνότητες παρόχους κινητής τηλεφωνίαςκαι ο επεξεργαστής υπολογιστή δεν θα μπορεί να παρακολουθηθεί, αλλά οι συχνότητες της τάξης του 1 MHz είναι εύκολες. Θα είναι ένας εξαιρετικός βοηθός όταν εργάζεστε μαζί του μπλοκ παλμώνθρέψη.

Και εδώ βρίσκεται αναλυτικό βίντεοαυτό το έργο, οδηγίες συναρμολόγησης και συμβουλές από τον συγγραφέα:

Τι βιβλιογραφία πρέπει να διαβάσω για τους μικροελεγκτές AVR για αρχάριους;

Βουνά λογοτεχνίας έχουν γραφτεί για την εκπαίδευση νέων επαγγελματιών, ας δούμε μερικά από αυτά:

  1. Evstifeev A.V. "Μικροελεγκτές AVR της οικογένειας Mega." Το βιβλίο περιγράφει λεπτομερώς την αρχιτεκτονική των μικροελεγκτών. Περιγράφεται ο σκοπός όλων των καταχωρητών και χρονομετρητών, καθώς και οι τρόποι λειτουργίας τους. Έχει μελετηθεί η λειτουργία των διεπαφών επικοινωνίας με τον έξω κόσμο, SPI κ.λπ.. Αποκαλύπτεται το σύστημα εντολών για να κατανοήσει ένας ραδιοερασιτέχνης μέσου επιπέδου. Το υλικό στο βιβλίο «AVR Microcontrollers of the Mega Family: User Guide» θα σας βοηθήσει να μελετήσετε τη δομή του τσιπ και τον σκοπό κάθε κόμβου του, κάτι που είναι σίγουρα σημαντικό για κάθε προγραμματιστή μικροελεγκτή.
  2. Belov A.V. – «Μικροελεγκτές AVR στην πρακτική του ραδιοερασιτέχνη». Όπως υποδηλώνει ο τίτλος, αυτό το βιβλίο είναι αφιερωμένο σε μεγάλο βαθμό πρακτική πλευράεργασία με μικροελεγκτές. Ο μικροελεγκτής ATiny2313, που έχει γίνει κλασικός, εξετάζεται λεπτομερώς, καθώς και πολλά κυκλώματα για συναρμολόγηση.
  3. Hartov V.Ya. «Μικροελεγκτές AVR. Εργαστήριο για αρχάριους». Θα σας βοηθήσει να κατανοήσετε το AVR studio 4, καθώς και κιτ εκκίνησης STK Θα μάθετε να εργάζεστε με σειριακές και παράλληλες διεπαφές όπως UART, I2C και SPI. Βιβλίο «AVR Microcontrollers. Εργαστήριο για αρχάριους» γραμμένο από καθηγητή στο MSTU. N.E. Bauman και χρησιμοποιείται εκεί για τη μελέτη αυτού του θέματος.

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

Ανάμεσα στους ραδιοερασιτέχνες επίπεδο εισόδουΥπάρχει μόνο ένας ανταγωνιστής των μικροελεγκτών AVR - PIC.