Home > Technologie > Hinzufügen eines 24LC256 EEPROMs zum Arduino Due

Hinzufügen eines 24LC256 EEPROMs zum Arduino Due

0
Advertisement

Hinzufügen eines 24LC256 EEPROMs zum Arduino Due

Das Arduino fehlt ein Eeprom. Dieses instructable fügt ein hinzu und erlaubt Ihnen, Werte in nicht flüchtigem Speicher zu speichern, der ein arduino Firmware-Update überleben wird.

Schritt 1: Breadboarden

Hinzufügen eines 24LC256 EEPROMs zum Arduino Due

Es gibt einige wirklich gute Anweisungen hier:

http://www.hobbytronics.co.uk/arduino-external-eeprom

Ich folgte ihnen.

Das Foto zeigt die Schaltung. Pin 1 bis 4 und Pin 7 geerdet sind. Pin 8 ist mit der 3.3V Versorgung auf der entsprechenden Platine verbunden.

Die gelben (Pin 6) und weißen (Pin 5) Drähte sind mit den i2c SDA (data) und SCL (clock) Pins auf der passenden Platine (20 und 21) verbunden.

Schritt 2: Codezeit.

Hinzufügen eines 24LC256 EEPROMs zum Arduino Due

Hier sind einige Codeauszüge, die ich in meinen Skizzen verwende.

Erstens, die Wire-Bibliothek Header irgendwo in der Nähe der Spitze Ihrer Skizze:

/* Use 24LC256 EEPROM to save settings */
#include <Wire.h>

Dann fügen Sie einige Funktionen zum Lesen und Schreiben von Bytes aus dem EEPROM (ich kümmere mich nur um einzelne Bytes, aber es gibt eine Seite schreiben Funktion im Chip auch). 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-Ding auf einem i2c-Bus anschließen und auswählen, mit wem Sie sprechen möchten, indem Sie die Adresse ändern).

/* These two functions help us write to the 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 write: addr: ");
//Serial.print(addr);
//Serial.print(" ");
//Serial.println(data);
delay(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 read: addr: ");
//Serial.print(addr);
//Serial.print(" ");
//Serial.println(data);
delay(5);
return data;
}

Sie können die Kommentarzeichen Serial.print(...) Zeilen , wenn Sie einige Debug - Ausgabe sehen wollen.

In Arduinos setup() Funktion , die Sie den Draht Bibliothek starten und Anfangswerte lesen kann.
Hier las ich in zwei Bytes ( flags und max_cc ), zwei Wörter ( lean_min und lean_max ) und eine Reihe von Wörtern sd_max[3] :

// read values saved in the EEPROM
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(7 j*2),EEPROM_read(6 j*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]));
}

Thats über es wirklich.

Schritt 3: Wire It Up

Hinzufügen eines 24LC256 EEPROMs zum Arduino Due

Wire es auf einige veroboard, um in ein Gehäuse und die Jobs zu schrauben.

Related Reading