Spisu treści:

Dodawanie pamięci EEPROM 24LC256 do Arduino Due: 3 kroki
Dodawanie pamięci EEPROM 24LC256 do Arduino Due: 3 kroki

Wideo: Dodawanie pamięci EEPROM 24LC256 do Arduino Due: 3 kroki

Wideo: Dodawanie pamięci EEPROM 24LC256 do Arduino Due: 3 kroki
Wideo: Arduino. Zapisywanie i odczytywanie zmiennych na karcie SD jak w pamięci EEPROM. 2024, Listopad
Anonim
Dodawanie pamięci EEPROM 24LC256 do Arduino Due
Dodawanie pamięci EEPROM 24LC256 do Arduino Due

W arduino brakuje eepromu. Ta instrukcja dodaje jeden i pozwala przechowywać wartości w pamięci nieulotnej, która przetrwa aktualizację oprogramowania układowego arduino.

Krok 1: Deska do krojenia chleba

Deska do krojenia chleba
Deska do krojenia chleba

Oto kilka naprawdę dobrych instrukcji: https://www.hobbytronics.co.uk/arduino-external-eeprom Właśnie je zastosowałem. Zdjęcie pokazuje układ płytek. piny 1 do 4 i pin 7 są uziemione. pin 8 jest podłączony do zasilania 3,3V na odpowiedniej płytce. Przewody żółty (pin 6) i biały (pin 5) podłączone do pinów i2c SDA (dane) i SCL (zegar) na odpowiedniej płytce (o numerach 21 i 20).

Krok 2: Czas kodu

Czas kodu
Czas kodu

Oto kilka fragmentów kodu, których używam w moich szkicach. Najpierw umieść nagłówki biblioteki Wire gdzieś w górnej części szkicu: /* Użyj EEPROM 24LC256 do zapisania ustawień */ #include Następnie dodaj kilka funkcji do odczytu i zapisu bajtów z EEPROM (zależy mi tylko na pojedynczych bajtach, ale jest funkcja zapisu strony w chipie). Zauważ, że istnieje makrodefinicja 0x50.. jest to adres chipa na magistrali i2c (możesz podłączyć więcej niż jedną rzecz i2c do magistrali i2c i wybrać, z którą chcesz rozmawiać, zmieniając adres). /* Te dwie funkcje pomagają nam pisać do układu 24LC256 EEPROM */ #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("zapis EEPROM: adres: "); //Serial.print(addr); //Serial.print(" "); //Serial.println(dane); opóźnienie(5); } byte EEPROM_read(unsigned int addr) { bajt danych = 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()) dane = Wire.read(); //Serial.print("Odczyt EEPROM: adres: "); //Serial.print(addr); //Serial.print(" "); //Serial.println(dane); opóźnienie(5); dane zwrotne; } Możesz odkomentować wiersze Serial.print(…), jeśli chcesz zobaczyć wyniki debugowania. W funkcji arduinos setup() uruchamiasz bibliotekę przewodów i możesz wczytać wartości początkowe. Tutaj odczytałem dwa bajty (flagi i max_cc), dwa słowa (lean_min i lean_max) oraz tablicę słów sd_max[3]: // odczytaj wartości zapisane w EEPROM Wire.begin(); flagi=EEPROM_odczyt(0); max_cc=EEPROM_odczyt(1); lean_min=słowo(EEPROM_read(3), EEPROM_read(2)); lean_max=słowo(EEPROM_read(5), EEPROM_read(4)); for(int j=0;j<3;j) { sd_max[j]=słowo(EEPROM_odczyt(7 j*2), EEPROM_odczyt(6 j*2)); } Oto fragment kodu, który zapisuje je w 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])); } To naprawdę o tym.

Krok 3: Podłącz go

Podłącz to w górę
Podłącz to w górę

Podłącz go do jakiejś płyty veroboard, aby przykręcić ją do obudowy i wykonać zadania.

Zalecana: