Добавяне на 24LC256 EEPROM към Arduino Due: 3 стъпки
Добавяне на 24LC256 EEPROM към Arduino Due: 3 стъпки
Anonim
Добавяне на 24LC256 EEPROM към Arduino Due
Добавяне на 24LC256 EEPROM към Arduino Due

На дължимия arduino липсва eeprom. Тази инструкция добавя една и ви позволява да съхранявате стойности в енергонезависима памет, която ще преживее актуализацията на фърмуера на arduino.

Стъпка 1: Breadboarding

Breadboarding
Breadboarding

Тук има някои наистина добри инструкции: https://www.hobbytronics.co.uk/arduino-external-eeprom Току-що ги последвах. Снимката показва макетната схема. щифтове 1 до 4 и щифт 7 са заземени. щифт 8 е свързан към захранването 3.3V на съответната платка. Жълтите (щифт 6) и белите (щифт 5) проводници, свързани към i2c SDA (данни) и SCL (часовник) щифтове на съответната платка (номерирани 21 и 20).

Стъпка 2: Кодово време

Кодово време
Кодово време

Ето някои фрагменти от код, които използвам в скиците си. Първо, включете заглавките на библиотеката Wire някъде близо до горната част на скицата: / * Използвайте 24LC256 EEPROM, за да запазите настройките * / #include След това добавете някои функции за четене и запис на байтове от EEPROM (интересувам се само от отделни байтове, но има функция за писане на страница също в чипа). Имайте предвид, че има макро дефиниция на 0x50.. това е адресът на чипа на i2c шината (можете да свържете повече от едно i2c нещо на i2c шина и да изберете с коя искате да говорите, като промените адреса). / * Тези две функции ни помагат да записваме в 24LC256 EEPROM чип */ #define EEPROM_ADDR 0x50 void EEPROM_write (беззначен int addr, байтови данни) {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); забавяне (5); } байт EEPROM_read (беззнаков int addr) {байт данни = 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); забавяне (5); връщане на данни; } Можете да декомментирате редовете Serial.print (…), ако искате да видите някакъв изход за отстраняване на грешки. Във функцията arduinos setup () стартирате библиотеката с проводници и можете да четете първоначални стойности. Тук чета в два байта (флагове и max_cc), две думи (lean_min и lean_max) и масив от думи sd_max [3]: // четене на стойности, записани в EEPROM Wire.begin (); флагове = EEPROM_read (0); max_cc = EEPROM_read (1); lean_min = дума (EEPROM_read (3), EEPROM_read (2)); lean_max = дума (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)); } Ето малкото код, който ги записва в EEPROM: EEPROM_write (0, флагове); 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])); } Това е наистина.

Стъпка 3: Свържете го

Свържете го
Свържете го

Свържете го към някакъв вероборд, за да го завиете в заграждение и свършената работа.

Препоръчано: