Λειτουργία με εσωτερική μνήμη EEPROM. Arduino EEPROM: μη πτητική μνήμη Επαναφορά μνήμης EEPROM

Στην αυγή της μνήμης που διατηρούσε δεδομένα όταν απενεργοποιήθηκε η τροφοδοσία (EPROM, μι rasable Π rogrammable ROM , erasable/programmable ROM, ή στα ρωσικά - PIZU, προγραμματιζόμενη ROM), ο κύριος τύπος της ήταν η υπεριώδης διαγραφόμενη μνήμη: UV-EPROM ( Υπεριώδες EPROM, UV-PROM). Επιπλέον, το πρόθεμα UV συχνά παραλείπονταν, επειδή ήταν σαφές σε όλους ότι το EPROM μπορεί να διαγραφεί με υπεριώδη ακτινοβολία και ότι το ROM (ή ROM) είναι απλά, χωρίς προσθήκες, προγραμματιζόμενοι κρύσταλλοι OTP-ROM μίας χρήσης. Οι μικροελεγκτές με μνήμη προγραμμάτων UV είναι συνηθισμένοι από τα μέσα της δεκαετίας του 1990. Σε δείγματα εργασίας συσκευών με μνήμη UV, το παράθυρο χαλαζία μέσω του οποίου πραγματοποιήθηκε η διαγραφή σφραγίστηκε με ένα κομμάτι μαύρης κολλητικής ταινίας, καθώς οι πληροφορίες στο UV-EPROM καταστρέφονται αργά στο ηλιακό φως.

Στο Σχ. Το σχήμα 18.7 δείχνει τη δομή της μονάδας κυψέλης EPROM, η οποία βρίσκεται κάτω από όλους τους σύγχρονους τύπους μνήμης flash. Εάν εξαιρέσουμε από αυτό αυτό που υποδεικνύεται από την επιγραφή "floating gate", παίρνουμε το πιο συνηθισμένο τρανζίστορ πεδίου - ακριβώς το ίδιο που περιλαμβάνεται στην κυψέλη DRAM. Εάν εφαρμοστεί θετική τάση στην πύλη ελέγχου ενός τέτοιου τρανζίστορ, θα ανοίξει και το ρεύμα θα ρέει μέσα από αυτό (αυτό θεωρείται μια λογική κατάσταση). Στο Σχ. Το σχήμα 18.7 παραπάνω δείχνει μια περίπτωση όπου η αιωρούμενη πύλη δεν έχει καμία επίδραση στη λειτουργία του κελιού - για παράδειγμα, αυτή η συνθήκη είναι τυπική για κενή μνήμη flash, η οποία δεν έχει γράψει ποτέ τίποτα σε αυτήν.

Ρύζι. 18.7. Δομή μονάδων κυττάρων EPROM

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

Σημειώσεις στα περιθώρια

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

Το μόνο που απομένει είναι να καταλάβετε πώς να τοποθετήσετε τα φορτία σε μια πλωτή πύλη απομονωμένη από όλες τις εξωτερικές επιρροές. Και όχι μόνο να τα τοποθετήσετε - γιατί μερικές φορές η μνήμη πρέπει να σβήσει, οπότε πρέπει να υπάρχει τρόπος να τα ανακτήσετε από εκεί. Στο UV-EPROM, το στρώμα οξειδίου μεταξύ της πλωτής πύλης και του υποστρώματος ήταν αρκετά παχύ (αν τα 50 νανόμετρα μπορούν να περιγραφούν ως «παχιά», φυσικά) και όλα λειτουργούσαν μάλλον ωμά. Κατά την εγγραφή, εφαρμόστηκε μια αρκετά υψηλή θετική τάση στην πύλη ελέγχου - μερικές φορές μέχρι 36–40 V και μια μικρή θετική τάση εφαρμόστηκε στην αποστράγγιση του τρανζίστορ. Σε αυτή την περίπτωση, τα ηλεκτρόνια που μετακινήθηκαν από την πηγή στην αποχέτευση επιταχύνθηκαν τόσο από το πεδίο του ηλεκτροδίου ελέγχου που απλώς πήδηξαν πάνω από το φράγμα με τη μορφή μονωτή μεταξύ του υποστρώματος και της πλωτής πύλης. Αυτή η διαδικασία ονομάζεται επίσης έγχυση θερμών ηλεκτρονίων .

Το ρεύμα φόρτισης έφτασε τα milliamps - μπορείτε να φανταστείτε ποια ήταν η κατανάλωση ολόκληρου του κυκλώματος εάν προγραμματίζονταν ταυτόχρονα τουλάχιστον πολλές χιλιάδες κυψέλες σε αυτό. Και παρόλο που ένα τέτοιο ρεύμα απαιτήθηκε για αρκετά μικρό χρονικό διάστημα (ωστόσο, από την άποψη της ταχύτητας κυκλώματος, δεν είναι τόσο σύντομο - χιλιοστά του δευτερολέπτου), αυτό ήταν το μεγαλύτερο μειονέκτημα όλων των παλαιών δειγμάτων μνήμης EPROM. Το ακόμη χειρότερο είναι ότι τόσο ο μονωτής όσο και το ίδιο το αιωρούμενο κλείστρο δεν άντεξαν τέτοια κατάχρηση για μεγάλο χρονικό διάστημα και σταδιακά υποβαθμίστηκαν, γι' αυτό και ο αριθμός των κύκλων διαγραφής/εγγραφής περιορίστηκε σε αρκετές εκατοντάδες ή το πολύ χιλιάδες. Πολλές μεταγενέστερες μνήμες flash περιελάμβαναν ακόμη και ειδικά κυκλώματα για την αποθήκευση ενός χάρτη κακών κυψελών, όπως ακριβώς και οι σκληροί δίσκοι. Τα σύγχρονα μοντέλα με εκατομμύρια κελιά διαθέτουν επίσης μια τέτοια κάρτα - αλλά ο αριθμός των κύκλων διαγραφής/εγγραφής έχει πλέον αυξηθεί σε εκατοντάδες χιλιάδες. Πώς επιτεύχθηκε αυτό;

Αρχικά, ας δούμε πώς πραγματοποιήθηκε η διαγραφή σε αυτό το σχήμα. Στο UV-EPROM, όταν ακτινοβολήθηκαν με υπεριώδες φως, τα φωτόνια υψηλής ενέργειας προσέδωσαν αρκετή ορμή στα ηλεκτρόνια στην πλωτή πύλη για να «πηδήσουν» πίσω στο υπόστρωμα μόνα τους, χωρίς καμία ηλεκτρική επίδραση. Τα πρώτα δείγματα ηλεκτρικά διαγραφόμενης μνήμης (EEPROM, Electrically Erasable Programmable ROM, ηλεκτρικά διαγραφόμενη προγραμματιζόμενη ROM, EEPROM) δημιουργήθηκαν στην εταιρεία Intelστα τέλη της δεκαετίας του 1970 με την άμεση συμμετοχή του μελλοντικού ιδρυτή AtmelΓιώργος Περλέγκος. Χρησιμοποίησε κβαντική επίδραση της σήραγγας Fowler-Nordheim. Πίσω από αυτό το ακατανόητο όνομα κρύβεται ένα μάλλον απλό στην ουσία (αλλά πολύ περίπλοκο από φυσική άποψη) φαινόμενο - με ένα αρκετά λεπτό μονωτικό φιλμ (το πάχος του έπρεπε να μειωθεί από 50 σε 10 nm), ηλεκτρόνια, εάν ωθηθούν ελαφρά εφαρμόζοντας μια όχι πολύ υψηλή τάση προς τη σωστή κατεύθυνση, μπορεί να διαρρεύσει μέσα από το φράγμα χωρίς να πηδήξει πάνω του. Η ίδια η διαδικασία φαίνεται στο Σχ. 18.8 παραπάνω (προσέξτε το σήμα τάσης στο ηλεκτρόδιο ελέγχου).

Ρύζι. 18.8. Διαδικασία διαγραφής σε μονάδα μονάδας EPROM

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

Μετατροπή του EEPROM σε λάμψησυνέβη σε τρεις διαφορετικές κατευθύνσεις. Πρώτα απ 'όλα, προς την κατεύθυνση της βελτίωσης του σχεδιασμού του ίδιου του κυττάρου. Αρχικά, απαλλαγήκαμε από το πιο αηδιαστικό στάδιο - "καυτή ένεση". Αντίθετα, άρχισαν να χρησιμοποιούν «κβαντική σήραγγα» κατά την εγγραφή, καθώς και κατά τη διαγραφή. Στο Σχ. Το σχήμα 18.8 παρακάτω δείχνει αυτή τη διαδικασία - εάν, με το τρανζίστορ ανοιχτό, εφαρμόζεται στην πύλη ελέγχου μια αρκετά υψηλή (αλλά σημαντικά χαμηλότερη από ό,τι με την "καυτή έγχυση") τάση, τότε μερικά από τα ηλεκτρόνια κινούνται μέσω του ανοιχτού τρανζίστορ από την πηγή στην αποστράγγιση θα «διαρρεύσει» μέσα από τον μονωτήρα και θα καταλήξει σε ένα πλωτό παντζούρι. Η κατανάλωση ρεύματος κατά την εγγραφή έχει μειωθεί κατά αρκετές τάξεις μεγέθους. Ο μονωτήρας, ωστόσο, έπρεπε να γίνει ακόμη πιο λεπτός, γεγονός που προκάλεσε αρκετά μεγάλες δυσκολίες στην εισαγωγή αυτής της τεχνολογίας στην παραγωγή.

Η δεύτερη κατεύθυνση είναι ότι το στοιχείο έγινε κάπως πιο περίπλοκο με την προσάρτηση ενός δεύτερου τρανζίστορ (κανονικό, όχι διπλής πύλης) σε αυτό, το οποίο χώριζε την έξοδο αποστράγγισης και το δίαυλο ανάγνωσης ολόκληρου του μικροκυκλώματος. Χάρη σε όλα αυτά, ήταν δυνατό να επιτευχθεί σημαντική αύξηση της αντοχής - έως και εκατοντάδες χιλιάδες κύκλοι εγγραφής/διαγραφής (εκατομμύρια κύκλοι χαρακτηριστικών καρτών flash αποκτώνται εάν προστεθούν κυκλώματα διόρθωσης σφαλμάτων). Επιπλέον, τα κυκλώματα παραγωγής υψηλής τάσης και οι αντίστοιχες γεννήτριες παλμών εγγραφής/διαγραφής μετακινήθηκαν μέσα στο μικροκύκλωμα, γεγονός που έκανε τη χρήση αυτών των τύπων μνήμης πολύ πιο βολική - άρχισαν να τροφοδοτούνται από μία μόνο τάση (5, 3,3 ή ακόμα και 1,8 V).

Και τέλος, η τρίτη, ίσως η πιο σημαντική, βελτίωση ήταν μια αλλαγή στην οργάνωση της πρόσβασης στα κελιά στο τσιπ, ως αποτέλεσμα της οποίας αυτός ο τύπος μνήμης κέρδισε το όνομα - λάμψη(δηλαδή «κεραυνός»), πλέον γνωστό σε κάθε ιδιοκτήτη ψηφιακής φωτογραφικής μηχανής ή MP3 player τσέπης. Έτσι ονομαζόταν ένας τύπος EEPROM στα μέσα της δεκαετίας του 1980, όπου η διαγραφή και η εγγραφή γίνονταν ταυτόχρονα σε ολόκληρα μπλοκ - σελίδες. Η διαδικασία ανάγνωσης από ένα αυθαίρετο κελί, ωστόσο, έχει επιβραδυνθεί για προφανείς λόγους - για να επιταχυνθεί, είναι απαραίτητο να τοποθετήσετε ένα ενδιάμεσο (buffer) SRAM στους κρυστάλλους της μνήμης flash. Για μονάδες flash, αυτό δεν έχει μεγάλη σημασία, καθώς τα δεδομένα εξακολουθούν να διαβάζονται και να γράφονται σε μεγάλες συστοιχίες ταυτόχρονα, αλλά για χρήση σε μικροελεγκτές αυτό μπορεί να είναι άβολο. Επιπλέον, στο MK δεν είναι βολικό να χρησιμοποιείτε την ταχύτερη έκδοση της τεχνολογίας flash - τη λεγόμενη μνήμη τύπου NAND (από το όνομα της λογικής συνάρτησης "AND-NOT"), όπου καταρχήν είναι δυνατή η ανάγνωση και εγγραφή μνήμης μόνο σε μπλοκ των 512 byte (αυτό είναι το συνηθισμένο μέγεθος ενός τομέα ανά σκληρό δίσκο, ο οποίος μπορεί επίσης να διαβαστεί και να γραφτεί εξ ολοκλήρου ταυτόχρονα - εδώ μπορείτε να κατανοήσετε τον κύριο σκοπό του NAND).

Τα MK χρησιμοποιούν συνήθως παραδοσιακή μνήμη προγράμματος flash (τύπου NOR), στην οποία οι σελίδες είναι σχετικά μικρές σε μέγεθος - περίπου 64-256 byte. Ωστόσο, εάν ο ίδιος ο χρήστης δεν αναλάβει να δημιουργήσει έναν προγραμματιστή για ένα τέτοιο μικροκύκλωμα, μπορεί να μην έχει καν επίγνωση της σελιδοποιημένης φύσης της μνήμης. Και για τα δεδομένα χρήστη, το EEPROM χρησιμοποιείται είτε με τη δυνατότητα ανάγνωσης ενός αυθαίρετου byte, είτε χωρισμένο, αλλά σε πολύ μικρά μπλοκ - για παράδειγμα, 4 byte. Ταυτόχρονα, η πρόσβαση για τον χρήστη παραμένει byte-by-byte. Ένα χαρακτηριστικό γνώρισμα μιας τέτοιας μνήμης είναι μια αρκετά αργή (της τάξης των χιλιοστών του δευτερολέπτου) διαδικασία εγγραφής, ενώ η ανάγνωση δεν είναι πιο αργή από οποιαδήποτε άλλη λειτουργία στον μικροελεγκτή.

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

Μικροελεγκτές Atmel AVR

Ο συνολικός αριθμός των υφιστάμενων οικογενειών μικροελεγκτών υπολογίζεται σε περισσότερες από 100, ενώ κάθε χρόνο εμφανίζονται όλο και περισσότεροι. Κάθε μία από αυτές τις οικογένειες μπορεί να περιλαμβάνει δεκάδες διαφορετικά μοντέλα. Επιπλέον, η μερίδα του λέοντος των παραγόμενων τσιπ πέφτει σε εξειδικευμένους ελεγκτές - για παράδειγμα, για τον έλεγχο μιας διεπαφής USB ή οθονών LCD. Μερικές φορές είναι αρκετά δύσκολο να ταξινομηθεί ένα προϊόν - για παράδειγμα, πολλοί εκπρόσωποι της οικογένειας ARM, που χρησιμοποιείται ευρέως για την κατασκευή κινητών συσκευών, από την άποψη της ανεπτυγμένης ενσωματωμένης λειτουργικότητας, ανήκουν σε τυπικούς ελεγκτές, αλλά ταυτόχρονα χρόνο, ένας αρκετά ισχυρός πυρήνας τους επιτρέπει να ταξινομηθούν ως μικροεπεξεργαστές.

Από τις οικογένειες των καθολικών μικροελεγκτών 8-bit, ας πούμε έτσι, "για όλες τις περιπτώσεις", τρεις είναι οι πιο συνηθισμένοι: ελεγκτές της κλασικής αρχιτεκτονικής x51 (ο πρώτος ελεγκτής της οικογένειας 8051 κυκλοφόρησε από Intelπίσω στα μέσα της δεκαετίας του 1980), ελεγκτές PIC από Μικροτσίπ(ιδανικό για το σχεδιασμό απλών συσκευών, ειδικά εκείνων που προορίζονται για αναπαραγωγή) και αυτών που εξετάζουμε Atmel AVR .

Σημειώσεις στα περιθώρια

Το 1995, δύο φοιτητές στο Νορβηγικό Πανεπιστήμιο Επιστήμης και Τεχνολογίας στο Τρόντχαϊμ, οι Alf Bogen και Vegard Wollen, σκέφτηκαν την ιδέα ενός πυρήνα RISC 8-bit, τον οποίο πρότειναν στη διοίκηση της Atmel. Τα ονόματα των προγραμματιστών περιλαμβάνονται στο όνομα της αρχιτεκτονικής AVR: Alf + Vegard + RISC. Η ιδέα άρεσε τόσο στον Atmel που το 1996 ιδρύθηκε ένα ερευνητικό κέντρο στο Τρόντχαϊμ και στο τέλος εκείνης της χρονιάς ξεκίνησε η παραγωγή του πρώτου πειραματικού μικροελεγκτή της νέας σειράς AVR με το όνομα AT90S1200. Το δεύτερο εξάμηνο του 1997, η Atmel ξεκίνησε τη μαζική παραγωγή της οικογένειας AVR.

Γιατί AVR;

Οι ελεγκτές AVR "από τη γέννηση" έχουν πολλά χαρακτηριστικά που διακρίνουν αυτήν την οικογένεια από άλλα MK και απλοποιούν την εκμάθηση και τη χρήση της. Ένα από τα σημαντικά πλεονεκτήματα του AVR ήταν η χρήση ενός μεταφορέα. Ως αποτέλεσμα, για το AVR δεν υπάρχει η έννοια του κύκλου μηχανής: οι περισσότερες εντολές, όπως είπαμε, εκτελούνται σε έναν κύκλο ρολογιού (για σύγκριση, σημειώνουμε ότι η πολύ δημοφιλής οικογένεια PIC των MK εκτελεί μια εντολή σε 4 κύκλους ρολογιού) . Είναι αλήθεια ότι σε αυτή την περίπτωση έπρεπε να θυσιάσουμε λίγο την απλότητα του συστήματος εντολών, υπάρχουν κάποιες δυσκολίες στον τομέα των λειτουργιών με bits. Ωστόσο, αυτό δεν οδηγεί σε αισθητές δυσκολίες κατά την εκμάθηση του AVR assembler - αντίθετα, τα προγράμματα είναι πιο σύντομα και θυμίζουν περισσότερο πρόγραμμα σε γλώσσα υψηλού επιπέδου (σημειώστε ότι τα AVR σχεδιάστηκαν ειδικά για να είναι όσο το δυνατόν πιο κοντά στο δομή της γλώσσας ΜΕ).

Ένα άλλο τεράστιο πλεονέκτημα της αρχιτεκτονικής AVR είναι η παρουσία 32 λειτουργικών καταχωρητών, οι οποίοι δεν είναι ίσοι από όλες τις απόψεις, αλλά επιτρέπουν στις απλούστερες περιπτώσεις χωρίς πρόσβαση στη μνήμη RAM και, το πιο σημαντικό, χωρίς χρήση της στοίβας - η κύρια πηγή σφαλμάτων για αρχάριοι προγραμματιστές (εξάλλου, στα junior μοντέλα AVR, η στοίβα δεν είναι καν προσβάσιμη στον προγραμματιστή). Για το AVR δεν υπάρχει η έννοια της «μπαταρίας», η οποία είναι κλειδί για πολλές άλλες οικογένειες. Αυτό φέρνει τη δομή των προγραμμάτων συναρμολόγησης για AVR ακόμη πιο κοντά σε προγράμματα σε γλώσσα υψηλού επιπέδου, όπου οι χειριστές δεν εργάζονται με κελιά μνήμης και καταχωρητές, αλλά με αφηρημένες μεταβλητές και σταθερές.

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

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

Κλασικό, Mega και Μικροσκοπικός

Η σειρά των γενικών ελεγκτών AVR γενικής χρήσης χωρίζεται σε οικογένειες: Κλασικό, MegaΚαι Μικροσκοπικός(υπάρχει και νεότερη οικογένεια Xmega, που περιέχει πολύ «εκλεπτυσμένους» κρυστάλλους). οικογένεια ΜΚ Κλασσικός(ονομάζονταν AT908<марка контроллера>) δεν παράγονται πλέον, αλλά εξακολουθούν να είναι κοινά στη βιβλιογραφία, αφού ένας σημαντικός αριθμός προγραμμάτων έχει αναπτυχθεί για αυτούς. Για να μην χρειάζεται οι χρήστες να ξαναγράψουν όλο το λογισμικό, η εταιρεία Atmelφρόντισε για τη συνέχεια - το μεγαλύτερο μέρος της οικογένειας MK Κλασσικόςέχει λειτουργικά ανάλογα στην οικογένεια Mega, για παράδειγμα, AT90S8515 - ATmega8515, AT90S8535 - ATmega8535 κ.λπ. (μόνο το AT90S2313 έχει ανάλογο στην οικογένεια Μικροσκοπικός– ATtiny2313).

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

Η οικογένεια Tiny (που κυριολεκτικά σημαίνει «μικροσκοπικός») προορίζεται για τις πιο απλές συσκευές. Ορισμένα MK αυτής της οικογένειας δεν έχουν τη δυνατότητα προγραμματισμού μέσω σειριακής διεπαφής, και επομένως εμείς, με εξαίρεση το ATtiny2313, δεν θα τα εξετάσουμε σε αυτό το βιβλίο (αυτό δεν σημαίνει ότι το υπόλοιπο Tiny πρέπει να αποφεύγεται - μεταξύ υπάρχουν πολύ βολικά και λειτουργικά μικροκυκλώματα, που συχνά δεν έχουν καθόλου ανάλογα). Ο μικροελεγκτής ATtiny2313, που αποτελεί εξαίρεση, δεν έχει bit συμβατότητας με τον "κλασικό" αναλογικό AT90S2313, έναν από τους απλούστερους και πιο βολικούς ελεγκτές Atmel, αλλά μετά από πιο προσεκτική εξέταση αποδεικνύεται ότι ακόμη και χωρίς τέτοιο κομμάτι είναι συμβατά "από κάτω προς τα πάνω" - τα προγράμματα για το "κλασικό" 2313 είναι σχεδόν απολύτως κατάλληλα για το Tiny2313 (βλ. κεφάλαιο 19).

Δομή MK AVR

Η γενική δομή της εσωτερικής δομής του AVR MK φαίνεται στο Σχ. 18.9. Όλα τα κύρια στοιχεία του AVR εμφανίζονται εδώ (με εξαίρεση ορισμένα εξειδικευμένα) - σε ορισμένα μοντέλα ορισμένα στοιχεία ενδέχεται να λείπουν ή να διαφέρουν ως προς τα χαρακτηριστικά, μόνο ο κοινός πυρήνας επεξεργαστή 8 bit (GPU, Γενική Μονάδα Επεξεργασίας). Ας δούμε εν συντομία τα πιο σημαντικά στοιχεία, τα περισσότερα από τα οποία θα γνωρίσουμε λεπτομερέστερα αργότερα.

Ρύζι. 18.9. Γενικό μπλοκ διάγραμμα μικροελεγκτών AVR

Ας ξεκινήσουμε με τη μνήμη. Η δομή AVR έχει τρεις τύπους μνήμης: μνήμη προγράμματος flash, RAM (SRAM) για προσωρινή αποθήκευση δεδομένων και μη πτητική μνήμη (EEPROM) για μακροπρόθεσμη αποθήκευση σταθερών και δεδομένων. Ας τα δούμε ξεχωριστά.

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

Η ενσωματωμένη μνήμη flash των προγραμμάτων στους ελεγκτές AVR κυμαίνεται από 1 KB για το ATtiny11 έως 256 KB για το ATmega2560. Ο πρώτος αριθμός στο όνομα του μοντέλου περιέχει το μέγεθος αυτής της μνήμης σε kilobyte από τη σειρά: 1, 2, 4, 8, 16, 32, 64, 128 και 256 KB. Έτσι, το ATtiny2313 έχει μνήμη 2 KB και το ATmega8535 - 8 KB.

Από τη σκοπιά ενός προγραμματιστή, η μνήμη προγράμματος μπορεί να θεωρηθεί ότι δημιουργείται από μεμονωμένα κελιά - λέξεις δύο byte το καθένα. Η διάταξη της μνήμης προγράμματος (και μόνο αυτής της μνήμης!) σε λέξεις δύο byte είναι ένα πολύ σημαντικό σημείο που πρέπει να κατανοήσει σταθερά ένας προγραμματιστής συναρμολόγησης. Αυτή η οργάνωση οφείλεται στο γεγονός ότι οποιαδήποτε εντολή στο AVR έχει μήκος ακριβώς 2 byte. Εξαίρεση αποτελούν οι ομάδες jmp, τηλεφώνησεκαι κάποια άλλα (για παράδειγμα, lds), οι οποίες λειτουργούν με διευθύνσεις μήκους 16 bit ή μεγαλύτερες. Αυτές οι οδηγίες έχουν μήκος 4 byte και χρησιμοποιούνται μόνο σε μοντέλα με μνήμη προγράμματος μεγαλύτερη από 8 KB, επομένως δεν θα τις βλέπετε σε αυτήν την ενότητα του βιβλίου. Arduinoβασίζεται σε ελεγκτές AVR με μεγάλη ποσότητα μνήμης, αλλά εκεί δεν χρειάζεται να γνωρίζουμε αυτές τις λεπτές αποχρώσεις. Σε όλες τις άλλες περιπτώσεις, ο μετρητής προγράμματος μετατοπίζεται κατά την εκτέλεση της επόμενης εντολής κατά 2 byte (μία λέξη), επομένως η απαιτούμενη χωρητικότητα μνήμης είναι εύκολο να υπολογιστεί, γνωρίζοντας απλώς τον αριθμό των εντολών που χρησιμοποιούνται.

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

Μνήμη δεδομένων ( RAM, SRAM)

Σε αντίθεση με τη μνήμη προγράμματος, ο χώρος διευθύνσεων της μνήμης δεδομένων διευθύνεται byte-by-byte (και όχι λέξη-λέξη). Η διευθυνσιοδότηση είναι εντελώς γραμμική, χωρίς καμία διαίρεση σε σελίδες, τμήματα ή τράπεζες, όπως συνηθίζεται σε ορισμένα άλλα συστήματα.

Εξαιρουμένων ορισμένων νεότερων μοντέλων Tiny, η ποσότητα της ενσωματωμένης SRAM κυμαίνεται από 128 byte (για παράδειγμα, ATtiny2313) έως 4–8 KB για παλαιότερα μοντέλα Mega. Ο χώρος διευθύνσεων της στατικής μνήμης δεδομένων (SRAM) χωρίζεται συμβατικά σε διάφορες περιοχές, όπως φαίνεται στην Εικ. 18.10. Μόνο το σκοτεινό τμήμα ανήκει στην πραγματική ενσωματωμένη SRAM πριν από αυτό, κατά σειρά διευθύνσεων, υπάρχει ένας χώρος διευθύνσεων καταχωρητών, όπου τα πρώτα 32 byte καταλαμβάνονται από μια σειρά από καταχωρητές γενικής χρήσης (GPR), άλλα 64 byte. καταχωρητές εισόδου/εξόδου (καταχωρητές εισόδου/εξόδου).

Ρύζι. 18.10. Χώρος διευθύνσεων της στατικής μνήμης δεδομένων ( SRAM) μικροελεγκτές AVR

Για ορισμένα μοντέλα Mega(ATmega8515, ATmega162, ATmega128, ATmega2560 κ.λπ.) είναι δυνατή η σύνδεση εξωτερικής μνήμης έως 64 KB. Σημειώστε ότι οι χώροι διευθύνσεων RON και RVV δεν καταλαμβάνουν χώρο από τη μνήμη RAM δεδομένων - επομένως, εάν ένα συγκεκριμένο μοντέλο MCU έχει 512 byte SRAM και ο χώρος καταχωρήσεων καταλαμβάνει τα πρώτα 96 byte (μέχρι τη διεύθυνση $5f), η SRAM οι διευθύνσεις θα καταλαμβάνουν το χώρο διευθύνσεων από 0060 $ έως 025 $ F (δηλαδή από τα κελιά 96 έως 607 συμπεριλαμβανομένων). Το τέλος της ενσωματωμένης μνήμης δεδομένων υποδεικνύεται με μια σταθερά RAMEND. Πρέπει να σημειωθεί ότι οι τελευταίες διευθύνσεις SRAM, τουλάχιστον τέσσερα έως έξι κελιά από το τέλος (ανάλογα με τον αριθμό των κλήσεων ένθετων διαδικασιών - για αξιοπιστία, είναι καλύτερο να ληφθεί αυτός ο αριθμός ίσος με δέκα ή ακόμη περισσότερο) δεν θα πρέπει να καταλαμβάνονται από δεδομένα, καθώς χρησιμοποιούν υπορουτίνες και οι διακοπές καταλαμβάνονται κάτω από τη στοίβα.

Οι λειτουργίες ανάγνωσης/εγγραφής μνήμης λειτουργούν το ίδιο με οποιεσδήποτε διευθύνσεις από τον διαθέσιμο χώρο, και επομένως όταν εργάζεστε με SRAM πρέπει να είστε προσεκτικοί - αντί να γράφετε στη μνήμη, μπορείτε εύκολα να "μπαίνετε" σε κάποιο μητρώο. Για να αποκτήσετε πρόσβαση στο RON ως κελιά μνήμης, μπορείτε να αντικαταστήσετε τον αριθμό μητρώου ως διεύθυνση, αλλά όταν έχετε πρόσβαση στο RVV με τον ίδιο τρόπο, πρέπει να προσθέσετε 20 $ στον αριθμό του τελευταίου. Θα πρέπει επίσης να θυμόμαστε ότι από προεπιλογή, όταν είναι ενεργοποιημένη η τροφοδοσία, όλα τα RVV είναι μηδενικά σε όλα τα bit (υπάρχουν ακόμη μεμονωμένες εξαιρέσεις, επομένως σε κρίσιμες περιπτώσεις πρέπει να κοιτάξετε την τεκμηρίωση), αλλά τα κελιά RON και SRAM μπορεί να πάρει αυθαίρετες τιμές.

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

Όλα τα μοντέλα AVR MK (εκτός από το ATtiny11 που διακόπηκε) διαθέτουν ενσωματωμένο EEPROM για αποθήκευση σταθερών και δεδομένων όταν η τροφοδοσία είναι απενεργοποιημένη. Σε διαφορετικά μοντέλα, ο όγκος του κυμαίνεται από 64 byte (ATtinylx) έως 4 KB (παλαιότερα μοντέλα Mega). Ο αριθμός των κύκλων επαναπρογραμματισμού EEPROM μπορεί να φτάσει τις 100 χιλιάδες.

Ας υπενθυμίσουμε ότι το EEPROM διαφέρει από τη μνήμη flash στη δυνατότητα επιλεκτικού προγραμματισμού byte byte (στην πραγματικότητα, ακόμη και με bit, αλλά αυτή η δυνατότητα είναι κρυμμένη από τον χρήστη). Η ανάγνωση από το EEPROM πραγματοποιείται με την ίδια ταχύτητα με την ανάγνωση από το RON - εντός ενός κύκλου μηχανής (αν και στην πράξη εκτείνεται σε 4 κύκλους, αλλά ο προγραμματιστής δεν χρειάζεται να το παρακολουθεί συγκεκριμένα). Αλλά η εγγραφή στο EEPROM είναι πολύ πιο αργή και, επιπλέον, με απροσδιόριστη ταχύτητα - ένας κύκλος εγγραφής ενός byte μπορεί να διαρκέσει από 2 έως 4 ή περισσότερα χιλιοστά του δευτερολέπτου. Η διαδικασία εγγραφής ρυθμίζεται από έναν ενσωματωμένο ταλαντωτή RC, η συχνότητα του οποίου είναι ασταθής (σε χαμηλή τάση τροφοδοσίας μπορείτε να περιμένετε μεγαλύτερους χρόνους εγγραφής). Κατά τη διάρκεια αυτής της περιόδου, σε κανονικές συχνότητες ρολογιού, ο μικροελεγκτής καταφέρνει να εκτελέσει πολλές χιλιάδες εντολές, επομένως ο προγραμματισμός της διαδικασίας εγγραφής απαιτεί προσοχή - για παράδειγμα, πρέπει να βεβαιωθείτε ότι μια διακοπή δεν "εμπλακεί" τη στιγμή της εγγραφής (περισσότερα για αυτό αργότερα).

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

Αυτό το πρόβλημα δεν θα πρέπει να υπάρχει εάν γράφονται σταθερές στο EEPROM κατά τον προγραμματισμό του MK και δεν υπάρχει διαδικασία εγγραφής στο πρόγραμμα. Σε όλες τις άλλες περιπτώσεις (και προφανώς υπάρχει η απόλυτη πλειοψηφία - το EEPROM χρησιμοποιείται συχνότερα για την αποθήκευση των ρυθμίσεων χρήστη και της τρέχουσας διαμόρφωσης όταν η τροφοδοσία είναι απενεργοποιημένη) πρέπει να ληφθούν ειδικά μέτρα. Ενσωματωμένος ανιχνευτής πτώσης τάσης ( Ανίχνευση καφέ εξόδου, BOD), διατίθεται σχεδόν σε όλα τα μοντέλα ΜικροσκοπικόςΚαι Mega, συνήθως δεν αντιμετωπίζει αυτό. Το πιο δραστικό από αυτά τα μέτρα είναι η εγκατάσταση μιας εξωτερικής οθόνης ισχύος, η οποία διατηρεί το MCU όταν η τάση τροφοδοσίας πέσει κάτω από ένα όριο στην κατάσταση επαναφοράς (για λεπτομέρειες, βλ.).

Μη πτητικό
  • EEPROM
  • Πρώτες εξελίξεις
  • Υποσχόμενος
    • CBRAM
    • SONOS
    • Μνήμη τρεξίματος (ιππόδρομος)
  • Από την ιστορία
    • Μνήμη μαγνητικού καλωδίου
    • Μνήμη φούσκας
    • Μνήμη Twistor
  • Η αλλαγή φόρτισης ("εγγραφή" και "διαγραφή") πραγματοποιείται εφαρμόζοντας ένα υψηλό δυναμικό μεταξύ της πύλης και της πηγής, έτσι ώστε η ένταση ηλεκτρικού πεδίου στο λεπτό διηλεκτρικό μεταξύ του καναλιού του τρανζίστορ και της τσέπης να είναι επαρκής για να προκαλέσει ένα φαινόμενο σήραγγας . Για να ενισχυθεί η επίδραση της διοχέτευσης ηλεκτρονίων στην τσέπη κατά την εγγραφή, εφαρμόζεται μια ελαφρά επιτάχυνση των ηλεκτρονίων περνώντας ρεύμα μέσω του καναλιού ενός τρανζίστορ φαινομένου πεδίου (φαινόμενο έγχυσης θερμού φορέα (Αγγλικά)Ρωσική ).

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

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

    Αυτό το σχέδιο είναι εξοπλισμένο με στοιχεία που του επιτρέπουν να λειτουργεί σε μια μεγάλη σειρά από τα ίδια κελιά. Η σύνδεση πραγματοποιείται με τη μορφή μιας δισδιάστατης μήτρας, στην οποία υπάρχει ένα κελί στη διασταύρωση στηλών και σειρών. Δεδομένου ότι η κυψέλη EEPROM έχει μια τρίτη πύλη, εκτός από το υπόστρωμα, είναι κατάλληλοι 3 αγωγοί για κάθε στοιχείο (ένας αγωγός στήλης και αγωγοί 2 σειρών).

    Κατάλογος κατασκευαστών EEPROM

    • Mikron Sitronics
    • Τεχνολογία Aplus Flash
    • Maxwell Technologies
    • Τεχνολογία Renesas
    • ROHM Electronics
    • SmarfTech
    • Όργανα Seiko
    • Winbond
    • Catalyst Semiconductor Inc

    Σημειώσεις


    Ίδρυμα Wikimedia. 2010.

    Δείτε τι είναι το "EEPROM" σε άλλα λεξικά:

      EEPROM- (επίσης γράφεται E2PROM και προφέρεται e e prom ή απλά e τετράγωνο), που σημαίνει Electrically Erasable Programmable Read Only Memory, είναι ένας τύπος μη πτητικής μνήμης που χρησιμοποιείται σε υπολογιστές και άλλες ηλεκτρονικές συσκευές για την αποθήκευση μικρών ποσοτήτων… … Wikipedia

      EEPROM- das, spezielle Ausführung eines EPROM. Wie bei diesem Speicherchip lässt sich auch der Inhalt eines EEPROM im… … Universal-Lexikon

      EEPROM- son las siglas de ηλεκτρικά διαγραφόμενη προγραμματιζόμενη μνήμη μόνο για ανάγνωση (ROM προγραμματιζόμενη y borrable eléctricamente). Es un tipo de memoria ROM que puede ser programado, borrado y reprogramado eléctricamente, a diferencia de la EPROM que ha de… … Εγκυκλοπαίδεια Universal

      EEPROM- ● EEPROM nom θηλυκό αμετάβλητο (συντομογραφία της ηλεκτρικά διαγραφόμενης προγραμματιζόμενης μνήμης μόνο για ανάγνωση) Τύπος αναμνήσεων électroniques mortes επαναπρογραμματιζόμενοι, effaçables électriquement … Encyclopédie Universelle

      EEPROM- der; , s Kurzw. aus αγγλ. ηλεκτρικά διαγραφόμενη προγραμματιζόμενη μνήμη μόνο για ανάγνωση »elektrisch löschbarer (u. wieder) programmierbarer Nurlesespeicher« Festwertspeicher, der mit einem elektrischen Signal gelöscht werden kann (EDV) … Das große Fremdwörterbuch

      EEPROM- (Electrically Erasable Programmable Read Only Memo) τύπος μνήμης μόνο για ανάγνωση που μπορεί να διαγραφεί χρησιμοποιώντας ηλεκτρονικές μεθόδους… Αγγλικό σύγχρονο λεξικό

      EEPROM- (υπολογιστική) συντομογραφία Ηλεκτρονικά διαγραφόμενη προγραμματιζόμενη μνήμη μόνο για ανάγνωση * * * [ˌē ē präm; ēˌpräm; dəbəl ē präm] ν. Υπολογισμός μνήμης μόνο για ανάγνωση της οποίας τα περιεχόμενα μπορούν να διαγραφούν και να επαναπρογραμματιστούν χρησιμοποιώντας παλμική τάση Προέλευση: ακρωνύμιο από… … Χρήσιμο αγγλικό λεξικό

      EEPROM- Ein Flash EEPROM (σύνδεσμοι) και ein EPROM (rechts). EEPROM (Electrically Erasable Programmable Read Only Memory, wörtlich: elektrisch löschbarer, programmierbarer Nur Lese Speicher, auch E2PROM genannt) είναι ein nichtflüchtiger, elektronischer… … Deutsch Wikipedia

      EEPROM- Ηλεκτρικά διαγραφόμενη προγραμματιζόμενη μνήμη μόνο για ανάγνωση Τύποι μνήμης RAM και ROM Πτητικές DRAM eDRAM SRAM 1T SRAM à venir: Z RAM Non Volatiles ROM PROM EPROM EEPROM à venir … Wikipédia en Français

      EEPROM- Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas specializadas, monografías, prensa diaria o páginas de Internet fidedignas. Puedes añadirlas así o avisar … Wikipedia Español

    Όλοι οι μικροελεγκτές της οικογένειας Mega περιλαμβάνουν μη πτητική μνήμη ( EEPROMμνήμη). Ο όγκος αυτής της μνήμης κυμαίνεται από 512 byte σε μοντέλα ATmega8x έως 4 KB σε παλαιότερα μοντέλα. EEPROMΗ μνήμη βρίσκεται στον δικό της χώρο διευθύνσεων και, όπως η RAM, είναι οργανωμένη γραμμικά. Για να δουλέψω με EEPROMΗ μνήμη χρησιμοποιεί τρεις καταχωρητές εισόδου/εξόδου: έναν καταχωρητή διευθύνσεων, έναν καταχωρητή δεδομένων και έναν καταχωρητή ελέγχου.

    Μητρώο διεύθυνσης

    Μητρώο διεύθυνσης EEPROMμνήμη EEAR (Μητρώο διευθύνσεων EEPROM)βρίσκεται φυσικά σε δύο RVV EEARH:EARL, που βρίσκεται κατά μήκος
    διευθύνει $1F ($3F) και $1E ($3E), αντίστοιχα. Αυτός ο καταχωρητής φορτώνεται με τη διεύθυνση του κελιού στο οποίο θα έχετε πρόσβαση. Το μητρώο διευθύνσεων είναι εγγράψιμο και αναγνώσιμο. Ταυτόχρονα στο μητρώο EEARHχρησιμοποιούνται μόνο τα λιγότερο σημαντικά bit (ο αριθμός των μπιτ που εμπλέκονται εξαρτάται από τον όγκο EEPROMμνήμη). Αχρησιμοποίητα bit καταχωρητή EEARHείναι μόνο για ανάγνωση και περιέχουν "0".

    Μητρώο δεδομένων

    Μητρώο δεδομένων EEPROMμνήμη EEDR (Μητρώο δεδομένων EEPROM)βρίσκεται στο $1D ($3D). Κατά την εγγραφή σε αυτό το μητρώο, φορτώνονται δεδομένα που πρέπει να τοποθετηθούν EEPROM, και κατά την ανάγνωση, τα δεδομένα διαβάζονται από EEPROM.

    Μητρώο ελέγχου

    Μητρώο ελέγχου EEPROMμνήμη EECR (Μητρώο Ελέγχου EEPROM)βρίσκεται σε $1C ($3C). Αυτό το μητρώο χρησιμοποιείται για
    έλεγχος πρόσβασης EEPROMμνήμη. Η περιγραφή του φαίνεται στον παρακάτω πίνακα:

    Απαλλάσσω Ονομα Περιγραφή
    7..4 - δεν χρησιμοποιείται, διαβάζεται ως "0"
    3 ΜΥΣΤΗΡΙΩΔΗΣ Ενεργοποίηση διακοπής από την EEPROM. Αυτό το bit ελέγχει τη δημιουργία μιας διακοπής που συμβαίνει όταν ολοκληρωθεί ο κύκλος εγγραφής EEPROM. Εάν αυτό το bit έχει οριστεί σε "1", οι διακοπές ενεργοποιούνται (εάν η σημαία I του καταχωρητή
    Το SREG έχει επίσης οριστεί σε "1"). Όταν διαγραφεί το bit EEWE (δείτε παρακάτω
    πίνακας) η διακοπή δημιουργείται συνεχώς
    2 EEMWE Έλεγχος άδειας εγγραφής στο EEPROM. Η κατάσταση αυτού του bit καθορίζει τη λειτουργία της σημαίας ενεργοποίησης εγγραφής EEWE. Εάν αυτό το bit έχει οριστεί σε "1", τότε κατά την εγγραφή στο bit EEWE "1", τα δεδομένα εγγράφονται στο EEPROM. Διαφορετικά, η ρύθμιση του EEWE σε "1" δεν έχει αποτέλεσμα. Μετά την εγκατάσταση του λογισμικού, το bit EEMWE επαναφέρεται από το υλικό μέσω
    4 κύκλοι μηχανής
    1 ΕΕΕΕ Να επιτρέπεται η εγγραφή στην EEPROM. Όταν αυτό το bit έχει οριστεί σε "1", τα δεδομένα γράφονται σε EEPROM (αν το EEMWE είναι ίσο με "1")
    0 EERE Άδεια ανάγνωσης από την EEPROM. Αφού ρυθμίσετε αυτό το bit σε "1", τα δεδομένα διαβάζονται από το EEPROM. Μετά την ολοκλήρωση της ανάγνωσης, αυτό το bit επαναφέρεται από το υλικό

    Για να γράψετε ένα byte στο EEPROM χρειάζεστε:

    1. Περιμένετε έως ότου η EEPROM είναι έτοιμη για εγγραφή δεδομένων (περιμένετε μέχρι να μηδενιστεί η σημαία EEWE του μητρώου EECR).

    2. Περιμένετε να ολοκληρωθεί η εγγραφή στη μνήμη προγράμματος FLASH (περιμένετε μέχρι να μηδενιστεί η σημαία SPMEN του καταχωρητή SPMCR).

    3. Φορτώστε το byte δεδομένων στον καταχωρητή EEDR και την απαιτούμενη διεύθυνση στον καταχωρητή EEAR (εάν είναι απαραίτητο).

    4. Ρυθμίστε τη σημαία EEMWE του καταχωρητή EECR σε "1".

    5. Γράψτε το αρχείο καταγραφής στο bit EEWE του καταχωρητή EECR. "1" για 4 κύκλους μηχανής. Μετά την εγκατάσταση αυτού του bit, ο επεξεργαστής
    παρακάμπτει 2 κύκλους μηχανής πριν εκτελέσει την επόμενη εντολή.

    Για να διαβάσετε ένα byte από το EEPROM χρειάζεστε:

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

    2. Φορτώστε την απαιτούμενη διεύθυνση στο μητρώο EEAR.

    3. Ρυθμίστε το bit EERE του καταχωρητή EECR σε "1".

    Όταν τα ζητούμενα δεδομένα τοποθετηθούν στον καταχωρητή δεδομένων EEDR, θα πραγματοποιηθεί επαναφορά υλικού αυτού του bit. Ωστόσο, δεν είναι απαραίτητο να παρακολουθείτε την κατάσταση του bit EERE για να προσδιορίσετε πότε ολοκληρώνεται μια λειτουργία ανάγνωσης, καθώς μια λειτουργία ανάγνωσης από το EEPROM ολοκληρώνεται πάντα σε έναν κύκλο μηχανής. Επιπλέον, αφού ρυθμίσει το bit EERE στο "1", ο επεξεργαστής παρακάμπτει 4 κύκλους μηχανής πριν ξεκινήσει την επόμενη εντολή.

    Το περιβάλλον AVR Studio GCC διαθέτει μια τυπική βιβλιοθήκη για εργασία με EEPROM, η οποία ενεργοποιείται συνδέοντας το αρχείο . Οι κύριες λειτουργίες είναι eeprom_read_byte(), eeprom_write_byte(), eeprom_read_word(), eeprom_write_word().Για παράδειγμα, ας γράψουμε ένα πρόγραμμα για έναν μίνι μετρητή από το 0 έως το 9, όπου όταν πατάτε ένα κουμπί, θα προστίθεται μια τιμή και ένα άλλο κουμπί θα αποθηκεύει αυτήν την τιμή στη μνήμη. Ο μικροελεγκτής Atmega8 λειτουργεί από μια εσωτερική γεννήτρια ρολογιού με συχνότητα 8 MHz. Ένας μονοψήφιος δείκτης επτά τμημάτων με κοινή άνοδο συνδέεται στη θύρα Β μέσω αντιστάσεων περιορισμού ρεύματος R1-R7, η κοινή άνοδος συνδέεται στο τροφοδοτικό plus. Το διάγραμμα φαίνεται παρακάτω:

    Αρχικά, συνδέουμε τις βιβλιοθήκες που είναι απαραίτητες για τη λειτουργία, συμπεριλαμβανομένης της EEPROM. Ορίστε μεταβλητές. Η μεταβλητή "s" αποθηκεύει την τιμή για εμφάνιση στην ένδειξη όταν πατάτε το κουμπί SB1, αυτή η τιμή αυξάνεται κατά ένα, αλλά όχι περισσότερο από 10. Η μεταβλητή eeprom_var θα αλληλεπιδράσει με το EEPROM. Όταν είναι ενεργοποιημένη η τροφοδοσία, διαβάζεται το EEPROM, τα δεδομένα ανάγνωσης εκχωρούνται στη μεταβλητή "s", με βάση αυτό, εμφανίζεται ένας συγκεκριμένος αριθμός στην ένδειξη. Όταν πατάτε το SB2, τα δεδομένα από τη μεταβλητή «s» εγγράφονται στο EEPROM και η ένδειξη αναβοσβήνει μία φορά.

    #περιλαμβάνω #περιλαμβάνω #περιλαμβάνω #define d0 ~(0x3F) // 0 #define d1 ~(0x06) // 1 #define d2 ~(0x5B) // 2 #define d3 ~(0x4F) // 3 #define d4 ~(0x66) // 4 #define d5 ~(0x6D) // 5 #define d6 ~(0x7D) // 6 #define d7 ~(0x07) // 7 #define d8 ~(0x7F) // 8 #define d9 ~(0x6F) // 9 ανυπόγραφο char s; ανυπόγραφο char eeprom_var EEMEM; // ορίστε μια μεταβλητή στο EEPROM int main (void) ( DDRB = 0xFF; // Θύρα B στην έξοδο PORTB = 0xFF; DDRD = 0x00; // Θύρα D στην είσοδο PORTD = 0xFF; // Ενεργοποίηση αντιστάσεων έλξης s = eeprom_read_byte(&eeprom_var // διαβάστε το byte από το EEPROM και βάλτε το στο "s" while(1) (if((PIND&(1);<< PD0)) == 0) // если кнопка SB1 нажата { while((PIND&(1 << PD0)) == 0){} // ждем отпускания кнопки s++; // увеличиваем "s" на единицу _delay_ms(200); } if(s == 10) // Когда дойдет до 10 обнуляем "s" { s = 0; } if((PIND&(1 << PD1)) == 0) // если кнопка SB2 нажата { while((PIND&(1 << PD1)) == 0){} // ждем отпускания кнопки DDRB = 0xFF; // мигаем индикатором _delay_ms(200); DDRB = 0x00; _delay_ms(200); DDRB = 0xFF; eeprom_write_byte(&eeprom_var, s); // записываем "s" в EEPROM _delay_ms(200); } if(s==0) // Выводим цифры на индикатор PORTB = d0; if(s==1) PORTB = d1; if(s==2) PORTB = d2; if(s==3) PORTB = d3; if(s==4) PORTB = d4; if(s==5) PORTB = d5; if(s==6) PORTB = d6; if(s==7) PORTB = d7; if(s==8) PORTB = d8; if(s==9) PORTB = d9; } }

    Σχόλια

    0 AntonChip 05/02/2013 22:15

    Παραθέτω τον Μαξ:

    Ίσως μπερδεύω κάτι, αλλά αν έχετε ένδειξη με ΟΑ, τότε αρκεί μια αντίσταση στη γραμμή 5V Γιατί να εγκαταστήσετε αντιστάσεις περιορισμού ρεύματος μετά το στοιχείο που υποτίθεται ότι προστατεύουν από το υψηλό ρεύμα;


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

    0 AntonChip 15/05/2013 11:16

    Παραθέτω το gydok:

    Πώς να γράψετε έναν δισδιάστατο πίνακα στο eeprom;


    Κώδικας:
    #περιλαμβάνω // Συμπεριλάβετε τη βιβλιοθήκη

    EEMEM ανυπόγραφα χρώματα χαρακτήρων=((1, 2, 3), // Δηλώστε έναν πίνακα στο EEPROM
    {4, 5, 6}};

    eeprom_write_byte(&colors, 1); // Εγγραφή στοιχείων πίνακα στο EEPROM
    eeprom_write_byte(&colors, 2);
    eeprom_write_byte(&colors, 3);
    eeprom_write_byte(&colors, 4);
    eeprom_write_byte(&colors, 5);
    eeprom_write_byte(&colors, 6);

    ανυπόγραφο char temp?
    temp = eeprom_read_byte(&colors); // Εξαγωγή στοιχείου πίνακα από το EEPROM, 2nd row(), 1st column(), δηλ. αριθμός 4

    Η EEPROM είναι μη πτητική ηλεκτρικά διαγραφόμενη μνήμη. Ο αριθμός των κύκλων εγγραφής-διαγραφής σε αυτά τα μικροκυκλώματα φτάνει τις 1.000.000 φορές. Τα κελιά εμπλοκής σε αυτά, καθώς και στις μνήμες μόνο για ανάγνωση EPROM, υλοποιούνται με βάση τρανζίστορ αιωρούμενης πύλης. Η εσωτερική δομή αυτού του κελιού μνήμης φαίνεται στο Σχήμα 1:


    Εικόνα 1. Κυψέλη μνήμης ROM (EEPROM) που διαγράφεται ηλεκτρικά

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

    Ένα παρόμοιο στοιχείο μνήμης χρησιμοποιήθηκε σε υπεριώδη διαγραφόμενη ROM (EPROM). Σε μια κυψέλη μνήμης με ηλεκτρική διαγραφή, είναι δυνατή όχι μόνο η εγγραφή, αλλά και η διαγραφή πληροφοριών. Οι πληροφορίες διαγράφονται εφαρμόζοντας αντίθετη τάση από την τάση εγγραφής στην πύλη προγραμματισμού. Σε αντίθεση με το UV erase ROM, ο χρόνος διαγραφής της μνήμης EEPROM είναι περίπου 10 ms.

    Το μπλοκ διάγραμμα της μη πτητικής μνήμης με ηλεκτρική διαγραφή δεν διαφέρει από το μπλοκ διάγραμμα μιας ROM μάσκας. Η μόνη διαφορά είναι ότι αντί για ένα εύτηκτο βραχυκυκλωτήρα, χρησιμοποιείται το κελί που περιγράφεται παραπάνω. Το απλοποιημένο μπλοκ διάγραμμα του φαίνεται στο Σχήμα 2.



    Εικόνα 2. Απλοποιημένο μπλοκ διάγραμμα EEPROM

    Ως παράδειγμα τσιπ μνήμης EEPROM, μπορούμε να ονομάσουμε εγχώρια τσιπ 573РР3, 558РР3 και ξένα μικροκυκλώματα της σειράς AT28с010, AT28с040 από την Atmel, HN58V1001 από την Hitachi Semiconductor, X28C010 από την Intersil Corporation. Η μνήμη EEPROM αποθηκεύει συχνότερα δεδομένα χρήστη σε κυψελοειδείς συσκευές που δεν πρέπει να διαγράφονται όταν η τροφοδοσία είναι απενεργοποιημένη (για παράδειγμα, βιβλία διευθύνσεων), πληροφορίες διαμόρφωσης δρομολογητών ή κινητών συσκευών, λιγότερο συχνά αυτά τα τσιπ χρησιμοποιούνται ως μνήμη διαμόρφωσης FPGA ή δεδομένα DSP αποθήκευση. Τα EEPROM απεικονίζονται σε διαγράμματα κυκλώματος όπως φαίνεται στο Σχήμα 3.


    Εικόνα 3. Γραφική ονομασία μιας ηλεκτρικά διαγραφόμενης συσκευής μνήμης μόνο για ανάγνωση

    Η ανάγνωση πληροφοριών από παράλληλη μνήμη EEPROM είναι παρόμοια με την ανάγνωση από μάσκα ROM. Αρχικά, η διεύθυνση της κυψέλης μνήμης που διαβάζεται ορίζεται στο δίαυλο διευθύνσεων σε δυαδικό κώδικα A0...A9, και στη συνέχεια εφαρμόζεται το σήμα ανάγνωσης RD. Το σήμα επιλογής τσιπ CS χρησιμοποιείται συνήθως ως πρόσθετο καλώδιο διεύθυνσης για πρόσβαση στο τσιπ. Τα διαγράμματα χρονισμού των σημάτων στις εισόδους και εξόδους αυτού του τύπου ROM φαίνονται στο Σχήμα 4.



    Εικόνα 4. Διαγράμματα χρονισμού σημάτων για ανάγνωση πληροφοριών από τη μνήμη EEPROM

    Το σχήμα 5 δείχνει ένα σχέδιο ενός τυπικού περιβλήματος για ένα παράλληλο τσιπ μνήμης EEPROM.


    Εικόνα 5. Σχέδιο του παράλληλου περιβλήματος μικροκυκλώματος EEPROM

    Συνήθως, τα δεδομένα που αποθηκεύονται στο EEPROM απαιτούνται αρκετά σπάνια. Ο χρόνος ανάγνωσης δεν είναι κρίσιμος σε αυτή την περίπτωση. Επομένως, σε ορισμένες περιπτώσεις, η διεύθυνση και τα δεδομένα μεταφέρονται στο τσιπ και πίσω μέσω της σειριακής θύρας. Αυτό σας επιτρέπει να μειώσετε το μέγεθος των μικροκυκλωμάτων μειώνοντας τον αριθμό των εξωτερικών ακίδων. Σε αυτήν την περίπτωση, χρησιμοποιούνται δύο τύποι σειριακών θυρών - θύρα SPI και θύρα I2C (μικροκυκλώματα σειράς 25cXX και 24cXX, αντίστοιχα). Η ξένη σειρά 24cXX αντιστοιχεί στην εγχώρια σειρά μικροκυκλωμάτων 558PPX.

    Το εσωτερικό κύκλωμα των μικροκυκλωμάτων της σειράς 24cXX (για παράδειγμα AT24C01) φαίνεται στο Σχήμα 6.



    Εικόνα 6. Εσωτερικό κύκλωμα του τσιπ AT24C01

    Τέτοια τσιπ χρησιμοποιούνται ευρέως για την αποθήκευση ρυθμίσεων τηλεόρασης, όπως μνήμη plug and play σε υπολογιστές και φορητούς υπολογιστές, μνήμη διαμόρφωσης FPGA και επεξεργαστές σήματος (DSP). Η χρήση της σειριακής μνήμης EEPROM έχει μειώσει σημαντικά το κόστος αυτών των συσκευών και έχει αυξήσει την ευκολία χρήσης. Ένα παράδειγμα της θέσης αυτού του τσιπ στην πλακέτα τυπωμένου κυκλώματος μιας κάρτας μνήμης υπολογιστή φαίνεται στο Σχήμα 7.



    Εικόνα 7. EEPROM στην πλακέτα τυπωμένου κυκλώματος μιας κάρτας μνήμης υπολογιστή

    Το σχήμα 8 δείχνει ένα διάγραμμα μιας ηλεκτρονικής κάρτας που χρησιμοποιεί ένα εξωτερικό τσιπ EEPROM.


    Εικόνα 8. Κύκλωμα ηλεκτρονικής κάρτας με χρήση εξωτερικού EEPROM

    Σε αυτό το διάγραμμα, ο μικροελεγκτής PIC16F84 ανταλλάσσει δεδομένα με τη μνήμη EEPROM 24LC16B. Συσκευές όπως η κάρτα SIM δεν χρησιμοποιούν πλέον τσιπ εξωτερικής μνήμης. Οι κάρτες SIM των συσκευών κινητής τηλεφωνίας χρησιμοποιούν την εσωτερική μνήμη EEPROM ενός μικροελεγκτή ενός τσιπ. Αυτό σας επιτρέπει να μειώσετε την τιμή αυτής της συσκευής όσο το δυνατόν περισσότερο.

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

    1. EEPROM - ηλεκτρικά διαγραφόμενη προγραμματιζόμενη μνήμη μόνο για ανάγνωση
    2. FLASH ROM

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


    Εικόνα 9. Γραφική ονομασία μνήμης FLASH

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



    Εικόνα 10. Διαγράμματα χρονισμού σημάτων για ανάγνωση πληροφοριών από ROM

    Στο Σχήμα 10, τα βέλη δείχνουν την ακολουθία με την οποία πρέπει να παράγονται σήματα ελέγχου. Σε αυτό το σχήμα, το RD είναι το σήμα ανάγνωσης, το A είναι τα σήματα επιλογής διεύθυνσης κυψέλης (καθώς τα μεμονωμένα bit στο δίαυλο διευθύνσεων μπορούν να λάβουν διαφορετικές τιμές, εμφανίζονται οι διαδρομές μετάβασης τόσο στη μία όσο και στη μηδενική κατάσταση), D είναι η πληροφορία εξόδου που διαβάζεται από επιλεγμένο κελί ROM.

    Βιβλιογραφία:

    Μαζί με το άρθρο "Συσκευές μνήμης μόνο για ανάγνωση (ROM)" διαβάστε:

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

    Η ανάγνωση και η εγγραφή στη μνήμη EEPROM εκτελούνται σε κανονική λειτουργία και δεν απαιτεί διακοπή του MK. Μια λειτουργία με 1 byte μνήμης μπορεί να εκτελεστεί σε 1 κύκλο μηχανής. Η λειτουργία εγγραφής πραγματοποιείται σύμφωνα με την αρχή «διαγραφή-εγγραφή». Ακόμη και όταν το κελί είναι άδειο, το MK προετοιμάζεται πρώτα «γράφοντας/σβήνοντας» μια τιμή τύπου 0 και στη συνέχεια καταγράφει πληροφορίες, ο χρόνος των οποίων ελέγχεται από έναν εσωτερικό χρονοδιακόπτη και εξαρτάται από την τάση και την παροχή ρεύματος. Η πρόσβαση στη μνήμη προγράμματος, καθώς και όλες οι διακοπές, απενεργοποιούνται κατά τη διάρκεια μιας λειτουργίας εγγραφής. Όλες οι διακοπές που προκύπτουν βρίσκονται στην ουρά και μετά την ολοκλήρωση της λειτουργίας, εμφανίζεται μια μετάβαση κατά μήκος του αντίστοιχου διανύσματος. Αυτή η σειρά ενεργειών οφείλεται στην επεξεργασία δεδομένων διοχέτευσης. Υπάρχουν έξι καταχωρητές ειδικού σκοπού για πρόσβαση στις λειτουργίες μνήμης EEPROM:

    · ΕΕΔΑΤΑ;

    · ΕΕΔΑΘ;

    · EEADR;

    · EEADRH;

    · EECON1;

    · EECON2;

    Εξετάστε εν συντομία τον σκοπό καθενός από αυτούς.

    Μητρώο ΕΕΑΔΡ

    Ο καταχωρητής EEADR χρησιμοποιείται για την αποθήκευση της θέσης της μνήμης δεδομένων. Οι ζευγοποιημένοι καταχωρητές EEADRH:EEADR διατηρούν δεδομένα 14-bit για εγγραφή ή εμφανίζουν μια τιμή από τη μνήμη προγράμματος κατά την ανάγνωση. Επίσης, για τη μνήμη δεδομένων EEPROM, πρέπει να φορτωθεί η φυσική διεύθυνση μνήμης προγράμματος που έχει υλοποιηθεί, επειδή δεν υποστηρίζεται η κυκλική διευθυνσιοδότηση, δηλαδή η διεύθυνση 0x4000h εμφανίζεται ως 0x0000h.

    Μητρώο ΕΕΔΑΤΑ

    Τα δεδομένα αποθηκεύονται/διαβάζονται από το μητρώο ΕΕΔΑΤΑ.

    Καταχωρεί EECON1, EECON2

    Αναφέρεται σε μητρώα ελέγχου. Ο καταχωρητής EECON1 περιέχει bit για τον έλεγχο της λειτουργίας έμμεσης εγγραφής/ανάγνωσης της μνήμης δεδομένων EEPROM και της μνήμης προγράμματος FLASH. Ο καταχωρητής EECON2 δεν εφαρμόζεται φυσικά, χρησιμοποιείται μόνο κατά τη διάρκεια εργασιών εγγραφής για την αποφυγή τυχαίας εγγραφής. Στο Σχ. 6.1. παρέχει πληροφορίες σχετικά με τα bit ελέγχου του καταχωρητή EECON1.



    Εικ.6.1 – Μητρώο ελέγχου EECON1

    Κομμάτι: Εννοια:
    Επιλέγει τη μνήμη στην οποία θα προσπελαστεί: EEPGD = 0 – πρόσβαση στη μνήμη EEPROM. EEPGD = 1 - πρόσβαση στη μνήμη FLASH.
    Δεν έχει εφαρμοστεί, διαβάστε ως 0.
    Δεν έχει εφαρμοστεί, διαβάστε ως 0.
    WRERR – σημαία σφάλματος εγγραφής. 0 – κατάσταση – ολοκληρώθηκε η λειτουργία. 1 – κατάσταση – διακόπτεται η λειτουργία. Ίσως η αιτία ήταν το σήμα επαναφοράς.
    WREN – χρησιμοποιείται για την ενεργοποίηση/απενεργοποίηση της εγγραφής. 0 – η λειτουργία εγγραφής απαγορεύεται. 1 – Επιτρέπεται η λειτουργία εγγραφής. Επαναφορά στο 0 από το υλικό μετά την ολοκλήρωση της λειτουργίας εγγραφής.
    WR – αρχικοποίηση της καταγραφής δεδομένων. Είναι δυνατό να ορίσετε 1 μέσω προγραμματισμού, το οποίο θα χρησιμεύσει ως ένδειξη έναρξης της προετοιμασίας. 0 – η εγγραφή ολοκληρώθηκε. 1 – ξεκινήστε τη διαδικασία αρχικοποίησης της εγγραφής. Επαναφέρεται αυτόματα μετά την ολοκλήρωση της προετοιμασίας.
    RD - εκκινεί μια λειτουργία ανάγνωσης από την καθορισμένη μνήμη. 1 – αρχικοποιήστε την ανάγνωση. Επαναφέρεται αυτόματα με την ολοκλήρωση της λειτουργίας. Κατά την ανάγνωση από τη μνήμη EEPROM, τα δεδομένα θα είναι διαθέσιμα στον καταχωρητή EEDATA στον επόμενο κύκλο μηχανής μετά τη ρύθμιση του bit. Κατά την ανάγνωση της μνήμης προγράμματος FLASH, τα δεδομένα θα είναι διαθέσιμα στον 2ο κύκλο μηχανής. 0 – η ανάγνωση ολοκληρώθηκε.

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

    Χρήση μνήμης EEPROM

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

    Πάνω