Obsah:

Přidání 24LC256 EEPROM k Arduino: 3 kroky
Přidání 24LC256 EEPROM k Arduino: 3 kroky

Video: Přidání 24LC256 EEPROM k Arduino: 3 kroky

Video: Přidání 24LC256 EEPROM k Arduino: 3 kroky
Video: Подключение внешней EEPROM к Ардуино на примере памяти 24LC512 2024, Červenec
Anonim
Přidání 24LC256 EEPROM k Arduino Due
Přidání 24LC256 EEPROM k Arduino Due

Arduino due postrádá eeprom. Tento instruktáž přidává jeden a umožňuje vám ukládat hodnoty do energeticky nezávislé paměti, která přežije aktualizaci firmwaru arduino.

Krok 1: Breadboarding

Breadboarding
Breadboarding

Zde jsou některé opravdu dobré pokyny: https://www.hobbytronics.co.uk/arduino-external-eeprom Právě jsem je následoval. Na fotografii je zobrazen obvod s obloženým chlebem. kolíky 1 až 4 a pin 7 jsou uzemněny. kolík 8 je připojen k napájení 3,3 V na desce. Žlutý (kolík 6) a bílý (kolík 5) vodiče připojený k pinům i2c SDA (data) a SCL (hodiny) na desce splatnosti (číslované 21 a 20).

Krok 2: Čas kódu

Čas kódu
Čas kódu

Zde je několik úryvků kódu, které používám ve svých skicách. Nejprve zahrňte záhlaví knihovny Wire někde poblíž horní části náčrtu: / * Použijte 24LC256 EEPROM k uložení nastavení * / #include Poté přidejte některé funkce pro čtení a zápis bajtů z EEPROM (starám se pouze o jednotlivé bajty, ale existuje funkce zápisu stránky do čipu). Všimněte si, že existuje makro definice 0x50.. toto je adresa čipu na sběrnici i2c (na sběrnici i2c můžete připojit více než jednu věc i2c a změnit adresu, se kterou chcete mluvit, změnou adresy). / * Tyto dvě funkce nám pomáhají zapisovat na čip 24LC256 EEPROM */ #define EEPROM_ADDR 0x50 void EEPROM_write (unsigned int addr, byte data) {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); zpoždění (5); } byte EEPROM_read (bez znaménka int addr) {byte data = 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); zpoždění (5); vrátit data; } Pokud chcete vidět výstup ladění, můžete odkomentovat řádky Serial.print (…). Ve funkci arduinos setup () spustíte drátovou knihovnu a můžete číst počáteční hodnoty. Zde jsem četl ve dvou bajtech (vlajky a max_cc), dvě slova (lean_min a lean_max) a pole slov sd_max [3]: // číst hodnoty uložené 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)); pro (int j = 0; j <3; j) {sd_max [j] = slovo (EEPROM_read (7 j*2), EEPROM_read (6 j*2)); } Zde je bit kódu, který je zapíše do EEPROM: EEPROM_write (0, příznaky); 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)); pro (int j = 0; j <3; j) {EEPROM_write (6 j*2, lowByte (sd_max [j])); EEPROM_write (7 j*2, highByte (sd_max [j])); } O to opravdu jde.

Krok 3: Zapojte jej

Zapojte to
Zapojte to

Připojte jej k veroboardu, aby se našrouboval do skříně, a práce jsou hotové.

Doporučuje: