Obsah:

Pridanie EEPROM 24LC256 k Arduino kvôli: 3 kroky
Pridanie EEPROM 24LC256 k Arduino kvôli: 3 kroky

Video: Pridanie EEPROM 24LC256 k Arduino kvôli: 3 kroky

Video: Pridanie EEPROM 24LC256 k Arduino kvôli: 3 kroky
Video: Lesson 06: Arduino Variables Data Types | Robojax Arduino Step By Step Course 2024, November
Anonim
Pridanie 24LC256 EEPROM k Arduino Due
Pridanie 24LC256 EEPROM k Arduino Due

Arduinu chýba eeprom. Tento návod pridá jeden a umožní vám uložiť hodnoty do energeticky nezávislej pamäte, ktorá prežije aktualizáciu firmvéru arduino.

Krok 1: Breadboarding

Breadboarding
Breadboarding

Tu je niekoľko skutočne dobrých pokynov: https://www.hobbytronics.co.uk/arduino-external-eeprom Nasledoval som ich. Fotografia zobrazuje obložený obvod. kolíky 1 až 4 a kolík 7 sú uzemnené. kolík 8 je pripojený k zdroju 3,3 V na doske. Žltý (kolík 6) a biely (kolík 5) vodiče pripojený k pinom i2c SDA (údaje) a SCL (hodiny) na doske (číslované 21 a 20).

Krok 2: Čas kódu

Čas kódu
Čas kódu

Tu je niekoľko útržkov kódu, ktoré používam vo svojich náčrtkoch. Najprv zahrňte záhlavie knižnice Wire niekde v hornej časti náčrtu: / * Na uloženie nastavení použite 24LC256 EEPROM * / #include Potom pridajte niektoré funkcie na čítanie a zápis bajtov z EEPROM (starám sa iba o jednotlivé bajty, ale existuje funkcia zápisu stránky do čipu). Všimnite si, že existuje makro definícia 0x50.. toto je adresa čipu na zbernici i2c (na zbernicu i2c môžete pripojiť viac ako jednu vec i2c a zmeniť adresu, s ktorou sa chcete rozprávať). / * Tieto dve funkcie nám pomáhajú písať na čip 24LC256 EEPROM */ #define EEPROM_ADDR 0x50 neplatné EEPROM_write (nepodpísané int addr, bajtové údaje) {int rdata = data; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (adresa >> 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); oneskorenie (5); } byte EEPROM_read (nepodpísané int addr) {byte dáta = 0xFF; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (adresa >> 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); oneskorenie (5); vrátiť údaje; } Ak chcete vidieť výstup ladenia, môžete zrušiť odkomentovanie riadkov Serial.print (…). Vo funkcii arduinos setup () spustíte drôtovú knižnicu a môžete čítať počiatočné hodnoty. Tu som prečítal v dvoch bajtoch (vlajky a max_cc), dve slová (lean_min a lean_max) a pole slov sd_max [3]: // čítanie hodnôt uložených v EEPROM Wire.begin (); flags = EEPROM_read (0); max_cc = EEPROM_read (1); lean_min = slovo (EEPROM_read (3), EEPROM_read (2)); lean_max = slovo (EEPROM_read (5), EEPROM_read (4)); pre (int j = 0; j <3; j) {sd_max [j] = slovo (EEPROM_read (7 j*2), EEPROM_read (6 j*2)); } Tu je kúsok kódu, ktorý ich zapíše do EEPROM: EEPROM_write (0, vlajky); 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)); pre (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 je naozaj všetko.

Krok 3: Pripojte ho

Zapojte to
Zapojte to

Pripojte ho na nejaký veroboard, aby ste ho zaskrutkovali do krytu a práce boli hotové.

Odporúča: