Съдържание:

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

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

Видео: Добавяне на 24LC256 EEPROM към Arduino Due: 3 стъпки
Видео: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Ноември
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: Свържете го

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

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

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