Оглавление:

Добавление 24LC256 EEPROM в Arduino Due: 3 шага
Добавление 24LC256 EEPROM в Arduino Due: 3 шага

Видео: Добавление 24LC256 EEPROM в Arduino Due: 3 шага

Видео: Добавление 24LC256 EEPROM в Arduino Due: 3 шага
Видео: Arduino UNO - Write/Read EEPROM 24LC256 2024, Ноябрь
Anonim
Добавление 24LC256 EEPROM в Arduino Due
Добавление 24LC256 EEPROM в Arduino Due

Arduino due не имеет EEPROM. Эта инструкция добавляет один и позволяет хранить значения в энергонезависимой памяти, которая выдержит обновление прошивки Arduino.

Шаг 1. Макетирование

Макетирование
Макетирование

Здесь есть несколько действительно хороших инструкций: https://www.hobbytronics.co.uk/arduino-external-eeprom Я просто следил за ними. На фотографии показана макетная схема. контакты с 1 по 4 и контакт 7 заземлены. Контакт 8 подключен к источнику питания 3,3 В. Желтый (контакт 6) и белый (контакт 5) провода подключены к контактам i2c SDA (данные) и SCL (часы) на соответствующей плате (пронумерованы 21 и 20).).

Шаг 2: время кода

Код Время
Код Время

Вот несколько фрагментов кода, которые я использую в своих набросках. Во-первых, включите заголовки библиотеки Wire где-нибудь в верхней части вашего скетча: / * Используйте 24LC256 EEPROM для сохранения настроек * / #include Затем добавьте некоторые функции для чтения и записи байтов из EEPROM (меня интересуют только отдельные байты, но есть функция записи страниц в чипе тоже). Обратите внимание, что есть определение макроса 0x50.. это адрес микросхемы на шине i2c (вы можете подключить более одного устройства i2c к шине i2c и выбрать, с какой из них вы хотите разговаривать, изменив адрес). / * Эти две функции помогают нам писать в микросхему EEPROM 24LC256 * / #define EEPROM_ADDR 0x50 void EEPROM_write (unsigned int addr, byte data) {int rdata = data; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (адрес >> 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); } byte EEPROM_read (unsigned int addr) {байтовые данные = 0xFF; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (адрес >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.endTransmission (); Wire.requestFrom (EEPROM_ADDR, 1); если (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 (); flags = EEPROM_read (0); max_cc = EEPROM_read (1); Lean_min = слово (EEPROM_read (3), EEPROM_read (2)); Lean_max = слово (EEPROM_read (5), EEPROM_read (4)); для (int j = 0; j <3; j) {sd_max [j] = word (EEPROM_read (7 j * 2), EEPROM_read (6 j * 2)); } Вот фрагмент кода, который записывает их в 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)); для (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: Подключите его

Подключите его
Подключите его

Подключите его к верёвочному картону, чтобы прикрутить к корпусу, и работа будет сделана.

Рекомендуемые: