Πώς να χρησιμοποιήσετε το Arduino EEPROM για αποθήκευση δεδομένων μεταξύ κύκλων ισχύος

Πώς να χρησιμοποιήσετε το Arduino EEPROM για αποθήκευση δεδομένων μεταξύ κύκλων ισχύος

Γνωρίζατε ότι το Arduino μπορεί να αποθηκεύσει δεδομένα όταν είναι απενεργοποιημένο; Δεν είναι το σκίτσο που είναι αποθηκευμένο στη μνήμη flash. Μιλάω για μεταβλητά δεδομένα στο EEPROM. Ελάτε μαζί μου καθώς σας δείχνω πώς να διαβάζετε και να γράφετε σε αυτό και τι μπορεί να κάνει για τα έργα σας.





Εάν είστε νέοι στο Arduino, φροντίστε να ελέγξετε το δικό μας οδηγός για αρχάριους Το





Τι είναι το EEPROM;

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





Το EEPROM είναι ενσωματωμένο σε μια μυριάδα επεξεργαστών, όπως η συστοιχία πύλης με προγραμματισμό πεδίου (FPGA) που χρησιμοποιείται στο Matrix Creator Pi HAT. Όλα τα Arduinos διαθέτουν EEPROM, αλλά η χωρητικότητα ποικίλλει ανά μοντέλο. Βεβαιωθείτε ότι έχετε ρίξει μια ματιά στον οδηγό αγοράς μας για περισσότερες λεπτομέρειες σε κάθε πίνακα.

Πώς λειτουργεί?

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



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

Προσδόκιμο ζωής

Ενώ είναι εύκολο να χρησιμοποιήσετε το EEPROM στο Arduino, έχει περιορισμένη διάρκεια ζωής. Το EEPROM έχει καθοριστεί να χειρίζεται 100.000 κύκλους ανάγνωσης/διαγραφής. Αυτό σημαίνει ότι μπορείτε να γράψετε και στη συνέχεια να διαγράψετε/ξαναγράψετε δεδομένα 100.000 φορές πριν το EEPROM γίνει ασταθές. Στην πραγματικότητα, Atmel (οι κατασκευαστές του Arduino 'Chip') οι ημιαγωγοί μπορεί να χειρίζονται μεγαλύτερο ή χαμηλότερο αριθμό κύκλων, ανάλογα με τις ανοχές κάθε επεξεργαστή.





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

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





Είναι σημαντικό να σημειωθεί ότι αυτό το όριο ισχύει για κάθε θέση μνήμης. Το Arduino σας μπορεί να έχει 1.000 ή περισσότερες θέσεις μνήμης διαθέσιμες στο EEPROM, οπότε αν γράφετε πάρα πολλές φορές σε μία τοποθεσία, επηρεάζεται μόνο αυτή η θέση και όχι οποιαδήποτε από τις άλλες. Αργότερα θα συζητήσω ισοπέδωση φθοράς , το οποίο μπορεί να μειώσει τη φθορά του EEPROM με την ομοιόμορφη κατανομή των δεδομένων - κάτι που χρησιμοποιούν οι SSD.

Σε τι χρησιμεύει;

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

Το EEPROM είναι το πλέον κατάλληλο για πράγματα όπως ρυθμίσεις ή υψηλές βαθμολογίες. Εάν θέλετε να γράφετε τακτικά περίπλοκα δεδομένα, ίσως σκεφτείτε μια ασπίδα ethernet (με ενσωματωμένη υποδοχή SD) ή ένα Raspberry Pi.

Διάβασε και γράψε

Τώρα που η θεωρία έχει τελειώσει, ας δούμε πώς να διαβάζουμε και να γράφουμε μερικά δεδομένα! Πρώτα, συμπεριλάβετε τη βιβλιοθήκη (συνοδεύεται από το Arduino IDE):

#include

Τώρα γράψτε μερικά δεδομένα:

EEPROM.write(0, 12);

Αυτό γράφει τον αριθμό 12 στην τοποθεσία EEPROM 0 Το Κάθε εγγραφή διαρκεί 3,3 χιλιοστά του δευτερολέπτου ( Κυρία , 1000ms = 1 δευτερόλεπτο). Παρατηρήστε πώς δεν μπορείτε να γράψετε γράμματα ( απανθρακώνω ), επιτρέπονται μόνο οι αριθμοί από το μηδέν έως το 255. Αυτός είναι ο λόγος για τον οποίο το EEPROM είναι ιδανικό για ρυθμίσεις ή υψηλές βαθμολογίες, αλλά όχι τόσο καλό για ονόματα ή λέξεις παικτών. Μπορείτε να αποθηκεύσετε κείμενο χρησιμοποιώντας αυτήν τη μέθοδο (μπορείτε να αντιστοιχίσετε κάθε γράμμα του αλφαβήτου σε έναν αριθμό), ωστόσο θα χρειαστεί να έχετε πολλές θέσεις μνήμης - μία θέση για κάθε γράμμα.

Δείτε πώς διαβάζετε αυτά τα δεδομένα:

Η οθόνη αφής του tablet lg δεν λειτουργεί
EEPROM.read(0);

Μηδενική είναι η διεύθυνση στην οποία γράψατε προηγουμένως. Εάν δεν έχετε γράψει σε μια διεύθυνση πριν, θα επιστρέψει τη μέγιστη τιμή ( 255 ).

Υπάρχουν μερικές πιο χρήσιμες μέθοδοι διαθέσιμες. Πείτε ότι θέλετε να αποθηκεύσετε ένα δεκαδικό ψηφίο ή συμβολοσειρά:

EEPROM.put(2,'12.67');

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

float f = 0.00f;
EEPROM.get(2, f);

Η τιμή από το get αποθηκεύεται στο float φά μεταβλητός. Παρατηρήστε πώς αρχικοποιείται αυτό με 0,00f ως τιμή. ο φά ενημερώνει τον μεταγλωττιστή ότι μπορεί να θέλετε να αποθηκεύσετε έναν μεγάλο αριθμό σε αυτήν τη μεταβλητή, επομένως δημιουργεί μερικές πρόσθετες διαμορφώσεις κατά τη μεταγλώττιση.

ο Τεκμηρίωση EEPROM στο Ιστοσελίδα Arduino έχει πολλά περισσότερα παραδείγματα.

Wear Leveling

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

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

int safeWrite(int data, address) {
if(EEPROM.read(address) != data) {
EEPROM.write(address, data);
}
}

Αυτός είναι ένας πολύ απλός κώδικας, ωστόσο λειτουργεί μόνο για ακέραιους αριθμούς! Αντί να ανακαλύψετε ξανά τον τροχό, χρησιμοποιήστε τη λειτουργία που είναι ενσωματωμένη στη βιβλιοθήκη Arduino EEPROM:

EEPROM.update(address, val);

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

Εάν πρέπει να γράψετε πολλά δεδομένα και ανησυχείτε για τη φθορά του πυριτίου, μπορείτε να παρακολουθείτε πόσες εγγραφές κάνετε, αν και αυτό χρησιμοποιεί περισσότερα δεδομένα. Εδώ είναι μια πρόχειρη εφαρμογή στο ψευδοκώδικας :

var address = 0
var writeCount = 0
if(writeCount > 75,000)
writeCount = 0
address += 1
EEPROM.write(address, data)

Θα χρειαστεί να αποθηκεύσετε τη διεύθυνση και το writeCount στο EEPROM (και το writeCount θα πρέπει να χωριστεί σε τοποθεσίες διευθύνσεων). Τις περισσότερες φορές, αυτό το επίπεδο προστασίας δεν θα είναι απαραίτητο. Τα Arduinos είναι επίσης τόσο φθηνά, οπότε μπορεί να είναι πιο εύκολο να αγοράσετε αντίγραφα ασφαλείας!

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

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ 5 Συμβουλές για την υπερφόρτιση των μηχανών σας VirtualBox Linux

Έχετε κουραστεί από τις κακές επιδόσεις που προσφέρουν οι εικονικές μηχανές; Δείτε τι πρέπει να κάνετε για να αυξήσετε την απόδοση του VirtualBox.

Διαβάστε Επόμενο
Σχετικά θέματα
  • DIY
  • Arduino
  • ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ
Σχετικά με τον Συγγραφέα Τζο Κόμπερν(136 δημοσιευμένα άρθρα)

Ο Joe είναι απόφοιτος της Επιστήμης των Υπολογιστών από το Πανεπιστήμιο του Lincoln, Ηνωμένο Βασίλειο. Είναι επαγγελματίας προγραμματιστής λογισμικού και όταν δεν πετάει με drones ή δεν γράφει μουσική, μπορεί συχνά να βρεθεί να βγάζει φωτογραφίες ή να παράγει βίντεο.

Περισσότερα από τον Joe Coburn

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή
Κατηγορία Diy