Indholdsfortegnelse:

Tilføjelse af en 24LC256 EEPROM til Arduino Due: 3 trin
Tilføjelse af en 24LC256 EEPROM til Arduino Due: 3 trin

Video: Tilføjelse af en 24LC256 EEPROM til Arduino Due: 3 trin

Video: Tilføjelse af en 24LC256 EEPROM til Arduino Due: 3 trin
Video: LDmicro 18: GPS-будильник Ublox NEO-6M (программирование лестничной схемы ПЛК микроконтроллера с помощью LDmicro) 2024, November
Anonim
Tilføjelse af en 24LC256 EEPROM til Arduino Due
Tilføjelse af en 24LC256 EEPROM til Arduino Due

Arduino due mangler en eeprom. Denne instruerbare tilføjer en og giver dig mulighed for at gemme værdier i ikke -flygtig hukommelse, der vil overleve en arduino -firmwareopdatering.

Trin 1: Breadboarding

Breadboarding
Breadboarding

Der er nogle virkelig gode instruktioner her: https://www.hobbytronics.co.uk/arduino-external-eepromJeg har lige fulgt dem. Fotoet viser det brødbrede kredsløb. ben 1 til 4 og ben 7 er jordet. pin 8 er forbundet til 3,3V -forsyningen på due -kortet. De gule (pin 6) og hvide (pin 5) ledninger forbundet til i2c SDA (data) og SCL (ur) pins på due -kortet (nummereret 21 og 20).

Trin 2: Kodetid

Kode Tid
Kode Tid

Her er nogle kodestykker, som jeg bruger i mine skitser. Først skal du inkludere Wire -bibliotekets overskrifter et sted nær toppen af din skitse: / * Brug 24LC256 EEPROM til at gemme indstillinger * / #include Tilføj derefter nogle funktioner til at læse og skrive bytes fra EEPROM (jeg bekymrer mig kun om individuelle bytes, men der er en side skrivefunktion i chippen også). Bemærk, at der er en makrodefinition på 0x50.. dette er adressen på chippen på i2c -bussen (du kan forbinde mere end en i2c -ting på en i2c -bus og vælge, hvilken du vil tale med ved at ændre adressen). / * Disse to funktioner hjælper os med at skrive til 24LC256 EEPROM -chippen */ #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); forsinkelse (5); } byte EEPROM_read (usigneret 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); hvis (Wire.available ()) data = Wire.read (); //Serial.print("EEPROM read: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); forsinkelse (5); returnere data; } Du kan fjerne kommentaren til Serial.print (…) -linjerne, hvis du vil se noget fejlfindingsoutput. I arduinos setup () -funktionen starter du trådbiblioteket og kan læse i startværdier. Her læste jeg i to bytes (flag og max_cc), to ord (lean_min og lean_max) og en række ord sd_max [3]: // læs værdier gemt i EEPROM Wire.begin (); flag = 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)); } Her er den bit kode, der skriver dem ind i EEPROM: EEPROM_write (0, flag); 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])); } Det handler virkelig om det.

Trin 3: Tråd op

Tråd det op
Tråd det op

Sæt det på en veroboard for at skrue ind i et kabinet og de udførte job.

Anbefalede: