Inhaltsverzeichnis:

Das eingebaute EEPROM Ihres Arduino - Gunook
Das eingebaute EEPROM Ihres Arduino - Gunook

Video: Das eingebaute EEPROM Ihres Arduino - Gunook

Video: Das eingebaute EEPROM Ihres Arduino - Gunook
Video: Der einfache Einstieg in Arduino & Co. 24: EEPROM, das Gedächtnis des Arduinos 2024, November
Anonim
Das eingebaute EEPROM Ihres Arduino
Das eingebaute EEPROM Ihres Arduino

In diesem Artikel werden wir das interne EEPROM in unseren Arduino-Boards untersuchen. Was ist ein EEPROM, das einige von Ihnen vielleicht sagen? Ein EEPROM ist ein elektrisch löschbarer programmierbarer Festwertspeicher.

Es ist eine Form von nichtflüchtigem Speicher, der sich an Dinge erinnern kann, wenn der Strom ausgeschaltet ist oder nachdem das Arduino zurückgesetzt wurde. Das Schöne an dieser Art von Speicher ist, dass wir Daten, die in einer Skizze generiert wurden, dauerhafter speichern können.

Warum sollten Sie das interne EEPROM verwenden? Für Situationen, in denen Daten, die für eine bestimmte Situation einzigartig sind, ein dauerhafteres Zuhause benötigen. Zum Beispiel das Speichern der eindeutigen Seriennummer und des Herstellungsdatums eines kommerziellen Arduino-basierten Projekts – eine Funktion der Skizze könnte die Seriennummer auf einem LCD anzeigen oder die Daten könnten durch Hochladen einer „Serviceskizze“gelesen werden. Oder Sie müssen möglicherweise bestimmte Ereignisse zählen und dem Benutzer nicht erlauben, sie zurückzusetzen – wie zum Beispiel ein Kilometerzähler oder ein Betriebszykluszähler.

Schritt 1: Welche Daten können gespeichert werden?

Welche Daten können gespeichert werden?
Welche Daten können gespeichert werden?

Alles, was als Datenbytes dargestellt werden kann. Ein Datenbyte besteht aus acht Datenbits. Ein Bit kann entweder eingeschaltet (Wert 1) oder ausgeschaltet (Wert 0) sein und eignet sich perfekt zur Darstellung von Zahlen in binärer Form. Mit anderen Worten, eine Binärzahl kann nur Nullen und Einsen verwenden, um einen Wert darzustellen. Binär wird daher auch als „Basis-2“bezeichnet, da es nur zwei Ziffern verwenden kann.

Wie kann eine Binärzahl mit nur zwei Ziffern eine größere Zahl darstellen? Es verwendet viele Einsen und Nullen. Betrachten wir eine Binärzahl, sagen wir 10101010. Da dies eine Zahl zur Basis 2 ist, repräsentiert jede Ziffer 2 hoch x, ab x=0.

Schritt 2:

Bild
Bild

Sehen Sie, wie jede Ziffer der Binärzahl eine Zahl zur Basis 10 darstellen kann. Die obige Binärzahl stellt also 85 in Basis 10 dar – der Wert 85 ist die Summe der Basis-10-Werte. Ein weiteres Beispiel – 11111111 in binär entspricht 255 in der Basis 10.

Schritt 3:

Jetzt verwendet jede Ziffer in dieser Binärzahl ein „Bit“des Speichers, und acht Bits ergeben ein Byte. Aufgrund interner Beschränkungen der Mikrocontroller in unseren Arduino-Boards können wir nur 8-Bit-Zahlen (ein Byte) im EEPROM speichern.

Dadurch wird der Dezimalwert der Zahl auf einen Wert zwischen Null und 255 begrenzt. Es liegt dann an Ihnen zu entscheiden, wie Ihre Daten mit diesem Zahlenbereich dargestellt werden können. Lassen Sie sich davon nicht abschrecken – richtig angeordnete Zahlen können fast alles darstellen! Es gibt eine Einschränkung zu beachten – die Anzahl der Lese- oder Schreibvorgänge im EEPROM. Laut Hersteller Atmel reicht das EEPROM für 100.000 Lese-/Schreibzyklen (siehe Datenblatt).

Schritt 4:

Jetzt kennen wir unsere Bits und Bytes, wie viele Bytes können in unserem Arduino-Mikrocontroller gespeichert werden? Die Antwort variiert je nach Modell des Mikrocontrollers. Zum Beispiel:

  • Boards mit einem Atmel ATmega328, wie Arduino Uno, Uno SMD, Nano, Lilypad, etc. – 1024 Byte (1 Kilobyte)
  • Boards mit einem Atmel ATmega1280 oder 2560, wie die Arduino Mega-Serie – 4096 Byte (4 Kilobyte)
  • Boards mit einem Atmel ATmega168, wie das originale Arduino Lilypad, alte Nano, Diecimila etc – 512 Bytes.

Wenn Sie sich nicht sicher sind, schauen Sie im Arduino Hardware Index nach oder fragen Sie Ihren Platinenlieferanten. Wenn Sie mehr EEPROM-Speicher benötigen, als mit Ihrem Mikrocontroller verfügbar ist, ziehen Sie die Verwendung eines externen I2C-EEPROM in Betracht.

An dieser Stelle verstehen wir nun, welche Art von Daten und wie viel im EEPROM unseres Arduino gespeichert werden kann. Jetzt ist es an der Zeit, dies in die Tat umzusetzen. Wie bereits erwähnt, gibt es einen endlichen Platz für unsere Daten. In den folgenden Beispielen verwenden wir ein typisches Arduino-Board mit dem ATmega328 mit 1024 Byte EEPROM-Speicher.

Schritt 5:

Um das EEPROM zu verwenden, ist eine Bibliothek erforderlich, verwenden Sie also die folgende Bibliothek in Ihren Skizzen:

#include "EEPROM.h"

Der Rest ist ganz einfach. Um ein Datenelement zu speichern, verwenden wir die folgende Funktion:

EEPROM.write(a, b);

Der Parameter a ist die Position im EEPROM, um die ganze Zahl (0~255) der Daten b zu speichern. In diesem Beispiel haben wir 1024 Byte Speicherplatz, also liegt der Wert von a zwischen 0 und 1023. Um ein Datenelement abzurufen, verwenden Sie Folgendes:

z = EEPROM.read(a);

Wobei z eine ganze Zahl ist, um die Daten von der EEPROM-Position a zu speichern. Um nun ein Beispiel zu sehen.

Schritt 6:

Bild
Bild

Diese Skizze erstellt Zufallszahlen zwischen 0 und 255, speichert sie im EEPROM, ruft sie dann ab und zeigt sie auf dem seriellen Monitor an. Die Variable EEsize ist die Obergrenze Ihrer EEPROM-Größe, also (zum Beispiel) wäre dies 1024 für einen Arduino Uno oder 4096 für einen Mega.

// Arduino interne EEPROM-Demonstration

#enthalten

int zz; int EEsize = 1024; // Größe in Bytes des EEPROMs Ihres Boards

Void-Setup ()

{ Serial.begin (9600); randomSeed (analogRead (0)); aufrechtzuerhalten. Void Schleife () { Serial.println ("Zufallszahlen schreiben …"); für (int i = 0; i < EEsize; i ++) { zz = zufällig (255); EEPROM.write(i, zz); } Serial.println(); for (int a=0; a < EEsize; a++) { zz = EEPROM.read(a); Serial.print("EEPROM-Position:"); Serial.print (a); Serial.print (" enthält "); Serial.println (zz); Verzögerung (25); } }

Die Ausgabe des seriellen Monitors erscheint, wie in der Abbildung gezeigt.

Da haben Sie es also, eine weitere nützliche Möglichkeit, Daten mit unseren Arduino-Systemen zu speichern. Obwohl es nicht das aufregendste Tutorial ist, ist es sicherlich ein nützliches.

Dieser Beitrag von pmdway.com – alles für Macher und Elektronik-Enthusiasten, weltweit versandkostenfrei.

Empfohlen: