Innehållsförteckning:

Lägga till en 24LC256 EEPROM till Arduino Due: 3 steg
Lägga till en 24LC256 EEPROM till Arduino Due: 3 steg

Video: Lägga till en 24LC256 EEPROM till Arduino Due: 3 steg

Video: Lägga till en 24LC256 EEPROM till Arduino Due: 3 steg
Video: ST24C08 EEPROM and Arduino 2024, November
Anonim
Lägger till en 24LC256 EEPROM till Arduino Due
Lägger till en 24LC256 EEPROM till Arduino Due

Arduino due saknar en eeprom. Denna instruerbara lägger till en och låter dig lagra värden i icke -flyktigt minne som överlever en arduino -firmwareuppdatering.

Steg 1: Breadboarding

Breadboarding
Breadboarding

Det finns några riktigt bra instruktioner här: https://www.hobbytronics.co.uk/arduino-external-eepromJag har precis följt dem. Fotot visar kretskortet. stiften 1 till 4 och stift 7 är jordade. stift 8 är anslutet till 3.3V -matningen på rätt kort. De gula (stift 6) och vita (stift 5) ledningarna anslutna till i2c SDA (data) och SCL (klocka) stiften på kortet (numrerade 21 och 20).

Steg 2: Kodtid

Kodtid
Kodtid

Här är några kodavsnitt som jag använder i mina skisser. För det första, inkludera trådbibliotekets rubriker någonstans nära toppen av din skiss: / * Använd 24LC256 EEPROM för att spara inställningar * / #include Lägg sedan till några funktioner för att läsa och skriva byte från EEPROM (jag bryr mig bara om enskilda byte men det finns en sidskrivningsfunktion i chipet också). Observera att det finns en makrodefinition på 0x50.. detta är adressen till chipet på i2c -bussen (du kan ansluta mer än en i2c -sak på en i2c -buss och välja vilken du vill prata med genom att ändra adressen). / * Dessa två funktioner hjälper oss att skriva till 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 skriv: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); fördröjning (5); } byte EEPROM_read (osignerad 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); fördröjning (5); returnera data; } Du kan avmarkera serierna Serial.print (…) om du vill se lite felsökning. I arduinos setup () -funktion startar du trådbiblioteket och kan läsa in initialvärden. Här läste jag i två byte (flaggor och max_cc), två ord (lean_min och lean_max) och en rad ord sd_max [3]: // läs värden sparade i EEPROM Wire.begin (); flaggor = 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)); för (int j = 0; j <3; j) {sd_max [j] = word (EEPROM_read (7 j*2), EEPROM_read (6 j*2)); } Här är koden som skriver dem i EEPROM: EEPROM_write (0, flaggor); 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)); för (int j = 0; j <3; j) {EEPROM_write (6 j*2, lowByte (sd_max [j])); EEPROM_write (7 j*2, highByte (sd_max [j])); } Det är verkligen det.

Steg 3: Wire It Up

Koppla upp det
Koppla upp det

Koppla in den på någon veroboard för att skruva in i ett hölje och de jobb som gjorts.

Rekommenderad: