EEPROM в arduino – RxTx.su
Поговорим сегодня про EEPROM в ардуино. ЕEPROM — это энергонезависимая память в микроконтроллере ардуино. Это значит, что записанная информация в ячейки такой памяти, будет сохранена даже после выключения питания. После включения питания эта информация вновь можно читать и использовать в своих проектах.
Объем памяти EEPROM разниться от модели к модели arduino. Так же необходимо знать, что минимальный объем записываемой\считываемой информации составляет 1 байт.
Производитель гарантирует, что срок хранения информации хранимой в такой памяти составляет 100 лет, а количество циклов записи\перезаписи составляет 100000. Эти данные относятся к командам записи и перезеписи, что касается чтения, то такая операция не ограничена каким либо количеством.
Если рассматривать МК не только семейства ардуино, то необходимо знать, что многие микроконтроллеры вообще не содержать EEPROM
![](http://m-gen.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif)
Важной характеристикой EEPROM, является время записи и чтения. Так для памяти ардуино время записи составляет примерно 3.3 миллисекунды на 1 байт. Время чтения примерно 0.4 микросекунды. Как мы видим, время записи в разы больше чем чтение. Это необходимо учитывать при организации записи, следить что бы в течении всего времени записи напряжение питания не опускалось ниже 3.3В.
ВНИМАНИЕ! Если сохраняете настройки при выключении прибора, или аварийного выключения, необходимо включить в схему питания конденсатор, емкостью достаточной для записи данных. Время записи рассчитываем согласно времени записи одного байта.
Работа с EEPROM arduino
Работа с EEPROM в ардуино сводится к тому, что бы следить за адресацией записываемых данных. По простому, нам нужно знать по какому адресу записаны наши данные, что бы потом правильно их прочитать.
Byte P1 Int P2 Byte P3 ADR P1 будет равен 0 (адрес по которому происходит запись.чтение) ADR P2 будет равен 1 (ADR P1 + 1(size(P1))) ADR P3 будет равен 3 (ADR P2 + 2(size(P2)))
ВНИМАНИЕ! Для записи\чтения в EEPROM удобно использовать структуры! Так как под одной переменной можно объединить разные объемы данных. При записи и чтении структуры, распределение информации по адресам будет выполнено автоматически. Необходимо только знать полный размер, что бы сделать смещение для записи новой переменной.
Для удобной работы с памятью EEPROM в arduino, разработана библиотека eeprom. Скачать библиотеку и ознакомиться с примерами ее использования можно по ссылке на нашем сайте.
Загрузки
- Даташит Arduino NANO
- Даташит Arduino UNO
- Даташит Arduino MEGA
Где купить
- Плата Arduino NANO
- Плата Arduino UNO
- Плата Arduino MEGA
Как использовать внутреннюю EEPROM Arduino?
В этом уроке мы узнаем об особом типе памяти под названием EEPROM. Мы также увидим, как использовать внутреннюю EEPROM Arduino и для чего она используется. Мы построим небольшую схему и поймем, как использовать функции READ и WRITE EEPROM Arduino.
В качестве дополнения к этому руководству я покажу вам, как использовать внешнюю EEPROM, такую как AT24C32 или AT24C256, с Arduino в следующем руководстве.
Контур
Введение
Память в компьютерах — увлекательная тема. Проще говоря, память — это устройство, используемое для хранения информации. Всем компьютерам, будь то большие системы на основе микропроцессоров или небольшие встроенные устройства на основе микроконтроллеров, требуется память для постоянного или временного хранения данных.
Возьмем в качестве примера Arduino. Если вы посмотрите на спецификации платы Arduino UNO, упомянутые в этом руководстве по распиновке Arduino UNO, вы обнаружите, что UNO имеет три типа памяти:
- 32 КБ флэш-памяти
- 2 КБ ОЗУ
- 1 КБ EEPROM
За исключением значений размера, Flash и EEPROM являются типами постоянной памяти, а RAM является временной памятью. Что это значит? Постоянная память — это тип памяти, который может хранить данные/информацию даже после отключения питания.
Временная память, с другой стороны, используется для хранения временных данных во время работы программы и может хранить эти значения до тех пор, пока не будет подключено питание.
В зависимости от мощности память можно разделить на два типа:
- Энергонезависимая память
- Энергозависимая память
Флэш-память и EEPROM относятся к категории энергонезависимой памяти, где флэш-память используется для хранения программного кода, а EEPROM используется для хранения небольших данных (таких как журнал данных датчика или информация об оборудовании).
Что касается ОЗУ, это энергозависимая память, т. е. данные исчезают после отключения питания.
Что такое ЭСППЗУ?
Давайте теперь сосредоточимся на интересующей памяти. EEPROM или E 2 PROM — сокращение от электрически стираемое программируемое постоянное запоминающее устройство является преемником ПЗУ (только для чтения), PROM (программируемое постоянное запоминающее устройство) и EPROM (стираемое программируемое постоянное запоминающее устройство) предыдущего поколения.
Прежде чем двигаться дальше, давайте проведем небольшой урок истории в воспоминаниях. ПЗУ или постоянное запоминающее устройство — это тип энергонезависимой памяти, используемой для постоянного хранения данных, таких как, например, прошивка встроенной системы.
Начальные ПЗУ запрограммированы на заводе, и вы не можете изменить содержимое ПЗУ. Они также известны как MROM (Masked Read Only Memory).
Затем появилось ПЗУ или программируемое постоянное запоминающее устройство. Они могут быть запрограммированы конечным пользователем (с помощью специального устройства, называемого PROM Programmer), но это одноразовая работа, т. е. они могут быть запрограммированы только один раз.
Для решения проблемы «одноразового программирования» PROM была разработана EPROM. Это расшифровывается как Erasable Programmable Read Only Memory. Память можно стереть, подвергнув ее сильному ультрафиолетовому излучению, и ее можно запрограммировать аналогично PROM.
Проблема с EPROM заключается в том, что постоянное воздействие сильного света (обычно от ртутной лампы) в конечном итоге изнашивает память, ограничивая цикл стирания менее чем 1000.
Наконец, EEPROM или электрически стираемое программируемое постоянное запоминающее устройство было разработан таким образом, что память может быть электрически стерта, пока она все еще находится в системе (что было невозможно с EPROM).
ПРИМЕЧАНИЕ. Современная флэш-память, которая используется в картах памяти, USB-накопителях, твердотельных накопителях, микроконтроллерах и т. д., является типом EEPROM.
Современные микроконтроллеры используют флэш-память для хранения прошивки и EEPROM для хранения небольших данных (таких как параметры, идентификатор устройства, история и т. д.).
EEPROM в Arduino
Использование EEPROM в наших проектах Arduino позволяет нам сохранять простые данные, такие как настройки по умолчанию, состояние светодиода или состояние реле, даже при отключении питания.
Существует два варианта использования EEPROM с Arduino. Первый и простой способ — использовать внутреннюю EEPROM Arduino. Второй вариант — добавить внешнюю микросхему EEPROM, например, знаменитую серию AT24 от ATMEL. Давайте сосредоточимся на внутренней EEPROM Arduino для этого урока.
Поскольку внутренняя EEPROM является функцией микроконтроллера, а не платы, все платы Arduino, т. е. UNO, Mega и Nano, имеют некоторое количество внутренней EEPROM.
В следующей таблице показан размер внутреннего EEPROM для некоторых распространенных микроконтроллеров ATMEL, используемых в различных платах Arduino.
Микроконтроллер | Доски | Размер |
ATmega328P | УНО, Нано, Мини | 1024 байта (1 КБ) |
ATmega2560 | Мега | 4096 байт (4 КБ) |
ATmega168 | Нано | 512 байт |
Библиотека EEPROM Arduino
Библиотека EEPROM — это специальная библиотека, позволяющая считывать и записывать во внутреннюю EEPROM микроконтроллера на плате Arduino. Он входит в стандартную комплектацию IDE, и вам не нужно ничего загружать дополнительно.
Библиотека Arduino EEPROM предоставляет вам пять очень полезных функций:
- EEPROM.read() – Чтение байта из EEPROM.
- EEPROM.write() — Записать байт в EEPROM.
- EEPROM.update() — Записать байт в EEPROM, только если текущее значение отличается от предыдущего значения.
- EEPROM.get() — Чтение любого типа данных из EEPROM (с плавающей запятой, структуры или любого типа данных).
- EEPROM.put() — Запись любого типа данных в EEPROM (с плавающей запятой, структуры или любого другого типа данных).
В Arduino IDE для библиотеки EEPROM есть примеры. Просмотрите их для получения дополнительной информации.
Тестовая схема: запомните состояние реле
Мы видели много теории о EEPROM в целом, а также о EEPROM в Arduino. Вся эта теория имеет смысл только тогда, когда мы видим практическое воплощение. Итак, давайте создадим небольшую схему, чтобы протестировать функцию EEPROM в Arduino. Приложение называется «Может ли Arduino запомнить состояние реле?».
В этой тестовой схеме я буду использовать кнопку для включения или выключения реле. В то же время я также буду хранить состояние реле в EEPROM при каждом нажатии кнопки. Таким образом, если Arduino перезапускается, он сначала проверяет предыдущее состояние реле из EEPROM и устанавливает реле в это положение.
Принципиальная схема
На следующем рисунке показана принципиальная схема для тестирования EEPROM Arduino. Схема
для схемы тестирования EEPROM ArduinoКод
Как я уже говорил, никаких дополнительных библиотек не нужно. Все, что вам нужно сделать, это включить заголовочный файл «EEPROM.h» в свой код.
Заключение
Руководство для начинающих по EEPROM в Arduino. В этом руководстве вы узнали, как использовать внутреннюю EEPROM Arduino. В следующем уроке я покажу вам, как добавить внешнюю микросхему EEPROM в Arduino.
SparkFun Внешняя библиотека EEPROM Arduino
Библиотека для связи I2C с внешними EEPROM
- Автор
- SparkFun Electronics
- Веб-сайт
- https://github.com/sparkfun/SparkFun_External_EEPROM_Arduino_Library
- Категория
- Хранение данных
- Лицензия
- НЕТ УТВЕРЖДЕНИЯ
- Тип библиотеки
- Внесен
- Архитектуры
- Любые
Библиотека для расширенного управления любой EEPROM на основе I2C. Эта библиотека записывает очень быстро и автоматически обрабатывает запись страниц, чтобы вся EEPROM работала как один большой перезаписываемый блок. Автоматически читает и записывает целые числа, числа с плавающей запятой, массивы и структуры. Работает со всеми EEPROM, включая очень большие EEPROM > 512 кбит и любой проводной порт (Wire1 и т. д.). Используйте с