Μιλώντας "όργανο οργάνων" στο ATtiny2313 και κάρτα SD - Ηλεκτρονικά παιχνίδια - Κυκλώματα για αρχάριους. Μικροελεγκτής Attiny2313

10.09.2021

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


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


Ρύζι. 1. Βασικές λεπτομέρειες.

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

Το πρώτο πράγμα μετά την επιλογή ενός εξαρτήματος είναι να εξοικειωθείτε με τη θέση των ακίδων του και τα κύρια χαρακτηριστικά του. Όλες οι απαραίτητες πληροφορίες για το ATtiny2313 περιέχονται σε αυτό. Θυμηθείτε, σχεδόν όλοι οι ακροδέκτες μικροελεγκτή μπορούν να έχουν πολλαπλές λειτουργίες. Αυτές οι λειτουργίες μπορούν να επιλεγούν όταν γράφετε ένα πρόγραμμα για μC. Και θα πρέπει να δώσετε προσοχή σε αυτό ήδη στο στάδιο της σύνταξης. σχηματικό διάγραμμα. Επιπλέον, ήδη στη διαδικασία σύνταξης ενός διαγράμματος είναι βολικό να το χρησιμοποιήσετε σύμβολομέρη με "ζωντανά" pinouts, δηλαδή όταν προσδιορίζετε ένα μέρος σε ένα διάγραμμα, σχεδιάστε τις ακίδες όπως βρίσκονται στην πραγματικότητα. Τότε η τοποθέτηση των εξαρτημάτων τόσο στο διάγραμμα όσο και στον πίνακα θα είναι πιο απλή, σαφής και με λιγότερα λάθη. (Σχεδόν όλοι οι σχηματικοί επεξεργαστές έχουν τη δυνατότητα να σχεδιάσουν το δικό σας σύμβολο μέρους.)

Ας σχεδιάσουμε ένα διάγραμμα:


Ρύζι. 2. Κύκλωμα με μικροελεγκτή ATtiny2313.


Ο συντονιστής χαλαζία Q1 με πυκνωτές C1 και C2 σχηματίζει μια πηγή ρολογιού για τον μικροελεγκτή μC1. Αυτό είναι ένα πολύ ευαίσθητο στον θόρυβο μέρος του κυκλώματος, επομένως οι αγωγοί για αυτό θα πρέπει να επιλέγονται σε ένα ελάχιστο μήκος και τίποτα άλλο δεν πρέπει να συνδέεται με τον αγωγό μεταξύ των C1, C2 και του δέκατου σκέλους μC1 (παχύρευστη γραμμή στο διάγραμμα) . Η αντίσταση R1 και ο πυκνωτής C3 σχηματίζουν ένα κύκλωμα επαναφοράς για τον μικροελεγκτή. Οι αντιστάσεις R2-R5 είναι απαραίτητες για τον περιορισμό του ρεύματος μέσω των LED1 -LED4. Υπάρχει ένας πυκνωτής μπλοκαρίσματος C4 στο κύκλωμα ισχύος. Ως πηγή ενέργειας χρησιμοποιούμε τον σταθεροποιητή που συναρμολογήθηκε στο πρώτο μέρος του άρθρου. (Μια λίστα με όλες τις πιθανές αντικαταστάσεις βρίσκεται στο τέλος αυτής της σελίδας.)


Ρύζι. 3. Κοινή πρίζα βύσματος ISP.

Οι αγωγοί προγραμματισμού πρέπει να συνδέονται με τους αγωγούς προγραμματιστή με το ίδιο όνομα. Είναι βολικό να συνδέσετε αυτούς τους αγωγούς στο ταιριαστό τμήμα του συνδετήρα του υπάρχοντος προγραμματιστή χρησιμοποιώντας ένα τυπικό βύσμα για εγκατάσταση στην πλακέτα IDC-10MS (Εικ. 3). Η ακριβής θέση των ακίδων σε αυτό το βύσμα πρέπει να ελεγχθεί με τον υπάρχοντα προγραμματιστή!



Ρύζι. 4. Πάνω μέρος του ταμπλό.

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


Ρύζι. 5. Κάτω μέρος της σανίδας.

Είναι καλύτερο να πάρετε τους αγωγούς ισχύος κάποιου άλλου χρώματος: για το θετικό καλώδιο μπορείτε να πάρετε κόκκινο, για το αρνητικό καλώδιο - μπλε ή μαύρο. Όταν δρομολογείτε τους αγωγούς σύνδεσης στην πίσω πλευρά της πλακέτας, μην ξεχνάτε τον "κατοπτρισμό"!
Μπορείτε να εγκαταστήσετε τα LED ομοιόμορφα ως εξής: τοποθετήστε μια μικρή λωρίδα χαρτονιού μεταξύ των καλωδίων LED, τοποθετήστε την στις οπές της πλακέτας, κόψτε το υπερβολικό μήκος των καλωδίων στην πίσω πλευρά και κολλήστε τα. Μετά τη συγκόλληση των ποδιών, η λωρίδα από χαρτόνι μπορεί να αφαιρεθεί, Εικ. 6.


Ρύζι. 6. Τοποθέτηση LED.


Πριν το ενεργοποιήσουμε, ας ελέγξουμε για άλλη μια φορά την ορθότητα των συνδέσεων και το πιο σημαντικό, τη σωστή σύνδεση των αγωγών ισχύος με τον μικροελεγκτή!
Εάν, όταν συνδεθεί το ρεύμα, ανάβει η πράσινη λυχνία LED στο κύκλωμα σταθεροποίησης και δεν θερμαίνεται τίποτα, τότε το κύκλωμα συναρμολογείται σωστά.
Τώρα μπορούμε να συγχαρούμε τον εαυτό μας, μόλις λάβαμε μια πραγματική σανίδα ανάπτυξης συναρμολογημένη με τα χέρια μας!
Τοποθετήστε το αμέσως στον μικροελεγκτή το απλούστερο πρόγραμμα LED που αναβοσβήνει: . Μετά τη φόρτωση του υλικολογισμικού στον μικροελεγκτή, τα LED θα αρχίσουν να αναβοσβήνουν εναλλάξ. Ο χρόνος λάμψης και παύσης θα είναι περίπου ίσος με ένα δευτερόλεπτο:

Βίντεο 1. Δοκιμάστε τη λειτουργία υλικολογισμικού.

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


Πιθανές αντικαταστάσεις στο κύκλωμα με τον μικροελεγκτή ATtiny2313 Εικ. 2:

  • Ο αντηχείο χαλαζία Q1 μπορεί να χρησιμοποιηθεί σε συχνότητες από 2 έως 8 Megahertz. Το δοκιμαστικό υλικολογισμικό (LED που αναβοσβήνουν) θα λειτουργεί πιο αργά ή πιο γρήγορα.
  • Οι πυκνωτές C1 και C2 πρέπει να έχουν την ίδια χωρητικότητα από 18 pF έως 27 pF.
  • Η χωρητικότητα των πυκνωτών C3 και C4 μπορεί να είναι από 0,01 μF έως 0,5 μF.
  • Η αντίσταση R1 μπορεί να αντικατασταθεί με άλλη με αντίσταση 10 έως 50 kOhm.
  • Οι αντιστάσεις περιορισμού ρεύματος R2-R5 μπορούν να έχουν αντίσταση από 680 Ohms έως 1 kOhm.
  • Το LED1 -LED4 μπορεί να είναι οποιουδήποτε χρώματος και μεγέθους.
  • Ο κύριος μικροελεγκτής μπορεί να έχει τις ακόλουθες ονομασίες: ATtiny2313V -10PI, ATtiny2313V -10PU, ATtiny2313 -20PI, ATtiny2313 -20PU. Το κύριο πράγμα είναι ότι είναι σε πακέτο DIP ή PDIP.


Προσθήκες:

  • ZIP: Δοκιμή υλικολογισμικού για LED που αναβοσβήνουν.
  • URL: .

Γενναίοι και επιτυχημένοι πειραματισμοί!!!


Προδιαγραφές:

  • Αρχιτεκτονική AVR RISC
  • AVR - αρχιτεκτονική RISC υψηλής ποιότητας και χαμηλής ισχύος
    120 εντολές, οι περισσότερες από τις οποίες εκτελούνται σε έναν κύκλο ρολογιού
    Μητρώοι εργασίας 32 8-bit γενικού σκοπού
    Εντελώς στατική αρχιτεκτονική
  • RAM και μη πτητική μνήμη προγραμμάτων και δεδομένων
    2 KB αυτοπρογραμματιζόμενης μνήμης προγράμματος Flash ικανή να αντέξει 10.000 κύκλους εγγραφής/διαγραφής
    Μνήμη δεδομένων EEPROM 128 Byte, προγραμματιζόμενη από το σύστημα, ικανή να αντέχει 100.000 κύκλους εγγραφής/διαγραφής
    128 Byte ενσωματωμένης μνήμης SRAM (στατική RAM)
    Προγραμματιζόμενη προστασία έναντι ανάγνωσης μνήμης προγράμματος Flash και μνήμης δεδομένων EEPROM
  • Περιφερειακά χαρακτηριστικά
    Ένας χρονοδιακόπτης/μετρητής 8 bit με ξεχωριστό προκλιμακωτή
    Ένας χρονοδιακόπτης/μετρητής 16 bit με ξεχωριστό prescaler, κύκλωμα σύγκρισης, κύκλωμα λήψης και δύο κανάλια PWM
    Ενσωματωμένος αναλογικός συγκριτής
    Προγραμματιζόμενος χρονοδιακόπτης παρακολούθησης με ενσωματωμένο ταλαντωτή
    USI - καθολική σειριακή διεπαφή
    Full duplex UART
  • Ειδικά χαρακτηριστικά μικροελεγκτή
    Ενσωματωμένο πρόγραμμα εντοπισμού σφαλμάτων WIRE
    Προγραμματισμός εντός συστήματος μέσω θύρας SPI
    Εξωτερικές και εσωτερικές πηγές διακοπής
    Λειτουργίες χαμηλής κατανάλωσης Idle, Power-down και Standby
    Βελτιωμένο κύκλωμα επαναφοράς ενεργοποίησης
    Προγραμματιζόμενο κύκλωμα ανίχνευσης απώλειας ισχύος
    Ενσωματωμένη βαθμονομημένη γεννήτρια
  • Θύρες I/O και σχεδιασμός περιβλήματος
    18 προγραμματιζόμενες γραμμές I/O
    Πακέτα PDIP 20 pin, SOIC 20 pin και MLF 32 pin
  • Εύρος τάσης τροφοδοσίας
    από 1,8 έως 5,5 V
  • Συχνότητα λειτουργίας
    0 - 16 MHz
  • Κατανάλωση
    Ενεργή λειτουργία:
    300 µA σε 1 MHz και τάση τροφοδοσίας 1,8 V
    20 µA στα 32 kHz και τάση τροφοδοσίας 1,8 V
    Λειτουργία χαμηλής κατανάλωσης
    0,5 µA σε τάση τροφοδοσίας 1,8 V


Γενική περιγραφή:

Ο ATtiny2313 είναι ένας μικροελεγκτής CMOS 8-bit χαμηλής κατανάλωσης με αρχιτεκτονική AVR RISC. Εκτελώντας οδηγίες σε έναν μόνο κύκλο, το ATtiny2313 επιτυγχάνει απόδοση 1 MIPS σε ταχύτητα ρολογιού 1 MHz, επιτρέποντας στον σχεδιαστή να βελτιστοποιήσει την αναλογία ισχύος προς απόδοση.

Ο πυρήνας AVR ενσωματώνει ένα πλούσιο σύνολο εντολών και 32 μητρώα εργασίας γενικής χρήσης. Και οι 32 καταχωρητές συνδέονται απευθείας με την Αριθμητική Λογική Μονάδα (ALU), επιτρέποντας την πρόσβαση σε δύο ανεξάρτητα μητρώακατά την εκτέλεση μιας εντολής. Ως αποτέλεσμα, αυτή η αρχιτεκτονική επιτρέπει δεκάδες φορές μεγαλύτερη απόδοση από την τυπική αρχιτεκτονική CISC.

Το ATtiny2313 έχει τα ακόλουθα χαρακτηριστικά: 2 KB Flash προγραμματιζόμενη μνήμη προγράμματος, 128 byte μνήμη δεδομένων EEPROM, 128 byte SRAM (στατική RAM), 18 γραμμές I/O γενικής χρήσης, 32 καταχωρητές εργασίας γενικής χρήσης, διεπαφή ενός καλωδίου για την ενσωματωμένη -στο πρόγραμμα εντοπισμού σφαλμάτων, δύο ευέλικτοι χρονοδιακόπτες/μετρητές με κυκλώματα σύγκρισης, εσωτερικά και εξωτερικές πηγέςδιακοπές, σειριακό προγραμματιζόμενο USART, γενική σειριακή διεπαφή με ανιχνευτή κατάσταση εκκίνησης, προγραμματιζόμενος χρονοδιακόπτης παρακολούθησης με ενσωματωμένο ταλαντωτή και τρεις λειτουργίες χαμηλής κατανάλωσης αρχικοποιημένες από λογισμικό. Στην κατάσταση αναμονής, ο πυρήνας σταματά, αλλά η μνήμη RAM, οι χρονοδιακόπτες/μετρητές και το σύστημα διακοπής συνεχίζουν να λειτουργούν. Στη λειτουργία απενεργοποίησης, οι καταχωρητές διατηρούν τις τιμές τους, αλλά η γεννήτρια σταματά, απενεργοποιώντας όλες τις λειτουργίες της συσκευής μέχρι την επόμενη διακοπή ή επαναφορά υλικού. Στην κατάσταση αναμονής, ο κύριος ταλαντωτής λειτουργεί ενώ η υπόλοιπη συσκευή είναι σε αδράνεια. Αυτό επιτρέπει στον μικροεπεξεργαστή να ξεκινά πολύ γρήγορα, ενώ διατηρεί την ισχύ όταν είναι αδράνεια.

Η συσκευή κατασκευάζεται χρησιμοποιώντας τεχνολογία μη πτητικής μνήμης υψηλής πυκνότητας από την Atmel. Ο ενσωματωμένος ISP Flash σάς επιτρέπει να επαναπρογραμματίσετε τη μνήμη του προγράμματος στο σύστημα μέσω σειριακής Διεπαφή SPIή ένας συμβατικός προγραμματιστής μη πτητικής μνήμης. Συνδυάζοντας έναν πυρήνα RISC 8-bit με τη μνήμη Flash που προγραμματίζεται αυτόματα σε ένα μόνο τσιπ, ο ATtiny2313 είναι ένας ισχυρός μικροελεγκτής που παρέχει μεγαλύτερη ευελιξία στον σχεδιαστή του συστήματος μικροεπεξεργαστή.

Το ATtiny2313 υποστηρίζεται από διάφορους λογισμικόκαι ολοκληρωμένα εργαλεία ανάπτυξης, όπως μεταγλωττιστές C, συναρμολογητές μακροεντολών, προγράμματα εντοπισμού σφαλμάτων/προσομοιωτών λογισμικού, εξομοιωτές εντός κυκλώματος και κιτ αξιολόγησης.

Σήμερα προσπαθούμε να εκμεταλλευτούμε περισσότερα απλός μικροελεγκτής ATtiny2313και συνδέστε ένα συμβολικό σε αυτό Οθόνη LCD, που περιέχει δύο γραμμές των 16 χαρακτήρων.

Θα συνδέσουμε την οθόνη με τυπικό τρόποΤρόπος 4 bit.

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

Ας ανοίξουμε το φύλλο δεδομένων του ελεγκτή ATtiny2313και δείτε το pinout του

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

Δεδομένου ότι υπάρχουν 20 πόδια σε σύγκριση με τα 28 σκέλη του ελεγκτή ATMega8, τα οποία εργαζόμασταν και θα συνεχίσουμε να εργαζόμαστε, τότε, κατά συνέπεια, θα υπάρχουν και λιγότερες δυνατότητες.

Καταρχήν όλα όσα είχε το ATmega8 είναι εδώ, το μόνο είναι ότι υπάρχουν λιγότερα port claws. Επειδή όμως το καθήκον μας είναι να προσπαθήσουμε να το συνδέσουμε μέσω του διαύλου SPI με έναν άλλο ελεγκτή, αυτό δεν μας πιέζει πολύ.

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

Ας φτιάξουμε ένα κύκλωμα σαν αυτό (κάντε κλικ στην εικόνα για μεγέθυνση της εικόνας)

Η οθόνη συνδέεται με τις ακίδες της θύρας D. Τα PD1 και PD2 είναι στις εισόδους ελέγχου και οι υπόλοιπες συνδέονται στις ακίδες της μονάδας οθόνης D4-D7.

Ας δημιουργήσουμε ένα έργο με το όνομα TINY2313_LCD, μεταφέρουμε τα πάντα σε αυτό εκτός από την κύρια μονάδα από το έργο για τη σύνδεση της οθόνης στο Atmega8.

Βέβαια κάποια πράγματα θα πρέπει να ξαναγίνουν. Για να γίνει αυτό, πρέπει να μελετήσετε προσεκτικά ποιο πόδι συνδέεται με τι. Ο δίαυλος E της οθόνης είναι συνδεδεμένος στο PD2 και ο δίαυλος RS είναι συνδεδεμένος στο PD1, οπότε ας κάνουμε αλλαγές στο αρχείο lcd.h

#καθορίζωε1PORTD|=0b0000 01 00 // ορίστε τη γραμμή Ε σε 1

#καθορίζωe0PORTD&=0b1111 10 11 // ορίστε τη γραμμή Ε σε 0

#καθορίζωrs1PORTD|=0b00000 01 0 // ορίστε τη γραμμή RS σε 1 (δεδομένα)

#καθορίζωrs0PORTD&=0b11111 10 1 // ορίστε τη γραμμή RS σε 0 (εντολή)

Όπως μπορούμε να δούμε από την επιλογή με έντονη γραφή, δεν είχαμε τόσο δραστικές αλλαγές.

Τώρα εισροές πληροφοριών. Εδώ χρησιμοποιούμε πόδια PD3-PD6, δηλαδή μετατοπίζονται κατά 1 πόντο σε σχέση με τη σύνδεση στο Atmega8, οπότε θα διορθώσουμε και κάτι στο αρχείο lcd.cσε λειτουργία sendhalfbyte

PORTD&=0β 1 0000 111; // διαγράψτε τις πληροφορίες για τις εισόδους DB4-DB7, αφήστε τις υπόλοιπες ήσυχες

Αλλά δεν είναι μόνο αυτό. Προηγουμένως μετατοπίσαμε τα μεταδιδόμενα δεδομένα κατά 4, αλλά τώρα, λόγω των παραπάνω αλλαγών, θα πρέπει να τα αλλάξουμε μόνο κατά 3. Επομένως, στην ίδια συνάρτηση θα διορθώσουμε και την πρώτη γραμμή

ντο<<=3 ;

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

Στην κύρια ενότητα, δεν αγγίζουμε την προετοιμασία της θύρας D, αφήνουμε ολόκληρη την ενότητα να μεταβεί στην κατάσταση εξόδου, όπως στο μάθημα 12.

Ας προσπαθήσουμε να συναρμολογήσουμε το έργο και να δούμε πρώτα το αποτέλεσμα στο Proteus, μιας και έφτιαξα και ένα έργο για αυτό, το οποίο θα υπάρχει επίσης στο συνημμένο αρχείο με το έργο για το Atmel Studio

Όλα λειτουργούν υπέροχα για εμάς! Αυτός είναι ο τρόπος με τον οποίο μπορείτε να επαναλάβετε γρήγορα ένα έργο για έναν ελεγκτή για έναν άλλο.

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

Εδώ είναι όλο το σχέδιο

Όλα είναι στάνταρ εδώ. Αντίσταση έλξης σε RESET κ.λπ.

Τώρα, πριν αναβοσβήνουμε το χειριστήριο στο avrdude, πρέπει να επιλέξουμε τον ελεγκτή και να διαβάσουμε τη μνήμη flash του

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

Μικροελεγκτής AVR 8 bit με 2 KB προγραμματιζόμενης από το σύστημα μνήμης Flash

Προδιαγραφές:

  • Αρχιτεκτονική AVR RISC
  • AVR - αρχιτεκτονική RISC υψηλής ποιότητας και χαμηλής ισχύος
    120 εντολές, οι περισσότερες από τις οποίες εκτελούνται σε έναν κύκλο ρολογιού
    Μητρώοι εργασίας 32 8-bit γενικού σκοπού
    Εντελώς στατική αρχιτεκτονική
  • RAM και μη πτητική μνήμη προγραμμάτων και δεδομένων
    2 KB αυτοπρογραμματιζόμενης μνήμης προγράμματος Flash ικανή να αντέξει 10.000 κύκλους εγγραφής/διαγραφής
    Μνήμη δεδομένων EEPROM 128 Byte, προγραμματιζόμενη από το σύστημα, ικανή να αντέχει 100.000 κύκλους εγγραφής/διαγραφής
    128 Byte ενσωματωμένης μνήμης SRAM (στατική RAM)
    Προγραμματιζόμενη προστασία έναντι ανάγνωσης μνήμης προγράμματος Flash και μνήμης δεδομένων EEPROM
  • Περιφερειακά χαρακτηριστικά
    Ένας χρονοδιακόπτης/μετρητής 8 bit με ξεχωριστό προκλιμακωτή
    Ένας χρονοδιακόπτης/μετρητής 16 bit με ξεχωριστό prescaler, κύκλωμα σύγκρισης, κύκλωμα λήψης και δύο κανάλια PWM
    Ενσωματωμένος αναλογικός συγκριτής
    Προγραμματιζόμενος χρονοδιακόπτης παρακολούθησης με ενσωματωμένο ταλαντωτή
    USI - Universal Serial Interface
    Full duplex UART
  • Ειδικά χαρακτηριστικά μικροελεγκτή
    Ενσωματωμένο πρόγραμμα εντοπισμού σφαλμάτων WIRE
    Προγραμματισμός εντός συστήματος μέσω θύρας SPI
    Εξωτερικές και εσωτερικές πηγές διακοπής
    Λειτουργίες χαμηλής κατανάλωσης Idle, Power-down και Standby
    Βελτιωμένο κύκλωμα επαναφοράς ενεργοποίησης
    Προγραμματιζόμενο κύκλωμα ανίχνευσης απώλειας ισχύος
    Ενσωματωμένη βαθμονομημένη γεννήτρια
  • Θύρες I/O και σχεδιασμός περιβλήματος
    18 προγραμματιζόμενες γραμμές I/O
    Πακέτα PDIP 20 ακίδων, SOIC 20 ακίδων και MLF 32 ακίδων
  • Εύρος τάσης τροφοδοσίας
    από 1,8 έως 5,5 V
  • Συχνότητα λειτουργίας
    0 - 16 MHz
  • Κατανάλωση
    Ενεργή λειτουργία:
    300 µA σε 1 MHz και τάση τροφοδοσίας 1,8 V
    20 µA στα 32 kHz και τάση τροφοδοσίας 1,8 V
    Λειτουργία χαμηλής κατανάλωσης
    0,5 µA σε τάση τροφοδοσίας 1,8 V

Μπλοκ διάγραμμα ATtiny2313:


Γενική περιγραφή:

Ο ATtiny2313 είναι ένας μικροελεγκτής CMOS 8-bit χαμηλής κατανάλωσης με αρχιτεκτονική AVR RISC. Εκτελώντας οδηγίες σε έναν μόνο κύκλο, το ATtiny2313 επιτυγχάνει απόδοση 1 MIPS σε ταχύτητα ρολογιού 1 MHz, επιτρέποντας στον σχεδιαστή να βελτιστοποιήσει την αναλογία ισχύος προς απόδοση.

Ο πυρήνας AVR ενσωματώνει ένα πλούσιο σύνολο εντολών και 32 μητρώα εργασίας γενικής χρήσης. Και οι 32 καταχωρητές συνδέονται απευθείας με την Αριθμητική Λογική Μονάδα (ALU), επιτρέποντας την πρόσβαση σε δύο ανεξάρτητους καταχωρητές ενώ εκτελείται μία μόνο εντολή. Ως αποτέλεσμα, αυτή η αρχιτεκτονική επιτρέπει δεκάδες φορές μεγαλύτερη απόδοση από την τυπική αρχιτεκτονική CISC.

Το ATtiny2313 έχει τα ακόλουθα χαρακτηριστικά: 2 KB Flash προγραμματιζόμενη μνήμη προγράμματος, 128 byte μνήμη δεδομένων EEPROM, 128 byte SRAM (στατική RAM), 18 γραμμές I/O γενικής χρήσης, 32 καταχωρητές εργασίας γενικής χρήσης, διεπαφή ενός καλωδίου για το ενσωματωμένο εντοπιστής σφαλμάτων, δύο ευέλικτοι χρονοδιακόπτες/μετρητές με κυκλώματα σύγκρισης, εσωτερικές και εξωτερικές πηγές διακοπής, προγραμματιζόμενη σειριακή USART, καθολική σειριακή διεπαφή με ανιχνευτή κατάστασης εκκίνησης, προγραμματιζόμενος χρονοδιακόπτης παρακολούθησης με ενσωματωμένο ταλαντωτή και τρεις λειτουργίες χαμηλής κατανάλωσης αρχικοποιημένες από λογισμικό. Στην κατάσταση αναμονής, ο πυρήνας σταματά, αλλά η μνήμη RAM, οι χρονοδιακόπτες/μετρητές και το σύστημα διακοπής συνεχίζουν να λειτουργούν. Στη λειτουργία απενεργοποίησης, οι καταχωρητές διατηρούν τις τιμές τους, αλλά η γεννήτρια σταματά, απενεργοποιώντας όλες τις λειτουργίες της συσκευής μέχρι την επόμενη διακοπή ή επαναφορά υλικού. Στην κατάσταση αναμονής, ο κύριος ταλαντωτής λειτουργεί ενώ η υπόλοιπη συσκευή είναι σε αδράνεια. Αυτό επιτρέπει στον μικροεπεξεργαστή να ξεκινά πολύ γρήγορα, ενώ διατηρεί την ισχύ όταν είναι αδράνεια.

Η συσκευή κατασκευάζεται χρησιμοποιώντας τεχνολογία μη πτητικής μνήμης υψηλής πυκνότητας από την Atmel. Το ενσωματωμένο ISP Flash σάς επιτρέπει να επαναπρογραμματίσετε τη μνήμη του προγράμματος στο σύστημα μέσω μιας σειριακής διεπαφής SPI ή με έναν συμβατικό προγραμματιστή μη πτητικής μνήμης. Συνδυάζοντας έναν πυρήνα RISC 8-bit με τη μνήμη Flash που προγραμματίζεται αυτόματα σε ένα μόνο τσιπ, ο ATtiny2313 είναι ένας ισχυρός μικροελεγκτής που παρέχει μεγαλύτερη ευελιξία στον σχεδιαστή του συστήματος μικροεπεξεργαστή.

Πολλές οικιακές συσκευές και συσκευές βιομηχανικού αυτοματισμού των σχετικά πρόσφατων ετών παραγωγής έχουν εγκατεστημένους μηχανικούς μετρητές. Είναι προϊόντα σε μεταφορική ταινία, στροφές σύρματος σε μηχανές περιελίξεων κ.λπ. Σε περίπτωση βλάβης, η εύρεση παρόμοιου μετρητή δεν είναι εύκολη και είναι αδύνατη η επισκευή λόγω έλλειψης ανταλλακτικών. Ο συγγραφέας προτείνει την αντικατάσταση του μηχανικού μετρητή με έναν ηλεκτρονικό. Ένας ηλεκτρονικός μετρητής, που αναπτύχθηκε για να αντικαταστήσει έναν μηχανικό, αποδεικνύεται πολύ περίπλοκος εάν είναι κατασκευασμένος σε μικροκυκλώματα με χαμηλό και μεσαίο βαθμό ολοκλήρωσης (για παράδειγμα, η σειρά K176, K561). ειδικά εάν απαιτείται αντίστροφος λογαριασμός. Και για να διατηρηθεί το αποτέλεσμα όταν η τροφοδοσία είναι απενεργοποιημένη, είναι απαραίτητο να παρέχετε μια εφεδρική μπαταρία.

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

Ο προτεινόμενος μετρητής χρησιμοποιεί τον μικροελεγκτή Attiny2313 από την οικογένεια AVR από την Almel. Η συσκευή εφαρμόζει αντίστροφη καταμέτρηση, εμφανίζοντας το αποτέλεσμα με ακύρωση ασήμαντων

βάλτε σε μια τετραψήφια ένδειξη LED, αποθηκεύοντας το αποτέλεσμα στο EEPROM όταν η τροφοδοσία είναι απενεργοποιημένη. Ένας αναλογικός συγκριτής ενσωματωμένος στον μικροελεγκτή χρησιμοποιείται για την έγκαιρη ανίχνευση μείωσης της τάσης τροφοδοσίας. Ο μετρητής θυμάται το αποτέλεσμα μέτρησης όταν απενεργοποιείται η τροφοδοσία, το επαναφέρει όταν είναι ενεργοποιημένο και, όπως ένας μηχανικός μετρητής, είναι εξοπλισμένος με ένα κουμπί επαναφοράς.

Το κύκλωμα μετρητή φαίνεται στο σχήμα. Έξι γραμμές της θύρας B (РВ2-РВ7) και πέντε γραμμές της θύρας D (PDO, PD1, PD4-PD6) χρησιμοποιούνται για την οργάνωση της δυναμικής ένδειξης του αποτελέσματος μέτρησης στην ένδειξη LED HL1. Τα συλλεκτικά φορτία των φωτοτρανζίστορ VT1 και VT2 είναι αντιστάσεις ενσωματωμένες στον μικροελεγκτή και ενεργοποιούνται από λογισμικό που συνδέει τις αντίστοιχες ακίδες του μικροελεγκτή στο κύκλωμα τροφοδοσίας του.

Μια αύξηση στο αποτέλεσμα μέτρησης N κατά ένα συμβαίνει τη στιγμή που διακόπτεται η οπτική σύνδεση μεταξύ της διόδου εκπομπής VD1 και του φωτοτρανζίστορ VT1, γεγονός που δημιουργεί μια αυξανόμενη διαφορά στάθμης στην είσοδο INT0 του μικροελεγκτή. Σε αυτήν την περίπτωση, η στάθμη στην είσοδο INT1 πρέπει να είναι χαμηλή, δηλ. το φωτοτρανζίστορ VT2 πρέπει να φωτίζεται από τη δίοδο εκπομπής VD2. Τη στιγμή της αύξησης του διαφορικού στην είσοδο INT1 και ενός χαμηλού επιπέδου στην είσοδο INT0, το αποτέλεσμα θα μειωθεί κατά ένα. Άλλοι συνδυασμοί επιπέδων και οι διαφορές τους στις εισόδους INT0 και INT1 δεν αλλάζουν το αποτέλεσμα μέτρησης.

Μόλις επιτευχθεί η μέγιστη τιμή 9999, η καταμέτρηση συνεχίζεται από το μηδέν. Αφαιρώντας ένα από τη μηδενική τιμή προκύπτει το αποτέλεσμα 9999. Εάν δεν χρειάζεται αντίστροφη μέτρηση, μπορείτε να εξαιρέσετε τη δίοδο εκπομπής VD2 ​​και το φωτοτρανζίστορ VT2 από τον μετρητή και να συνδέσετε την είσοδο INT1 του μικροελεγκτή στο κοινό καλώδιο. Ο αριθμός θα συνεχίσει να αυξάνεται.

Όπως αναφέρθηκε ήδη, ο ανιχνευτής της μείωσης της τάσης τροφοδοσίας είναι ο αναλογικός συγκριτής που είναι ενσωματωμένος στον μικροελεγκτή. Συγκρίνει την μη σταθεροποιημένη τάση στην έξοδο του ανορθωτή (γέφυρα διόδου VD3) με τη σταθεροποιημένη τάση στην έξοδο του ενσωματωμένου σταθεροποιητή DA1. Το πρόγραμμα ελέγχει κυκλικά την κατάσταση του συγκριτή. Μετά την αποσύνδεση του μετρητή από το δίκτυο, η τάση στον πυκνωτή C1 του φίλτρου ανορθωτή πέφτει και η σταθεροποιημένη τάση παραμένει αμετάβλητη για κάποιο χρονικό διάστημα. Οι αντιστάσεις R2-R4 επιλέγονται ως εξής. ότι η κατάσταση του συγκριτή σε αυτή την κατάσταση αντιστρέφεται. Έχοντας εντοπίσει αυτό, το πρόγραμμα καταφέρνει να γράψει το τρέχον αποτέλεσμα μέτρησης στο EEPROM του μικροελεγκτή ακόμη και πριν σταματήσει να λειτουργεί λόγω της απενεργοποίησης του ρεύματος. Την επόμενη φορά που θα το ενεργοποιήσετε, το πρόγραμμα θα διαβάσει τον αριθμό που είναι γραμμένος στο EERROM και θα τον εμφανίσει στην ένδειξη. Η μέτρηση θα συνεχιστεί από αυτήν την τιμή.

Λόγω του περιορισμένου αριθμού ακίδων μικροελεγκτή, για τη σύνδεση του κουμπιού SB1, το οποίο επαναφέρει τον μετρητή, χρησιμοποιήθηκε ο ακροδέκτης 13, ο οποίος χρησιμεύει ως αναστροφική αναλογική είσοδος του συγκριτή (AIM) και ταυτόχρονα ως «ψηφιακή» είσοδος του PB1. Ο διαιρέτης τάσης (αντιστάσεις R4, R5) ορίζει εδώ τη στάθμη που γίνεται αντιληπτή από τον μικροελεγκτή ως υψηλή λογική Όταν πατήσετε το κουμπί SB1, θα γίνει χαμηλή. Αυτό δεν θα επηρεάσει την κατάσταση του συγκριτή, καθώς η τάση στην είσοδο AIN0 εξακολουθεί να είναι μεγαλύτερη από αυτή στο AIN1.

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

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

Όταν η τάση πηγής είναι 15 V, μετρήστε την τάση στις ακίδες 12 και 13 του πίνακα μικροελεγκτή σε σχέση με το κοινό καλώδιο (ακίδα 10). Το πρώτο θα πρέπει να είναι στην περιοχή των 4...4,5 V και το δεύτερο θα πρέπει να είναι περισσότερο από 3,5 V, αλλά λιγότερο από το πρώτο. Στη συνέχεια, η τάση της πηγής μειώνεται σταδιακά. Όταν πέσει στα 9 ... 10 V, η διαφορά στις τιμές τάσης στις ακίδες 12 και 13 πρέπει να μηδενιστεί και στη συνέχεια να αλλάξει πρόσημο.

Τώρα μπορείτε να εγκαταστήσετε τον προγραμματισμένο μικροελεγκτή στον πίνακα, να συνδέσετε τον μετασχηματιστή και να του εφαρμόσετε τάση δικτύου. Μετά από 1,5...2 δευτερόλεπτα πρέπει να πατήσετε το κουμπί SB1. Η ένδειξη μετρητή θα εμφανίσει τον αριθμό 0. Εάν δεν εμφανίζεται τίποτα στην ένδειξη, ελέγξτε ξανά τις τιμές τάσης στις εισόδους AIN0.AIN1 του μικροελεγκτή. Το πρώτο πρέπει να είναι μεγαλύτερο από το δεύτερο.

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