Sommario:

Aggiungere una EEPROM 24LC256 ad Arduino Due: 3 passaggi
Aggiungere una EEPROM 24LC256 ad Arduino Due: 3 passaggi

Video: Aggiungere una EEPROM 24LC256 ad Arduino Due: 3 passaggi

Video: Aggiungere una EEPROM 24LC256 ad Arduino Due: 3 passaggi
Video: ST24C08 EEPROM and Arduino 2024, Novembre
Anonim
Aggiungere una EEPROM 24LC256 ad Arduino Due
Aggiungere una EEPROM 24LC256 ad Arduino Due

L'arduino due manca di eeprom. Questo istruibile ne aggiunge uno e ti consente di memorizzare i valori in una memoria non volatile che sopravviverà a un aggiornamento del firmware arduino.

Passaggio 1: breadboard

breadboard
breadboard

Ci sono alcune ottime istruzioni qui: https://www.hobbytronics.co.uk/arduino-external-eeprom Le ho appena seguite. La foto mostra il circuito breadboard. i pin da 1 a 4 e il pin 7 sono messi a terra. il pin 8 è collegato all'alimentazione a 3,3 V sulla scheda due. I fili giallo (pin 6) e bianco (pin 5) collegati ai pin i2c SDA (dati) e SCL (orologio) sulla scheda due (numerati 21 e 20).

Passaggio 2: codice ora

Codice Tempo
Codice Tempo

Ecco alcuni frammenti di codice che uso nei miei schizzi. Innanzitutto, includi le intestazioni della libreria Wire da qualche parte vicino alla parte superiore del tuo schizzo: /* Usa EEPROM 24LC256 per salvare le impostazioni */ #include Quindi aggiungi alcune funzioni per leggere e scrivere byte dall'EEPROM (mi interessa solo i singoli byte ma c'è un funzione di scrittura della pagina anche nel chip). Nota che c'è una definizione macro di 0x50.. questo è l'indirizzo del chip sul bus i2c (puoi collegare più di un oggetto i2c su un bus i2c e selezionare con quale vuoi parlare cambiando l'indirizzo). /* Queste due funzioni ci aiutano a scrivere sul chip 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("Scrittura EEPROM: addr: "); //Serial.print(addr); //Serial.print(" "); //Serial.println(data); ritardo(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); ritardo(5); restituire i dati; } Puoi decommentare le righe Serial.print(…) se vuoi vedere qualche output di debug. Nella funzione arduinos setup() si avvia la libreria wire e si possono leggere i valori iniziali. Qui leggo in due byte (flag e max_cc), due parole (lean_min e lean_max) e un array di parole sd_max[3]: // leggo i valori salvati nella 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)); } Ecco il bit di codice che li scrive nella EEPROM: 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])); } Questo è davvero tutto.

Passaggio 3: collegalo

Collegalo
Collegalo

Collegalo a una veroboard per avvitarlo in un recinto e il lavoro è fatto.

Consigliato: