Cuprins:

Adăugarea unei 24LC256 EEPROM la Arduino Due: 3 pași
Adăugarea unei 24LC256 EEPROM la Arduino Due: 3 pași

Video: Adăugarea unei 24LC256 EEPROM la Arduino Due: 3 pași

Video: Adăugarea unei 24LC256 EEPROM la Arduino Due: 3 pași
Video: [RO] Curs 05 Proiectarea cu Microprocesoare - I2C și USB 2024, Noiembrie
Anonim
Adăugarea unei 24PR256 EEPROM la Arduino Due
Adăugarea unei 24PR256 EEPROM la Arduino Due

Arduino datorat nu are un eeprom. Această instrucțiune adaugă una și vă permite să stocați valori în memoria non-volatilă care va supraviețui unei actualizări de firmware arduino.

Pasul 1: Breadboarding

Breadboarding
Breadboarding

Există câteva instrucțiuni foarte bune aici: https://www.hobbytronics.co.uk/arduino-external-eeprom Tocmai le-am urmat. pinii 1 la 4 și pinul 7 sunt împământați. pinul 8 este conectat la sursa de 3.3V de pe placa corespunzătoare. Firele galbene (pinul 6) și albe (pinul 5) sunt conectate la pinii i2c SDA (date) și SCL (ceas) de pe placa datorată (numerotate 21 și 20).

Pasul 2: Timpul codului

Cod timp
Cod timp

Iată câteva fragmente de cod pe care le folosesc în schițele mele. În primul rând, includeți anteturile bibliotecii Wire undeva în partea de sus a schiței: / * Utilizați 24LC256 EEPROM pentru a salva setările * / #include Apoi adăugați câteva funcții pentru a citi și a scrie octeți din EEPROM (îmi pasă doar de octeți individuali, dar există un caracteristica de scriere a paginii și în cip). Rețineți că există o definiție macro de 0x50.. aceasta este adresa cipului de pe magistrala i2c (puteți conecta mai multe chestii i2c pe o magistrală i2c și puteți selecta cu care doriți să vorbiți schimbând adresa). / * Aceste două funcții ne ajută să scriem pe cipul EEPROM 24LC256 * / #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); întârziere (5); } octet EEPROM_read (nesemnat int addr) {octet date = 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 citit: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); întârziere (5); returnează date; } Puteți decomenta liniile Serial.print (…) dacă doriți să vedeți o ieșire de depanare. În funcția arduinos setup () porniți biblioteca de fire și puteți citi valorile inițiale. Aici am citit în doi octeți (steaguri și max_cc), două cuvinte (lean_min și lean_max) și o serie de cuvinte sd_max [3]: // citesc valorile salvate în EEPROM Wire.begin (); steaguri = EEPROM_read (0); max_cc = EEPROM_read (1); lean_min = cuvânt (EEPROM_read (3), EEPROM_read (2)); lean_max = cuvânt (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)); } Iată bitul de cod care le scrie în EEPROM: EEPROM_write (0, steaguri); 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])); } Asta e cu adevărat.

Pasul 3: conectați-l

Wire It Up
Wire It Up

Conectați-l pe un veroboard pentru a înșuruba într-o incintă și pentru a face lucrările.

Recomandat: