INHOUDSOPGAWE:

Voeg 'n 24LC256 EEPROM by die Arduino Due: 3 stappe
Voeg 'n 24LC256 EEPROM by die Arduino Due: 3 stappe

Video: Voeg 'n 24LC256 EEPROM by die Arduino Due: 3 stappe

Video: Voeg 'n 24LC256 EEPROM by die Arduino Due: 3 stappe
Video: Еще один барабанный секвенсор Arduino с минимальным аппаратным обеспечением drumseq81212 2024, Julie
Anonim
Voeg 'n 24LC256 EEPROM by die Arduino Due
Voeg 'n 24LC256 EEPROM by die Arduino Due

Die arduino het nie 'n eeprom nie. Hierdie instruksies voeg een by en laat u waardes stoor in 'n nie -vlugtige geheue wat 'n arduino -firmware -opdatering sal oorleef.

Stap 1: Breadboarding

Broodplankry
Broodplankry

Hier is 'n paar baie goeie instruksies: https://www.hobbytronics.co.uk/arduino-external-eeprom penne 1 tot 4 en pen 7 is gegrond. pen 8 is gekoppel aan die 3.3V -toevoer op die gepaste bord. Die geel (pen 6) en wit (pen 5) drade wat gekoppel is aan die i2c SDA (data) en SCL (klok) penne op die behoorlike bord (genommer 21 en 20).

Stap 2: Kode tyd

Kode tyd
Kode tyd

Hier is 'n paar stukkies kode wat ek in my sketse gebruik. Sluit eerstens die Wire -biblioteekopskrifte iewers aan die bokant van u skets in: / * Gebruik 24LC256 EEPROM om instellings op te slaan * / #include Voeg dan 'n paar funksies by om te lees en skryf grepe uit die EEPROM (ek gee net om individuele grepe, maar daar is 'n bladsy -skryffunksie ook in die chip). Let op: daar is 'n makro -definisie van 0x50.. dit is die adres van die chip op die i2c -bus (u kan meer as een i2c -dingies op 'n i2c -bus aansluit en kies met wie u wil praat deur die adres te verander). / * Hierdie twee funksies help ons om te skryf aan die 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 skryf: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println (data); vertraging (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); as (Wire.available ()) data = Wire.read (); //Serial.print("EEPROM lees: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println (data); vertraging (5); data terugstuur; } U kan die reëls van Serial.print (…) ontkommenteer as u 'n foutopsporing wil sien. In die arduinos setup () -funksie begin u die draadbiblioteek en kan u in die aanvanklike waardes lees. Hier lees ek in twee grepe (vlae en max_cc), twee woorde (lean_min en lean_max) en 'n verskeidenheid woorde sd_max [3]: // lees waardes wat in die EEPROM Wire.begin () gestoor is; vlae = 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)); vir (int j = 0; j <3; j) {sd_max [j] = word (EEPROM_read (7 j*2), EEPROM_read (6 j*2)); } Hier is die stukkie kode wat dit in die EEPROM skryf: EEPROM_write (0, vlae); 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)); vir (int j = 0; j <3; j) {EEPROM_write (6 j*2, lowByte (sd_max [j])); EEPROM_write (7 j*2, highByte (sd_max [j])); } Dit is regtig daaroor.

Stap 3: Draai dit op

Draai dit op
Draai dit op

Draai dit op 'n verobord om in 'n omhulsel vas te maak en die werk wat gedoen is.

Aanbeveel: