Inhaltsverzeichnis:

Hinzufügen eines 24LC256 EEPROM zum Arduino Due - Gunook
Hinzufügen eines 24LC256 EEPROM zum Arduino Due - Gunook

Video: Hinzufügen eines 24LC256 EEPROM zum Arduino Due - Gunook

Video: Hinzufügen eines 24LC256 EEPROM zum Arduino Due - Gunook
Video: Der einfache Einstieg in Arduino & Co. 28 - Die String-Klasse 2024, Juli
Anonim
Hinzufügen eines 24LC256 EEPROM zum Arduino Due
Hinzufügen eines 24LC256 EEPROM zum Arduino Due

Dem Arduino fehlt ein Eeprom. Dieses anweisbare fügt einen hinzu und ermöglicht es Ihnen, Werte in einem nicht flüchtigen Speicher zu speichern, der ein Arduino-Firmware-Update übersteht.

Schritt 1: Breadboarding

Brotbacken
Brotbacken

Es gibt einige wirklich gute Anweisungen hier: https://www.hobbytronics.co.uk/arduino-external-eepromIch habe sie gerade befolgt. Das Foto zeigt die Steckplatine. Pin 1 bis 4 und Pin 7 sind geerdet. Pin 8 ist mit der 3,3-V-Versorgung auf dem Due Board verbunden. Die gelben (Pin 6) und weißen (Pin 5) Drähte sind mit den i2c SDA (Daten) und SCL (Takt) Pins auf dem Due Board verbunden (nummeriert 21 und 20.)).

Schritt 2: Codezeit

Code-Zeit
Code-Zeit

Hier sind einige Codeschnipsel, die ich in meinen Skizzen verwende. Fügen Sie zunächst die Header der Wire-Bibliothek irgendwo oben in Ihre Skizze ein: /* Verwenden Sie 24LC256 EEPROM, um Einstellungen zu speichern */ #include Fügen Sie dann einige Funktionen hinzu, um Bytes aus dem EEPROM zu lesen und zu schreiben (ich kümmere mich nur um einzelne Bytes, aber es gibt ein auch Seitenschreibfunktion im Chip). Beachten Sie, dass es eine Makrodefinition von 0x50 gibt. Dies ist die Adresse des Chips auf dem i2c-Bus (Sie können mehr als ein i2c-Dinge an einen i2c-Bus anschließen und auswählen, mit welchem Sie sprechen möchten, indem Sie die Adresse ändern). /* Diese beiden Funktionen helfen uns beim Schreiben auf den 24LC256 EEPROM-Chip */ #define EEPROM_ADDR 0x50 void EEPROM_write(unsigned int addr, byte data) { int rdata = data; Wire.beginTransmission(EEPROM_ADDR); Wire.write((int)(addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB-Wire.write (rdata); Wire.endTransmission(); //Serial.print("EEPROM schreiben: addr:"); //Seriell.print (addr); //Seriendruck (" "); //Seriell.println (Daten); Verzögerung(5); } byte EEPROM_read (unsigned int addr) { byte data = 0xFF; Wire.beginTransmission(EEPROM_ADDR); Wire.write((int)(addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.endTransmission(); Wire.requestFrom(EEPROM_ADDR, 1); if (Wire.available()) data = Wire.read(); //Serial.print("EEPROM lesen: addr:"); //Seriell.print (addr); //Seriendruck (" "); //Seriell.println (Daten); Verzögerung(5); Daten zurückgeben; } Sie können die Serial.print(…)-Zeilen auskommentieren, wenn Sie eine Debug-Ausgabe sehen möchten. In der Funktion arduinos setup () starten Sie die Drahtbibliothek und können Anfangswerte einlesen. Hier lese ich zwei Bytes (flags und max_cc), zwei Wörter (lean_min und lean_max) und ein Array von Wörtern sd_max[3] ein: // im EEPROM gespeicherte Werte lesen Wire.begin(); flags=EEPROM_read(0); max_cc=EEPROM_read(1); lean_min=word(EEPROM_read(3), EEPROM_read(2)); lean_max=word(EEPROM_read(5), EEPROM_read(4)); for(int j=0;j<3;j) {sd_max[j]=word(EEPROM_read(7j*2), EEPROM_read(6j*2)); } Hier ist der Code, der sie in das EEPROM schreibt: EEPROM_write(0, flags); EEPROM_write (1, max_cc); EEPROM_write(2, lowByte(lean_min)); EEPROM_write(3, highByte(lean_min)); EEPROM_write(4, lowByte(lean_max)); EEPROM_write(5, highByte(lean_max)); for(int j=0;j<3;j) { EEPROM_write(6 j*2, lowByte(sd_max[j])); EEPROM_write(7 j*2, highByte(sd_max[j])); } Das ist es wirklich.

Schritt 3: Verdrahten Sie es

Verdrahten Sie es
Verdrahten Sie es

Verdrahten Sie es auf einem Veroboard, um es in ein Gehäuse zu schrauben, und die Arbeiten sind erledigt.

Empfohlen: