AVR. Εκπαιδευτικό πρόγραμμα. Αρχιτεκτονική. Προγραμματισμός AVR. Προγραμματισμός μικροελεγκτών AVR για αρχάριους Παράμετροι μικροελεγκτών οικογένειας avr

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

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

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

Το μειονέκτημα της αρχιτεκτονικής RISC ήταν η ανάγκη δημιουργίας πρόσθετων οδηγιών στη γλώσσα assembly, οι οποίες υλοποιούνται σε υλικό για συσκευές 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 (Static Random Access Memory) υποδεικνύεται στην Εικ. Το 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 και Σύντομη περιγραφήκαταχωρητές από την περιοχή εισόδου/εξόδου των μικροελεγκτών 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). Αφού δοθεί το σήμα επαναφοράς, αρχικοποιείται σε μηδενικά.

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

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

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

Μνήμη flash

Μνήμη RAM

Μνήμη EEPROM

Θύρες I/O

U δύναμη

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

Θερμοκρασία λειτουργίας: -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 (σήμα πληροφοριών σε 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

Σε αυτό το άρθρο θα προσπαθήσουμε να περιγράψουμε γενικά, Τα κύρια χαρακτηριστικά, τι υπάρχει "μέσα σε αυτό", τι χρειάζεται για να ξεκινήσετε να εργάζεστε με μικροελεγκτές AVR κ.λπ.

Τι είναι το Tiny, Mega;

Εταιρία Atmelπαράγει μια εκτεταμένη σειρά μικροελεγκτών οκτώ bit με βάση τον πυρήνα AVR, χωρισμένο σε πολλές υποοικογένειες, που διαφέρουν σε τεχνικές προδιαγραφές, τομείς εφαρμογής, τιμή:

  • ATtiny- οικογένεια Μικροελεγκτές AVRβελτιστοποιημένη για εφαρμογές που απαιτούν σχετικά υψηλή απόδοση (έως 1,0 MIPS και δυνατότητα λειτουργίας σε συχνότητες έως 20,0 MHz), ενεργειακή απόδοση (η ATtiny είναι η μόνη οικογένεια που μπορεί να λειτουργεί από τάση τροφοδοσίας 0,7 V!) και συμπαγή (υπάρχουν μικροελεγκτές στο SOT23 -6 πακέτο - μόνο 6 ακίδες και κάθε ακίδα έχει πολλές λειτουργίες, για παράδειγμα: θύρα I/O, είσοδος ADC, έξοδος PWM, κ.λπ.). Εδώ αναδεικνύεται το πεδίο εφαρμογής τους: συσκευές που είναι κρίσιμες για την τιμή, την κατανάλωση ενέργειας, το μέγεθος κ.λπ.
  • ATmega– Η οικογένεια μικροελεγκτών AVR έχει σχεδιαστεί για χρήση σε μεγάλη ποικιλία περιοχών, χάρη στο πολύ μεγάλο σετπεριφερειακές συσκευές, μεγάλη ποσότητα μνήμης προγράμματος, θύρες εισόδου/εξόδου κλπ. Με μια λέξη, υπάρχει χώρος για επέκταση.
  • ATxmega– μια νέα οικογένεια μικροελεγκτών AVR με περισσότερους μεγάλο σετπεριφερειακές συσκευές από το ATmega (προστέθηκε συσκευή άμεσης πρόσβασης μνήμης, DAC, μονάδα CRC, πλήρης Διασύνδεση USB, ταχύτερο ADC κ.λπ.), με συχνότητες λειτουργίας έως 32,0 MHz.

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

Οι πιο δημοφιλείς θήκες συσκευασίας είναι:

  • DIP (Dual Inline Package) - περίβλημα με δύο σειρές επαφών
  • QFP (Quad Flat Package) - επίπεδη συσκευασία με τέσσερις σειρές επαφών
  • SOIC (Small-Outline Integrated Circuit) – ολοκληρωμένα κυκλώματα μικρού μεγέθους (μικρής περιοχής)

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

Τροφοδοσία και χρονομέτρηση μικροελεγκτών AVR

Μικροελεγκτές AVRκατασκευασμένο με τεχνολογία CMOS, η οποία εξασφαλίζει πολύ χαμηλή κατανάλωση ενέργειας. Στην πράξη, η κατανάλωση ρεύματος γραμμικά και ευθέως ανάλογη με τη συχνότητα λειτουργίας (όσο μεγαλύτερη είναι η συχνότητα, τόσο μεγαλύτερη η κατανάλωση ρεύματος).



Η τάση τροφοδοσίας για τους μικροελεγκτές AVR κυμαίνεται από 2,7 έως 5,5 V(6,0V είναι το μέγιστο, αν και το AVR μου κατά κάποιο τρόπο δούλευε στα 7V - και τίποτα, είναι ακόμα ζωντανό μέχρι σήμερα). Αυτό σημαίνει ότι το AVR μπορεί άμεσα να ελέγχει, να ανταλλάσσει δεδομένα κ.λπ. Με διάφορες συσκευές(με ανοχή και 3,3V και ανοχή 5V) χωρίς την ανάγκη χρήσης μετατροπέων λογικής στάθμης. Για ακριβέστερη επεξεργασία των αναλογικών σημάτων, το AVR παρέχει ξεχωριστές ακίδες για την τροφοδοσία του αναλογικού τμήματος του μικροελεγκτή, το οποίο περιλαμβάνει συσκευές όπως ADC, DAC και αναλογικό συγκριτή. Επιπλέον, οι μικροελεγκτές AVR διαθέτουν πολλές «λειτουργίες ύπνου» για να παρέχουν την καλύτερη δυνατή εξοικονόμηση ενέργειας.

Επίσης, κάθε ακροδέκτης του μικροελεγκτή (ανάλογα με τη συχνότητα λειτουργίας και την τάση τροφοδοσίας) μπορεί να τροφοδοτηθεί εξωτερικές συσκευέςτρέχουσα έως 40,0 mA(μέγιστο!), αλλά όλα μπορούν να «κατεβάσετε/κατεβάσετε» από τον μικροελεγκτή έως 200,0 mA(ανώτατο όριο!).

Το εύρος συχνοτήτων των σημάτων ρολογιού διαφέρει ανάλογα με την «οικογενειακή αρχαιότητα» (το ATtiny είναι η νεότερη οικογένεια μικροελεγκτών AVR και η ATxMega η παλαιότερη). Για ορισμένους εκπροσώπους, ειδικά την οικογένεια ATtiny, η συχνότητα λειτουργίας μπορεί να φτάσει τα 20,0 MHz, για την ATmega δεν υπερβαίνει τα 16,0 MHz , ενώ το ATxMega δεν υπερβαίνει τα 32,0 MHz. Επίσης, κάθε μικροελεγκτής AVR διαθέτει εσωτερικό ταλαντωτή RC έως 8,0 MHz, ο οποίος σας επιτρέπει να κάνετε χωρίς εξωτερική πηγήσήμα χρονισμού.

Η Atmel παράγει μικροελεγκτές με μέγιστες συχνότητες λειτουργίας που είναι οι μισές από τις τυπικές (για να αυξηθεί η εξοικονόμηση ενέργειας), επομένως θα πρέπει να προσέχετε την κωδικοποίηση των μικροελεγκτών κατά την αγορά τους. Λεπτομερείς πληροφορίεςσχετικά με το ποιος μικροελεγκτής λειτουργεί σε ποιες συχνότητες και τάσεις τροφοδοσίας, ποιοι τύποι κωδικοποιήσεων και συσκευασιών είναι διαθέσιμοι για αυτόν τον μικροελεγκτή κ.λπ. μπορείτε να βρείτε στην ενότητα "Πληροφορίες παραγγελίας" κάθε φύλλου δεδομένων.

Ακολουθεί ένα παράδειγμα πίνακα από το φύλλο δεδομένων για τον μικροελεγκτή ATtiny13. Στη στήλη "Κωδικός παραγγελίας" μπορείτε να δείτε τις διαφορές μεταξύ των κωδικοποιήσεων και δεν είναι δύσκολο να μαντέψετε με τι συνδέονται.



Τι υπάρχει μέσα στον μικροελεγκτή AVR;

Όπως ήδη αναφέρθηκε στον πρόλογο, Μικροελεγκτές AVRέχουν αρχιτεκτονική του Χάρβαρντ ( κύριο χαρακτηριστικόΑυτή η αρχιτεκτονική είναι ότι η μνήμη προγράμματος και η RAM, καθώς και οι δίαυλοι πρόσβασης, διαχωρίζονται για να αυξηθεί η ταχύτητα εκτέλεσης εντολών: ενώ εκτελείται μια εντολή, η επόμενη ανακτάται από τη μνήμη προγράμματος) με έναν επεξεργαστή RISC, με ταχύτητα 1,0 MIPS. Όλοι οι μικροελεγκτές, ανεξάρτητα από το μοντέλο και τη διάταξη τους, έχουν την ίδια κεντρική μονάδα επεξεργασίας (επεξεργαστής/πυρήνας). Ένας μεμονωμένος πυρήνας κάνει ένα πρόγραμμα γραμμένο σε οποιαδήποτε γλώσσα πιο καθολικό και, εάν είναι επιθυμητό, ​​μπορεί να αντικατασταθεί σε οποιοδήποτε έργο, ας πούμε, έναν πιο ακριβό ελεγκτή με έναν άλλο φθηνότερο, με ελάχιστες αλλαγές στον κώδικα.

RISC(Υπολογιστής μειωμένου συνόλου εντολών) – ένας επεξεργαστής με ένα σύνολο απλών οδηγιών συναρμολόγησης (προσθήκη, αφαίρεση, μετατόπιση αριστερά/δεξιά, "λογικό ΚΑΙ", κ.λπ.), όλες οι εντολές έχουν σταθερό μήκος, ο επεξεργαστής περιέχει μεγάλο αριθμό γενικών καταχωρητές σκοπού κ.λπ. Για να υπολογίσει, για παράδειγμα, κάποιο είδος μέσης μαθηματικής εξίσωσης, ο επεξεργαστής θα πρέπει να εκτελέσει πολλές απλές οδηγίες συναρμολόγησης, σε αντίθεση με έναν επεξεργαστή CISC που έχει οδηγίες "για όλες τις περιπτώσεις". Αλλά το AVR δεν είναι αρκετά RISC -επεξεργαστή, αφού δεν έχουν όλες οι οδηγίες συναρμολόγησης σταθερή μορφή. Οι περισσότερες έχουν 16-bit μορφή, οι υπόλοιπες είναι 32-bit. Αυτό σημαίνει ότι κάθε εντολή καταλαμβάνει 16 ή 32 bit στη μνήμη του προγράμματος. Παρεμπιπτόντως, η μη σταθερή Το μήκος των οδηγιών συναρμολόγησης είναι αυτό που τον κάνει επεξεργαστή: Προηγμένος εικονικός επεξεργαστής RISC (AVR).

MIPS(Εκατομμύρια εντολές ανά δευτερόλεπτο) - Οι μικροελεγκτές AVR είναι ικανοί να εκτελούν (περίπου) ένα εκατομμύριο εντολές στο 1,0 MHz, ή απλά, οι περισσότερες οδηγίες συναρμολόγησης εκτελούνται σε έναν μόνο κύκλο ρολογιού.



Ο εγκέφαλος ενός μικροελεγκτή AVR είναι η κεντρική μονάδα επεξεργασίας του (CPU/core).

Μερικά στοιχεία του επεξεργαστή:

Αριθμιτική μονάδα λογικής

Μετρητής προγράμματος

Δείκτης στοίβας

  • Εγγραφή κατάστασης
  • Μνήμη προγράμματος Flash
  • Μνήμη δεδομένων

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

Περιφερικοί καταχωρητές (Μητρώοι εισόδου/εξόδου)

Μνήμη RAM

Σύστημα ρολογιού. Αυτό το σύστημαμπορεί να συγκριθεί με το καρδιαγγειακό σύστημα

Μονάδα διακοπής

Περιφερειακές συσκευές, θα αναφέρω μερικές από αυτές:

Θύρες I/O

Μνήμη EEPROM

USB (μόνο xMega), διεπαφές USART, I2C, SPI, JTAG

Watchdog, Timer/Counter (με ταλαντωτή PWM, λήψη/σύγκριση κ.λπ.)

ADC, DAC (μόνο xMega), Αναλογικός συγκριτής

Ενότητες εξωτερικών διακοπών

Το σύνολο των περιφερειακών συσκευών σε διαφορετικές οικογένειες (Tiny, Mega και xMega) και διαφορετικών μικροελεγκτών αυτών των οικογενειών είναι διαφορετικό. Υπάρχουν μικροελεγκτές γεμάτοι με μια ποικιλία περιφερειακών συσκευών, αλλά επίσης, για κρίσιμες για το κόστος εξελίξεις, υπάρχουν μικροελεγκτές με ένα μικρό (απαραίτητο) σύνολο περιφερειακών.

Ένα από τα πλεονεκτήματα των μικροελεγκτών AVR είναι η δυνατότητα χρήσης περιφερειακών συσκευών σε διάφορους τρόπους λειτουργίας κοινής λειτουργίας, κάτι που πολύ συχνά απλοποιεί το έργο του προγραμματιστή. Το AVR διαθέτει επίσης ένα ενσωματωμένο σύστημα επαναφοράς και παρακολούθησης του επιπέδου τάσης τροφοδοσίας (System Control and Reset), το οποίο εξασφαλίζει κανονική εκκίνηση του μικροελεγκτή και, εάν χρειάζεται, αξιόπιστη απενεργοποίηση.

Οι περιφερειακοί καταχωρητές ελέγχου/κατάστασης βρίσκονται στην περιοχή της μνήμης δεδομένων, μεταξύ των καταχωρητών γενικής χρήσης και ΕΜΒΟΛΟ, που εξασφαλίζει υψηλή απόδοση κατά την εργασία με περιφερειακά. Ο προγραμματιστής, φυσικά, έχει πλήρη πρόσβαση σε αυτά τα μητρώα (I/O Registers).

Τι χρειάζεται για να λειτουργήσει ο μικροελεγκτής;

  • γράψτε ένα πρόγραμμα (πρόγραμμα). Για να γράψετε ένα πρόγραμμα/αλγόριθμο για τον οποίο θα λειτουργεί ο μικροελεγκτής, θα χρειαστείτε ένα ολοκληρωμένο περιβάλλον ανάπτυξης για μικροελεγκτές AVR, το οποίο περιλαμβάνει πρόγραμμα επεξεργασίας κώδικα/κειμένου, μεταγλωττιστή, σύνδεσμο και άλλα βοηθητικά προγράμματα.
  • σχεδιασμός κυκλώματος. Το πρόγραμμα από μόνο του δεν αρκεί για να λειτουργήσει ο μικροελεγκτής· απαιτεί επίσης ένα ελάχιστο κιτ σώματος (ένα σετ εξωτερικών ηλεκτρονικές συσκευές), για να παρέχει στον μικροελεγκτή τάση τροφοδοσίας και σήμα ρολογιού έτσι ώστε τουλάχιστον ο πυρήνας του μικροελεγκτή να λειτουργεί.
Το παρακάτω σχήμα δείχνει το "κλασικό" κιτ μικροελεγκτή που απαιτείται για την κανονική λειτουργία.


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

- Χαλαζίας και πυκνωτές Τα C1, C2 (22 pF το καθένα) παρέχουν στον μικροελεγκτή και σε όλες τις περιφερειακές του συσκευές σήμα ρολογιού υψηλής ποιότητας (μέγιστη συχνότητα - 16,0 MHz).

Αντίσταση R1(10K), παρέχει υψηλό επίπεδο στην είσοδο RESET, απαραίτητο για τη σταθερή λειτουργία του μικροελεγκτή. Εάν, κατά τη λειτουργία του μικροελεγκτή, η τάση σε αυτόν τον ακροδέκτη πέσει κάτω από ένα ορισμένο επίπεδο, ο μικροελεγκτής θα επαναρυθμιστεί και η λειτουργία του προβλεπόμενου αλγορίθμου μπορεί να διαταραχθεί.

- Υποδοχή ISPχρησιμοποιείται για προγραμματισμό εντός κυκλώματος, δηλαδή είναι απαραίτητο να γράψετε το πρόγραμμα που γράψατε στη μνήμη του μικροελεγκτή απευθείας στην πλακέτα (χωρίς να αφαιρέσετε τον μικροελεγκτή από τη συσκευή).

- γκάζι L1και οι πυκνωτές C3, C4 παρέχουν τάση τροφοδοσίας σε αναλογικές περιφερειακές συσκευές, καθώς και ορισμένους καταχωρητές θυρών I/O. Εάν ο μικροελεγκτής δεν έχει αναλογικό εξάρτημα, τότε δεν υπάρχουν αναλογικοί ακροδέκτες τροφοδοσίας, ως αποτέλεσμα, αυτά τα εξαρτήματα δεν χρειάζονται.Η απλοποιημένη καλωδίωση του μικροελεγκτή έχει ως εξής: πρώτον, δεδομένου ότι ο μικροελεγκτής στερήθηκε εξωτερικού χρονισμού, θα πρέπει να υποδεικνύει ότι ο χρονισμός θα προέρχεται από τον εσωτερικό ταλαντωτή RC ρυθμίζοντας τα κατάλληλα bits ασφαλειών (ένα είδος περιοριστικών παραμέτρων λειτουργίας του μικροελεγκτή ).
Η μέγιστη συχνότητα του εσωτερικού ταλαντωτή είναι 8,0 MHz, που σημαίνει ότι ο μικροελεγκτής δεν θα μπορεί να λειτουργήσει στη μέγιστη συχνότητά του (απόδοση).
Δεύτερον, το αναλογικό τμήμα του μικροελεγκτή (καθώς και ορισμένοι καταχωρητές των θυρών εισόδου/εξόδου) δεν έχουν πηγή ρεύματος, γεγονός που αποκλείει τη χρήση τους.
Τρίτον, δεν υπάρχει υποδοχή για προγραμματισμό εντός κυκλώματος, οπότε για να γράψετε το υλικολογισμικό στη μνήμη του μικροελεγκτή θα πρέπει να το αφαιρέσετε από τη συσκευή, να το γράψετε κάπου και μετά να το επιστρέψετε στη θέση του. Όπως καταλαβαίνετε και εσείς, αυτό δεν είναι πολύ βολικό (αφαίρεση/εισαγωγή, συγκόλληση/αποκόλληση) και μπορεί να οδηγήσει σε ζημιά τόσο στον ίδιο τον μικροελεγκτή (τα πόδια μπορεί να σπάσουν, να υπερθερμανθούν από τη συγκόλληση κ.λπ.), όσο και σε κοντινές συσκευές - υποδοχή, ράγες επί του σκάφους, κ.λπ.

Μικροελεγκτήςαυτός είναι, θα έλεγε κανείς, ένας μικρός υπολογιστής. που έχει τη δική του ΕΠΕΞΕΡΓΑΣΤΗΣ (καταχωρητές, μονάδα ελέγχου και αριθμητική λογική μονάδα), μνήμη, καθώς και διάφορα περιφέρεια, αρέσει Θύρες I/O, χρονόμετρα, ελεγκτές διακοπής, διάφορες γεννήτριες παλμών και ακόμη και αναλογικοί μετατροπείς. Δεν μπορείς να τα αναφέρεις όλα. Είναι αδύνατο να παραθέσουμε όλες τις εφαρμογές των μικροελεγκτών.

Αλλά, αν απλοποιήσουμε πολύ τα πάντα, τότε η κύρια λειτουργία του μικροελεγκτή είναι να "πηδά τα πόδια του". Εκείνοι. έχει πολλές ακίδες (από 6 έως πολλές δεκάδες ανάλογα με το μοντέλο) και σε αυτές τις ακίδες μπορεί να ρυθμίσει είτε 1 (στάθμη υψηλής τάσης, για παράδειγμα +5 βολτ) είτε 0 (στάθμη χαμηλής τάσης, περίπου 0,1 βολτ) ανάλογα με το λογισμικό αλγόριθμος ενσωματωμένος στη μνήμη του. Ο μικροελεγκτής μπορεί επίσης να καθορίσει την κατάσταση του σήματος στα πόδια του (για αυτό πρέπει να διαμορφωθούν ως είσοδος) - εάν η τάση εκεί είναι υψηλή ή χαμηλή (μηδέν ή ένα). Οι σύγχρονοι μικροελεγκτές έχουν επίσης σχεδόν παγκοσμίως έναν μετατροπέα αναλογικού σε ψηφιακό - αυτό είναι κάτι παρόμοιο με ένα βολτόμετρο, σας επιτρέπει όχι μόνο να παρακολουθείτε το 0 ή 1 στην είσοδο, αλλά να μετράτε πλήρως την τάση από το 0 στην αναφορά (συνήθως η αναφορά είναι ίση με την τάση τροφοδοσίας) και παρουσιάστε την ως αριθμό από 0 έως 1024 (ή 255, ανάλογα με το μέγεθος bit ADC)

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

Υπάρχουν πάρα πάρα πολλοί μικροελεγκτές. Σχεδόν κάθε εταιρεία που σέβεται τον εαυτό της που παράγει εξαρτήματα ραδιοφώνου παράγει το δικό της χειριστήριο. Ωστόσο, υπάρχει τάξη σε αυτή την ποικιλομορφία. Τα MK χωρίζονται σε οικογένειες· δεν θα τα απαριθμήσω όλα, αλλά θα περιγράψω μόνο τις πιο βασικές οικογένειες οκτώ bit.

MSC-51
Το πιο εκτεταμένο και ανεπτυγμένο είναι MSC-51, το αρχαιότερο όλων, προερχόμενο από Intel 8051και τώρα παράγεται από πολλές εταιρείες. Μερικές φορές καλείται εν συντομία C51. Αυτή είναι μια αρχιτεκτονική 8-bit, διαφέρει από τις περισσότερες άλλες αρχιτεκτονικές οκτώ-bit ως προς το ότι CISCαρχιτεκτονική. Εκείνοι. Μια εντολή μπορεί μερικές φορές να εκτελέσει μια αρκετά περίπλοκη ενέργεια, αλλά οι εντολές εκτελούνται σε μεγάλο αριθμό κύκλων ρολογιού (συνήθως 12 ή 24 κύκλους ρολογιού, ανάλογα με τον τύπο εντολής), έχουν διαφορετικά μήκη και υπάρχουν πολλά από αυτά, για όλες τις περιπτώσεις . Μεταξύ των αρχιτεκτονικών ελεγκτών MSC-51συναντιούνται σαν δεινόσαυροι AT89C51, έχοντας ελάχιστα περιφερειακά, μικρή μνήμη και ασήμαντες επιδόσεις και προϊόντα σαν τέρατα Silicon Laboratoriesέχοντας επί του σκάφους έναν πολύ κρεατικό κιμά περιφερειακών διαφορετικών μεγεθών, τεράστιους κάδους RAM και μόνιμη μνήμη, ισχυρές διεπαφές από απλές UART‘ένα πριν USBΚαι ΜΠΟΡΩ, και επίσης βάναυσα γρήγορος πυρήνας, παρέχοντας έως και 100 εκατομμύρια λειτουργίες ανά δευτερόλεπτο. Όσο για εμένα προσωπικά, λατρεύω την αρχιτεκτονική C51 για τον καταραμένο ωραίο συναρμολογητή της, που είναι απλά μια χαρά να γραφτεί. Gigabytes κώδικα έχουν ήδη γραφτεί για αυτήν την αρχιτεκτονική, έχουν δημιουργηθεί όλοι οι νοητοί και ασύλληπτοι αλγόριθμοι.

Atmel AVR
Η δεύτερη αγαπημένη μου οικογένεια είναι AVRαπό την εταιρεία Atmel. Καθόλου Atmelπαράγει και MSC-51ελεγκτές, αλλά εξακολουθούν να εστιάζουν σε AVR. Αυτοί οι ελεγκτές έχουν ήδη 8-bit RISCαρχιτεκτονική και να εκτελέσει μία εντολή σε έναν κύκλο ρολογιού, αλλά σε αντίθεση με την κλασική RISCοι πυρήνες έχουν ένα πολύ εκτεταμένο σύστημα εντολών, αν και δεν είναι τόσο βολικό όσο αυτό του C51, γι' αυτό δεν μου αρέσουν. Αλλά AVRπάντα εξοπλισμένο σαν για πόλεμο και απλά γεμισμένο με διάφορα περιφερειακά, ειδικά χειριστήρια της υποοικογένειας ATMega. Επίσης, αναβοσβήνουν πολύ εύκολα· αυτό δεν απαιτεί εξειδικευμένους προγραμματιστές ή άλλο περίπλοκο εξοπλισμό. Το μόνο που χρειάζεστε είναι πέντε καλώδια και έναν υπολογιστή με LPTΛιμάνι. Η ευκολία εκμάθησης επέτρεψε σε αυτό το χειριστήριο να πέσει σταθερά στις καρδιές πολλών, πολλών ραδιοερασιτέχνων σε όλο τον κόσμο.

PIC μικροτσίπ.
Άλλο ένα 8-bit RISCΟ μικροελεγκτής διακρίνεται από ένα πολύ διεστραμμένο σύστημα εντολών, που αποτελείται από μόνο μερικές ντουζίνες εντολές. Κάθε εντολή εκτελείται σε τέσσερις κύκλους ρολογιού. υπάρχουν πολλά πλεονεκτήματα, κυρίως χαμηλή κατανάλωση ενέργειας και γρήγορη εκκίνηση. Μέση τιμή PICο ελεγκτής δεν έχει τόσα περιφερειακά όπως στο AVR, αλλά τις ίδιες τις τροποποιήσεις PICΥπάρχουν τόσα πολλά χειριστήρια που μπορείτε πάντα να επιλέξετε ένα κρύσταλλο με περιφερειακά που ταιριάζουν ακριβώς στην εργασία, ούτε περισσότερο ούτε λιγότερο. Επί PIC«Τσεκούρι παραδοσιακά κατασκευασμένοι ενσωματωμένοι υπολογιστές για αυτοκίνητα, καθώς και πολυάριθμοι οικιακόι συναγερμοί.

Ποια οικογένεια να επιλέξετε; Ω, αυτή είναι μια δύσκολη ερώτηση. Σε πολλά φόρουμ και συνέδρια εξακολουθούν να υπάρχουν σκληρές μάχες σχετικά με το ποια οικογένεια είναι καλύτερη, οι θαυμαστές AVRτσακωμός με οπαδούς MSC-51, στην πορεία, χωρίς να ξεχνάμε να κλωτσάμε τα νεφρά PIC«πρόβατα, στα οποία απαντούν με είδος.

Η κατάσταση εδώ είναι όπως στο Starcraft :) Ποιος είναι πιο κουλ; Ανθρωποι? Zerg; Protoss; Είναι όλα σχετικά με την εφαρμογή, την κλίμακα των εργασιών και μια σειρά από άλλες παραμέτρους. Κάθε οικογένεια έχει τα δικά της πλεονεκτήματα και μειονεκτήματα. Αλλά προσωπικά, θα επέλεγα το AVR και για τους εξής λόγους:

  • 1. Διαθεσιμότητα στη Ρωσία. Αυτοί οι ελεγκτές είναι επάξια δημοφιλείς και αγαπητοί από τον κόσμο, πράγμα που σημαίνει ότι οι έμποροί μας είναι πρόθυμοι να τους μεταφέρουν. Ωστόσο, όπως το PIC. Με το MSC-51 η κατάσταση είναι χειρότερη. Δεν είναι πρόβλημα να αποκτήσετε απαρχαιωμένο AT89C51, αλλά ποιος τα χρειάζεται; Αλλά τα σύγχρονα silabs είναι ήδη αποκλειστικά.
  • 2. Χαμηλή τιμή. Σε γενικές γραμμές, το PIC φημίζεται για τη χαμηλή του τιμή στον κόσμο, αλλά η ειρωνεία είναι ότι τα δωρεάν χρήματα ξεκινούν μόνο αν το αγοράσετε με το φορτίο. Στην πραγματικότητα, σε έναν πραγματικό μετρητή, το AVR θα είναι 30-40 τοις εκατό φθηνότερο από το PIC με ελαφρώς μεγαλύτερη λειτουργικότητα. Με το MSC-51 η κατάσταση είναι ξεκάθαρη στο πρώτο σημείο. Η αποκλειστικότητα δεν είναι μόνο σπάνια, αλλά και ακριβή.
  • 3. Πολλά περιφερειακά ταυτόχρονα. Για μια σειριακή συσκευή αυτό είναι μάλλον μειονέκτημα. Είναι πολύ καλύτερο να έχετε μόνο ό,τι χρειάζεται για την τρέχουσα εργασία, και αφήστε τα υπόλοιπα να μην παρεμποδίζουν και να σπαταλούν ενέργεια. Για αυτό φημίζεται το PIC με τη διάδοσή του γκάμα μοντέλων, όπου μπορείτε να βρείτε ένα χειριστήριο που θα έχει αυτό που χρειάζεστε και όχι αυτό που δεν χρειάζεστε. Αλλά θα μελετήσουμε και θα το κάνουμε μόνοι μας! Επομένως, είναι καλύτερο για εμάς να έχουμε τα πάντα ταυτόχρονα και σε εφεδρεία. Και εδώ το AVR βρίσκεται πάνω από το PIC, βγάζοντας όλο και περισσότερα γεμισμένα χειριστήρια ξανά και ξανά. Αγόρασα στον εαυτό μου λίγο AtMega16A και αυτό είναι, μπορείτε να μελετήσετε όλη την οικογένεια.
  • 4. Μονοπύρηνος. Το γεγονός είναι ότι όλα τα σύγχρονα AVR έχουν τον ίδιο πυρήνα με ενιαίο σύστημαεντολές Υπάρχουν μόνο κάποιες διαφορές σε περιφερειακό επίπεδο (και αυτές είναι μικρές). Εκείνοι. Ο κώδικας από κάποιο μικροσκοπικό ATTiny13 μπορεί εύκολα να αντιγραφεί και να επικολληθεί στο ATMega64 και λειτουργεί σχεδόν χωρίς τροποποιήσεις. Και το αντίστροφο χωρίς σχεδόν κανένα περιορισμό. Είναι αλήθεια ότι τα παλαιότερα μοντέλα AVR (όλα τα είδη AT90S1200) έχουν περιορισμένη συμβατότητα από πάνω προς τα κάτω - έχουν ένα ελαφρώς μικρότερο σύστημα εντολών. Αλλά είναι με μεγάλη έκρηξη. Το Microchip έχει ένα σωρό οικογένειες. PIC12/16/18 με διαφορετικά συστήματα εντολών. Η 12η οικογένεια είναι συνήθως ένα μικροσκοπικό πράγμα (όπως το Tiny στο AVR), και το 18 είναι ήδη πιο σοβαροί ελεγκτές (ανάλογα με το Mega AVR) Και αν ο κωδικός από το 12 μπορεί να συρθεί στο 18, τότε πίσω το σχ.
  • 5. Εκτεταμένο σύστημα εντολών για ελεγκτές AVR. Το AVR έχει περίπου 130 εντολές, ενώ το Microchip PIC έχει μόνο 35. Φαίνεται ότι το PIC είναι νικητής - λιγότερες εντολές, πιο εύκολο στην εκμάθηση. Λοιπόν, ναι, έτσι ακριβώς ακούγεται το σύνθημα του μικροτσίπ, κάτι σαν "Μόνο 35 ομάδες!" Μόνο που αυτό είναι στην πραγματικότητα μαλακία. Τελικά, τι είναι η εντολή επεξεργαστή; Είναι ένα εργαλείο! Απλά φανταστείτε δύο αριθμομηχανές - μια κανονική, μια λογιστική και μια μηχανική. Η λογιστική είναι πολύ πιο εύκολο να μάθεις από τη μηχανική. Αλλά προσπαθήστε να υπολογίσετε το ημίτονο σε αυτό; Ή λογάριθμος; Όχι, μπορείτε, δεν διαφωνώ, αλλά πόσα πατήματα κουμπιών και ενδιάμεσοι υπολογισμοί θα χρειαστούν; Το ίδιο πράγμα! Είναι πολύ πιο βολικό να εργάζεστε όταν έχετε ένα σωρό διαφορετικές ενέργειες στο χέρι. Επομένως, όσο μεγαλύτερο είναι το σύστημα εντολών, τόσο το καλύτερο.
  • 6. Διαθεσιμότητα δωρεάν μεταγλωττιστών C cross-platform. Φυσικά, μπορείτε πάντα να βρείτε μια ρωγμή. Πού που, αλλά στη χώρα μας αυτό δεν υπήρξε ποτέ πρόβλημα. Αλλά γιατί να κλέψεις κάτι αν έχεις κάτι δωρεάν; ;)
  • 7. Λοιπόν, το τελευταίο επιχείρημα είναι συνήθως το πιο ισχυρό. Η παρουσία κάποιου που θα δίδασκε και θα συμβούλευε. Βοήθησε με συμβουλές και με οδήγησε στο σωστό δρόμο. Επέλεξα το AVR για μένα και σε αυτόν τον ιστότοπο (από τουλάχιστονπρος το παρόν) αυτή η συγκεκριμένη οικογένεια θα γίνει πλήρως κατανοητή, πράγμα που σημαίνει ότι δεν έχετε πολλές επιλογές :))))))

Α, αλλά υπάρχουν πολλά από αυτά τα ίδια AVR. Ποιο να πάρω???
Ενδιαφέρον Ρωτήστε. Σε γενικές γραμμές, είναι καλύτερο να επιλέξετε MK για την εργασία. Αλλά για να το μελετήσετε, είναι καλύτερα να αρπάξετε κάτι γεμιστό.

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

ATmega16A - 16PI

  • ΣΤΟ- κατασκευασμένο στην Atmel
  • Mega- είδος οικογένειας. Υπάρχει επίσης το Tiny και το Xmega (το νέο είναι τρομερό πράγμα, ένα πλήρες ελικόπτερο). Γενικά, θεωρήθηκε ότι το Tiny ήταν, σαν, χαμηλού προϋπολογισμού με μικρή ποσότητα κιμά και γενικά ελαττωματικό, και το Mega, αντίθετα, ήταν τα πάντα ταυτόχρονα. Στην πραγματικότητα, η διαφορά μεταξύ των οικογενειών Tini και Mega όσον αφορά τον κιμά είναι πλέον ελάχιστη, αλλά το Tini έχει λιγότερη μνήμη και θήκες έρχεται με έναν αριθμό καρφίδων από 6 έως 20.
  • 16 — ποσότητα μνήμης flash σε kilobyte. Στην πραγματικότητα, δεν είναι όλα τόσο απλά. Ο αριθμός μνήμης είναι δύναμη δύο. Άρα το Mega162 δεν είναι ένα χειριστήριο με 162 KB φλας, αλλά ένα είδος τροποποίησης Mega162 με μνήμη 16 KB. Ή το Mega88 δεν είναι 88 kb, αλλά 8 kb φλας, και το δεύτερο 8 είναι κάπως μια υπόδειξη ότι πρόκειται για μια περαιτέρω ανάπτυξη του Mega8. Ομοίως Mega48 ή Mega168. Το ίδιο ισχύει και για την οικογένεια της Τίνι. Για παράδειγμα, Tini2313 - 2 kilobyte flash. Τι είναι το 313; Ποιος στο διάολο ξέρει τι εννοούσαν :) Ή Tiny12 - 1kb Flash. Σε γενικές γραμμές, το τσιπ καθαρίστηκε.
  • ΕΝΑ— πρόθεμα κατανάλωσης ενέργειας (συνήθως). Αυτό το γράμμα μπορεί να μην υπάρχει, αλλά στη νέα σειρά υπάρχει σχεδόν παντού. Για παράδειγμα, οι σειρές V και L είναι χαμηλής τάσης και μπορούν να λειτουργήσουν από 2,7 βολτ. Είναι αλήθεια ότι πρέπει να πληρώσετε λιγότερη συχνότητα για χαμηλή τάση. Αλλά το overclocking είναι δυνατό και εδώ, τίποτα το ανθρώπινο δεν μας είναι ξένο :) Οι A και P έχουν νέες σειρές AVR με τεχνολογία PicoPower δηλ. υπεροικονομικό. Δεν υπάρχει διαφορά στη γέμιση και την εσωτερική δομή με τα μοντέλα χωρίς δείκτη, η μόνη διαφορά είναι στη λειτουργία όλων των λειτουργιών ύπνου και στην κατανάλωση ενέργειας. Εκείνοι. Το Mega16A μπορεί εύκολα να αλλάξει σε Mega16 χωρίς A. Και τίποτα άλλο δεν χρειάζεται να αλλάξει.
  • 16 - Οριο συχνότητα ρολογιούσε megahertz. Στην πραγματικότητα, μπορείτε να το overclock στο 20 ;)
  • Π- είδος κελύφους. Σημαντικό χαρακτηριστικό. Το γεγονός είναι ότι δεν μπορεί να συγκολληθεί κάθε περίπτωση στο σπίτι χωρίς αιμορροΐδες. Προς το παρόν, συνιστώ να δώσετε προσοχή στο περίβλημα P-DIP. Αυτό είναι ένα ογκώδες τέρας, αλλά είναι εύκολο να συγκολληθεί και, το πιο σημαντικό, κολλάει εύκολα σε μια ειδική υποδοχή και βγαίνει ξανά από αυτήν. Είναι καλύτερα να αφήσετε στην άκρη τα περιβλήματα SOIC (δείκτης S) ή TQFP (δείκτης A) προς το παρόν. Χωρίς καλή εμπειρία συγκόλλησης και δυνατότητα χάραξης υψηλής ποιότητας πλακέτα τυπωμένου κυκλώματοςΚαλύτερα να μην ανακατεύεσαι μαζί τους.
  • Εγώ— Τύπος επικασσιτέρωσης μολύβδου. I - συγκόλληση μολύβδου. U - χωρίς μόλυβδο. Δεν υπάρχει καμία απολύτως διαφορά για εσάς. Πάρε αυτό που είναι φθηνότερο.

Προτείνω τα παρακάτω μοντέλα:

  • ATMega16A-16PU - φθηνό (περίπου 100-150 ρούβλια), πολλές ακίδες, πολλά περιφερειακά. Διατίθεται σε διαφορετικά περιβλήματα. Είναι απλό, το εκπαιδευτικό μου μάθημα και όλα τα περαιτέρω παραδείγματα είναι προσαρμοσμένα σε αυτό.
  • Το ATTiny2313-20SU είναι μια ιδανική επιλογή για την κατασκευή όλων των ειδών ρολογιών/ξυπνητήρι και άλλων μικρών οικιακών αυτοματισμών. Φτηνό (40 ρούβλια), συμπαγές. Το μειονέκτημα είναι ότι δεν υπάρχει ADC.
  • ATmega48/88/168 οποιονδήποτε από αυτούς τους ελεγκτές. Συμπαγές (στην περίπτωση tqfp είναι το πιο λεπτό και μικρότερο από τα AVR), φθηνό (100-150 ρούβλια), γεμιστό μέχρι το χείλος.
  • ATmega128 για τους έμπειρους. Μεγάλη, δυνατή, άφθονη μνήμη. Ακριβό (περίπου 400r)

Ας υποθέσουμε ότι σας ανατίθεται μια εργασία - να κάνετε ένα LED να αναβοσβήνει.
Ας συζητήσουμε πώς να λύσουμε αυτό το πρόβλημα:

Η επιλογή 1 είναι η πιο απλή, πάρτε έναν διακόπτη/κουμπί εναλλαγής, τοποθετήστε έναν σκλάβο δίπλα του, ο οποίος θα ανάψει/σβήσει το LED χρησιμοποιώντας τον διακόπτη εναλλαγής. Συνήθως στη Ρωσία τα περισσότερα προβλήματα λύνονται με αυτόν τον τρόπο. Και τι αναβοσβήνει;)))
Επιλογή 2 - συναρμολογήστε έναν πολυδονητή. Ήδη πιο ενδιαφέρον. Για να αναβοσβήνει, αρκεί ένα LED καλή απόφαση. Επιπλέον, είναι απλό, φθηνό και αξιόπιστο.
Επιλογή 3 - συναρμολόγηση σε μικροελεγκτή. Πιο ακριβό από τη συναρμολόγηση ενός πολυδονητή, αλλά κατά τη γνώμη μου πιο εύκολο. Έγραψα ένα πρόγραμμα, το έτρεξα και πήρα το αποτέλεσμα. Καμία ρύθμιση. Φυσικά αυτή είναι μια ιδανική περίπτωση.

Τώρα ας περιπλέκουμε το έργο. Για παράδειγμα, 5 LED και 5 επιλογές αναβοσβήσεώς τους (αλλάζει η ταχύτητα και η σειρά αναβοσβήσεών τους). Η πρώτη επιλογή εξαφανίζεται αμέσως, η μέθοδος 2 μπορεί να γίνει, αλλά το μέγεθος της συσκευής θα αυξηθεί απότομα. Η επιλογή 3 θα παραμείνει περίπου το ίδιο μέγεθος, απλώς προσθέστε μερικές γραμμές κώδικα. Επομένως, υπάρχουν διαφορετικές περιπτώσεις, όπου είναι αδύνατο χωρίς μικροελεγκτή και όπου είναι περιττό. Επομένως, να υπολογίζετε πάντα το κόστος εργασίας, το χρόνο και το οικονομικό κόστος.

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

Για να καταλάβει ο μικροελεγκτής τι θέλουμε από αυτόν, πρέπει να φορτώσουμε το υλικολογισμικό σε αυτό - μια ακολουθία ενεργειών που πρέπει να εκτελέσει. Το υλικολογισμικό είναι μια ακολουθία μονάδων και μηδενικών. Για να γίνει πιο βολικό, εφευρέθηκαν γλώσσες προγραμματισμού. Για παράδειγμα, γράφουμε turn on και ο ίδιος ο μεταγλωττιστής το μετατρέπει σε μια ακολουθία μονάδων και μηδενικών που είναι κατανοητή από τον μικροελεγκτή. Το σχήμα δείχνει το υλικολογισμικό HEX εάν το ανοίξετε χρησιμοποιώντας το σημειωματάριο.

Οι μικροελεγκτές προγραμματίζονται συνήθως σε C ή γλώσσα assembly. Σε γενικές γραμμές, δεν υπάρχει διαφορά στο τι να γράψετε. Λόγω του μεγάλου αριθμού έτοιμων παραδειγμάτων, έκανα την επιλογή μου υπέρ του C. Επιπλέον, υπάρχουν πολλά προγράμματα που σας επιτρέπουν να γράφετε σε C. Για παράδειγμα, δωρεάν, ιδιόκτητο AVR Studio, CodeVision, WinAVR, κ.λπ. Παρόλο που γράφω στο CodeVision, χρησιμοποιώ πολύ ενεργά το AVR Studio ως πρόγραμμα εντοπισμού σφαλμάτων.

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