что такое eeprom память

AVR Урок 15. Внутренняя энергонезависимая память EEPROM. Часть 1

Урок 15

Внутренняя энергонезависимая память EEPROM

Я думаю, может не все, но очень многие знают, что в контроллерах AVR помимо основной оперативной памяти, а также памяти для хранения прошивки существует ещё и энергонезависимая память типа EEPROM. Данная память сделана по технологии электрического стирания информации, что в отличие от её предшественника EPROM, в котором стирание производилось только при помощи ультрафиолетовых лучей, позволило использовать данный тип памяти практически повсеместно. Как мы знаем, ещё существует энергонезависимая память типа Flesh, которая стоит намного дешевле, но у которой также есть существенный минус. Там невозможно стереть отдельный байт, стирание производится только блоками, что не совсем удобно в некоторых случаях, особенно когда информации требуется хранить немного, и информация данная представляет собой небольшие настроечные параметры. Поэтому нам стоит также остановиться на данном типе памяти. И причем не только из-за того, что он присутствует в контроллере, а из-за того, что это очень удобно для хранения некоторых величин, которые нужны нам будут даже после того, как контроллер потерял питание.

Так как мы работаем с контроллером Atmega8A, техническую документацию данного МК мы и откроем и увидим там, что всего такой памяти у нас 512 байт. Это тем не менее не так мало. Если мы, например будем какой-нибудь будильник программировать, чтобы данные установки не потерялись после отключения питания, мы вполне можем с вами обратиться к данной памяти. Также в документации написано, что данная память гарантированно переживёт 100000 циклов записи/считывания.

Теперь напрашивается вопрос. Как же организован процесс работы с данной памятью в микроконтроллере AVR? Как всегда, компания Atmel об этом позаботилась и организовала данный процесс на аппаратном уровне, что очень радует потому, что нам постоянно приходится беречь ресурсы контроллера. Для управления данным аппаратным уровнем существуют определенные регистры.

Один из них – регистровая пара EEAR. Почему пара, а потому что 512 адресов не влезут в 8 бит, требуется ещё один

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom память

Как именно мы будем адресоваться, мы увидим в процессе программирования EEPROM.

Следующий – регистр данных EADR

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom память

В данный регистр мы будем записывать данные для того чтобы записать их в определённый адрес памяти EEPROM, а также чтобы считать их из определённого адреса той же самой памяти.

Ну и как водится, практически ни одна периферия и технология, организованная на аппаратном уровне, не обходится без управляющего регистра. У нас управляющим регистром является регистр EECR

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom память

Давайте сразу немного познакомимся с битами данного регистра.

Бит EERE – бит, заставляющий начать процесс чтения из памяти EEPROM. И, как только данные считались и записались в регистр данных, этот бит сбросится. Поэтому мы можем считать даннй бит не только управляющим, но и статусным или битом состояния.

Бит EEWE – бит, установка которого даёт команду контроллеру записать данные из регистра данных в определенный адрес EEPROM. После завершения процедуры записи, данный бит также сбрасывается самостоятельно.

Бит EEMWE – бит, разрешающий (не начинающий) процесс записи.

Бит EERIE – бит, разрешающий прерывания.

Источник

Ардуино: память EEPROM

Как известно, сердцем Ардуино Уно является микроконтроллер фирмы Atmel — Atmega328. И как и любой микроконтроллер, Atmega328 имеет в своем составе несколько видов памяти. Каждый тип имеет свои особенности и свое предназначение.

Flash — энергонезависимая память, предназначенная для хранения программы. Эта память больше подходит для чтения данных, чем для их записи. Флэш-память в Atmega328 имеет 10 тысяч циклов перезаписи. Предполагается, что запись в эту память ведется редко, только во время создания устройства или при обновлении прошивки.

SRAM — оперативная энергозависимая память, которая нужна для хранения переменных во время работы устройства. Она очень быстрая, но полностью стирается при выключении питания.

EEPROM — энергонезависимая память, предназначенная для журналирования и хранения разного рода настроек. В отличие от Флэш памяти, она имеет 100 тысяч циклов перезаписи.

В микроконтроллере также есть регистры — это тоже память, сверхбыстрая энергозависимая, которая используется при выполнении арифметических операций, при работе с портами ввода/вывода и прочее.

Сколько памяти у Ардуино?

Размер памяти у микроконтроллера Atmega328:

Для сравнения, у Ардуино Мега памяти гораздо больше:

Как видим, EEPROM в Arduino Уно всего 1 килобайт. Что можно хранить в таком объеме? Предположим, мы собираемся хранить значение ручек регулировки, подключенных к аналоговым входам Ардуино. Каждая такая ручка дает число от 0 до 1024 и требует 2 байта для хранения (по факту 1 байт и 2 бита, но для простоты используем 2б ), получается в EEPROM мы можем хранить значения 512 ручек настройки!

В общем, для большинства DIY проектов 1 кб EEPROM более чем достаточно. На этом уроке мы научимся записывать данные в EEPROM и считывать их оттуда.

Программа

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

Для работы с EEPROM используется стандартная библиотека EEPROM.h. Запись и чтения в эту память ведется побайтово. Это значит, что за раз мы можем записать и считать число от 0 до 255. Запись одного байта осуществляется с помощью функции write:

Здесь адрес — индекс ячейки памяти, который может принимать значение от 0 до 1023. Максимальный адрес можно легко вычислить зная размер EEPROM у конкретного микроконтроллера: 1кб = 1024 байта, значит максимальный адрес 1024 — 1. Либо можно использовать функцию length — размер памяти, тогда максимальный адрес будет EEPROM.length() — 1.

Второй аргумент значение — это число, которое мы хотим сохранить в ячейке с индексом «адрес«.

Чтение байта осуществляется с помощью функции read:

Итак, пишем программу.

Загружаем программу на Ардуино, открываем монитор последовательного порта и нажимаем кнопку несколько раз. Нетрудно догадаться, что если нажать больше 255 раз, произойдет переполнение переменной. В данном случае это не страшно, просто счетчик автоматически сбросится в ноль.

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom память

Теперь отключим плату Ардуино от питания, затем снова включим и откроем монитор.

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom память

Участок кода в конце функции setup считал байт из нулевой ячейки EEPROM памяти и вывел его в порт. Работает!

Запись и чтение int и float

Что делать, если нам нужно сохранить переменную типа integer, long или float? Для этих целей в библиотеке EEPROM есть две специальные функции: put и get. Первая позволяет записать в память переменную любого типа, вторая — считать из памяти.

В отличие от однобайтовых функций write и read, в случае использования put и get легко запутаться в адресации. Так, при записи целого типа (int) с помощью put мы займем два байта памяти. И чтобы по-очереди записать два числа нужно будет прибавить к адресу двойку:

Если решим сохранить переменную типа long, то уже потребуется 4 байта. В общем, нужно всегда знать размер переменной, которую хотим разместить в EEPROM, или уметь его вычислять функцией sizeof.

Хорошим примером работы функций put и get послужит сохранение в EEPROM показаний поворотного потенциометра, подключенного к аналоговому входу Ардуино. Предположим, у нас есть прибор с одним потенциометром, с помощью которого настраиваются три коэффициента какого-нибудь PID-регулятора. Как нам уже известно, плата Ардуино Уно имеет 10-разрядный АЦП. Для чтения АЦП мы используем функцию analogWrite, которая вернет целый тип int — а это два байта.

Данная программа постоянно считывает значение с контакта A0 и при нажатии кнопки сохраняет его в EEPROM. После первого нажатия, значение сохраняется в ячейки с адресами 0,1. После второго — 2,3. После третьего — 4,5.

После запуска программы и вывода ранее сохраненных в EEPROM значений в последовательный порт начнут сыпаться числа. Крутим потенциометр до нужного нам значения и жмем кнопку. Программа покажет нам сохраняемое значение и подождет 1 секунду.

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom память

Настроив таким образом все три числа, отключим Ардуино от компьютера, а затем снова включим и откроем монитор последовательного порта.

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom память

Готово! Теперь можно не настраивать устройства каждый раз после подачи питания, а использовать EEPROM.

Надо заметить, что put и get умеют работать не только с естественными типами int, float, long, char, byte, но и со структурами. Для оценки их размера лучше использовать упомянутую функцию sizeof.

Источник

Что такое чип памяти и как программировать микросхемы

Главная страница » Что такое чип памяти и как программировать микросхемы

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom память

Микросхемы разного назначения применяются в составе электроники современной техники. Огромное многообразие такого рода компонентов дополняют микросхемы памяти. Этот вид радиодеталей (среди электронщиков и в народе) зачастую называют просто – чипы. Основное назначение чипов памяти – хранение определённой информации с возможностью внесения (записи), изменения (перезаписи) или полного удаления (стирания) программными средствами. Всеобщий интерес к чипам памяти понятен. Мастерам, знающим как программировать микросхемы памяти, открываются широкие просторы в области ремонта и настройки современных электронных устройств.

О чипах – микросхемах хранения информации

Микросхема памяти — это электронный компонент, внутренняя структура которого способна сохранять (запоминать) внесённые программы, какие-либо данные или одновременно то и другое. По сути, загруженные в чип сведения представляют собой серию команд, состоящих из набора вычислительных единиц микропроцессора.

Следует отметить: чипы памяти всегда являются неотъемлемым дополнением микропроцессоров – управляющих микросхем. В свою очередь микропроцессор является основой электроники любой современной техники.

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom памятьНабор электронных компонентов на плате современного электронного устройства. Где-то среди этой массы радиодеталей приютился компонент, способный запоминать информацию

Таким образом, микропроцессор управляет работой электронной техники, а чип памяти хранит сведения, необходимые микропроцессору. Программы или данные хранятся в чипе памяти как ряд чисел — нулей и единиц (биты). Один бит может быть представлен логическими нулем (0) либо единицей (1).

В единичном виде обработка битов видится сложной. Поэтому биты объединяются в группы. Шестнадцать бит составляют группу «слов», восемь бит составляют байт — «часть слова», четыре бита — «кусочек слова».

Программным термином для чипов, что используется чаще других, является байт. Это набор из восьми бит, который может принимать от 2 до 8 числовых вариаций, что в общей сложности даёт 256 различных значений.

Для представления байта используется шестнадцатеричная система счисления, где предусматривается использование 16 значений из двух групп:

Поэтому в комбинациях двух знаков шестнадцатеричной системы также укладываются 256 значений (от 00h до FFh). Конечный символ «h» указывает на принадлежность к шестнадцатеричным числам.

Организация микросхем (чипов) памяти

Для 8-битных чипов памяти (наиболее распространенный тип) биты объединяются в байты (8 бит) и сохраняются под определённым «адресом». По назначенному адресу открывается доступ к байтам. Вывод восьми битов адреса доступа осуществляется через восемь портов данных.

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom памятьОрганизация структуры запоминающего устройства. На первый взгляд сложный и непонятный алгоритм. Но при желании разобраться, понимание приходит быстро

Например, 8-мегабитный чип серии 27c801 имеет в общей сложности 1048576 байт (8388608 бит). Каждый байт имеет свой собственный адрес, пронумерованный от 00000h до FFFFFh (десятичное значение 0 — 1048575).

Помимо 8-битных чипов памяти, существуют также 16-битные чипы памяти. Есть микросхемы последовательного доступа, характеризуемые как 1-битные и 4-битные чипы памяти. Правда, последние из отмеченных микросхем теперь уже практически не встречаются.

Микросхемы памяти EPROM (серия 27… 27C …)

Термином «EPROM» зашифрована аббревиатурой техническая характеристика микросхем — стираемая программируемая память только читаемая (Erasable Programmable Read Only Memory). Что это значит в деталях?

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom памятьОдна из модификаций запоминающих устройств, особенность исполнения которой заключается в наличии специального окна. Благодаря этому окну, ультрафиолетом стирается информация

Несмотря на расшифровку куска аббревиатуры – «только для чтения» (Read Only Memory), информация доступна для стирания и перезаписи, но только с помощью программатора. Часть аббревиатуры — «Erasable», сообщает о возможности стирания данных.

Структура чипов серии 27… 27C… поддерживает стирание информации методом воздействия на ячейки хранения интенсивным ультрафиолетовым излучением (длина волны 254 нм). Обозначение аббревиатуры «программируемый» (Programmable) указывает на возможность программирования, когда любая цифровая информация может быть заложена в чип.

Для программирования чипов требуется программатор. К примеру, 27 серия успешно прошивается устройствами «Batronix Eprommer» или «Galep-4».

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom памятьПрограмматор микросхем Batronix — эффективный и продуктивный инструмент программирования запоминающих устройств. Поддерживает работу с широким набором чипов, включая 27 серию

Тип памяти серии 27… 27C… сохраняет записанные программатором данные до следующего программирования с функцией стирания или без таковой. Допускается многократное программирование без стирания, при условии изменения битов только от состояния единицы до состояния нуля или имеющих состояние нуль.

Если же требуется запрограммировать чип памяти с изменением бита от состояния нуля до состояния единицы, прежде необходимо применить функцию стирания. Такая функция предусмотрена в конструкциях микросхем.

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom памятьчто такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom памятьчто такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom память

Конфигурация исполнения серии 27…, 27C..

Микросхемы 27 серии выпускаются с окном из кварцевого стекла для засветки ультрафиолетом или без окна. Конфигурация чипа без окна не поддерживает функцию ультрафиолетового стирания. Такой тип микросхем (без окна) относят к чипам EPROM, которые программируются за один раз. Маркируются чипы как OTP (One Time Programmable) — одноразовое программирование.

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom памятьЗапоминающее программируемое устройство из группы однократно программируемых EPROM (One Time Programmable). В настоящее время редко применяемые

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

Солнечные лучи содержат ультрафиолет, а это значит – свет солнца способен стирать информацию, записанную в микросхеме. Правда, чтобы полностью стереть данные солнечным светом, потребуется несколько сотен часов прямого воздействия солнечных лучей.

Также следует отметить особенности EPROM серии 27C… Символ «С» в данном случае указывает на принадлежность чипа к семейству CMOS (Complimentary Metal Oxide Semiconductor) — комплементарный метал-оксидный полупроводник.

Этот вид микросхем памяти отличается сниженной производительностью по отношению к семейству NMOS (N-channel Metal Oxide Semiconductor) — N-канальный метал-оксидный полупроводник.

Кроме того, серия 27C требует меньшего напряжения питания (12,5В). Между тем обе конфигурации исполнения совместимы. Поэтому, к примеру, микросхема 2764 вполне заменима на чип 27C64.

Микросхемы памяти EEPROM серии 28C…

Здесь первое отличие заметно в аббревиатуре типа памяти – EEPROM, что означает электрически стираемое программируемое постоянное запоминающее устройство (Electrically Erasable Programmable Read Only Memory).

Построение этой серии практически идентично 27 чипам. Однако 28 серия позволяет стирать отдельные байты или всё пространство памяти электрическим способом, без применения ультрафиолета.

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom памятьСерия запоминающих устройств, поддерживающая электрический метод стирания информации. Этот вид входит уже в состав группы EEPROM — электрически стираемых постоянных запоминающих устройств

Поскольку отдельные байты можно стереть, не удаляя всю хранимую информацию, эти отдельные байты могут быть перезаписаны. Однако процесс записи EEPROM занимает больше времени, чем программирование EPROM. Разница до нескольких миллисекунд на байт.

Чтобы компенсировать этот недостаток, чипы подобные AT28C256, оснащаются функцией блочного программирования. При таком подходе к программированию, одновременно (блоком) загружаются 64, 128 или 256 байт. Блочный способ сокращает время программирования.

Чипы памяти FLASH EEPROM серии 28F …, 29C …, 29F …

Эти чипы можно стирать электрически — полностью или блоками, а некоторые (подобные AT28C …) могут программироваться блоками.

Между тем Flash-память не всегда применимо использовать в качестве замены обычного чипа. Причины, как правило, заключаются в разной конфигурации корпусного исполнения.

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom памятьУстройства записи и хранения данных, поддерживающие технологию программирования Flash-memory. Отличаются исполнением корпуса с большим числом контактов (32). Входят в группу EPROM

Простой пример, когда Flash-память доступна только в корпусах на 32 контакта или более. Поэтому, допустим, чип 28F256 на 32 вывода не совместим с чипом 27C256, имеющим 28 контактных выводов. При этом микросхемы имеют одинаковый объём памяти и другие параметры, подходящие для замены.

Чипы EEPROM с последовательным доступом (24C …, 25C …, 93C …)

Микросхемы памяти с последовательным интерфейсом отличаются тем, что вывод данных и наименование имен в них происходят частями (последовательно).

Последовательный процесс позволяет получить доступ только к одному биту за раз, и доступный адрес также передаётся по битам. Но последовательное программирование имеет явное преимущество в плане конфигурации корпусов.

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom памятьВсего восемь контактных ножек достаточно запоминающему устройству серии 24C и подобным для полноценной работы на запись и хранение данных

Это преимущество успешно используется. Практически все EEPROM последовательного доступа изготавливаются в виде 8-контактных малогабаритных микросхем. Такое исполнение корпуса видится более практичным, удобным.

Запоминающие устройства ОЗУ серии 52 …, 62 …, 48Z …, DS12 …, XS22 …

Аббревиатура ОЗУ (RAM) расшифровывается как «память произвольного доступа» (Random Access Memory). Также микросхемы серии 52 …, 62 … и подобные часто характеризуются «оперативными запоминающими устройствами».

Их отличительные черты – скоростная запись без необходимости предварительного стирания. Здесь видится некоторое преимущество относительно других изделий. Но есть и недостаток – чипы ОЗУ отмеченной и других серий утрачивают все записанные и сохранённые данные при отключении питания.

Однако имеется альтернатива – память NVRAM (Non Volatile Random Access Memory) – энергонезависимая память серий 48, DS, XS и подобная, с произвольным доступом. Этот вид чипов выделяется среди основных преимуществ микросхем RAM высокой скоростью перезаписи и простым программированием. Потеря питания не оказывает влияние на сохранённую информацию.

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom памятьУстройства записи и хранения информации, которые не боятся отключения питания. Их структура предусматривает эффективную защиту данных

Как же способом достигается энергетическая независимость NVRAM? Оказывается, производителями используются две методики:

Для первого варианта: при отключении питания происходит автоматический переход на внутренний источник энергии. По словам производителей чипов с АКБ, энергии встроенного уникального аккумулятора вполне достаточно на 10 лет работы.

Для второго варианта: технология предусматривает копирование данных пространства памяти NVRAM на встроенное пространство EEPROM. Если утрачивается питание, копия информации остаётся нетронутой и после восстановления энергии, автоматически копируется на NVRAM.

Маркировка и взаимозаменяемость компонентов

Выведенная на корпусе маркировка чипа памяти традиционно содержит:

Также на корпусах нередко отмечаются сведения о производителе. Независимо от производителя, многие микросхемы памяти совместимы.

что такое eeprom память. Смотреть фото что такое eeprom память. Смотреть картинку что такое eeprom память. Картинка про что такое eeprom память. Фото что такое eeprom памятьМаркировка — структура записи на корпусе программируемого устройства, раскрывающая основные сведения, по которым можно подобрать аналог на замену при необходимости

Также микросхемы памяти должны иметь одинаковый размер (объём) и равноценное или меньшее время доступа. Желательно выбирать корпус, подходящий по температурному диапазону. Следует отметить: размер памяти задается в битах, не в байтах. За цифрой объёма обычно следует обозначение версии (например, «F»).

Далее, через дефис, отмечается максимально разрешенная скорость доступа в наносекундах — время задержки между циклами ввода адреса и вывода данных на порты чипа памяти. Время задержки обозначается двумя цифрами (например, «70» соответствует 70 нс, а вот «10» соответствует 100 нс). Наконец, завершают маркировку изделия тип корпуса и допустимый диапазон температур.

Пример расшифровки маркировки микросхемы памяти M27C1001-10F1:

Из практики программирования запоминающих устройств

На видео ниже демонстрируется пример из практики инженера-электронщика, касающийся программирования специальных чипов, наделённых функционалом электрической «памяти»:

При помощи информации: Batronix

КРАТКИЙ БРИФИНГ

Источник

Arduino EEPROM энергонезависимая память

Ардуино предоставляет своим пользователям три типа встроенной памяти устройств и одна из них EEPROM – энергонезависимая память.

Описание памяти EEPROM

Arduino – это целое семейство различных устройств для создания электронных проектов. Микроконтроллеры очень удобны для использования, доступны к освоению даже новичку. Каждый микроконтроллер состоит из платы, программ для обеспечения работы, памяти. В этой статье будет рассмотрена энергонезависимая память, используемая в Arduino.

Ардуино предоставляет своим пользователям три типа встроенной памяти устройств: стационарное ОЗУ (оперативно-запоминающее устройство или SRAM — static random access memory) – необходимо для записи и хранения данных в процессе использования; флеш-карты – для сохранения уже записанных схем; EEPROM – для хранения и последующего использования данных.

На ОЗУ все данные стираются, как только происходит перезагрузка устройства либо отключается питание. Вторые две сохраняют всю информацию до перезаписи и позволяют извлекать ее при необходимости. Флеш-накопители достаточно распространены в настоящее время. Подробнее стоит рассмотреть память EEPROM.

Аббревиатура расшифровывается, как Electrically Erasable Programmable Read-Only Memory и в переводе на русский дословно означает – электрически стираемая программируемая память только для чтения. Производитель гарантирует сохранность информации на несколько десятилетий вперед после последнего отключения питания (обычно приводят срок в 20 лет, зависит от скорости снижения заряда устройства).

При этом нужно знать, что возможность перезаписи на устройство ограничена и составляет не более 100 000 раз. Поэтому рекомендуют аккуратно и внимательно относиться к вносимым данным и не допускать перезаписи лишний раз.

Объем памяти, в сравнении с современными носителями, очень небольшой и разный для различных микроконтроллеров. Например, для:

Так устроено потому, что каждый микроконтроллер предназначен для определенного объема задач, имеет разное количество выводов для подключения, соответственно, необходим разный объем памяти. При этом такого количества достаточно для обычно создаваемых проектов.

Для записи на EEPROM требуется значительное количество времени – около 3 мс. Если в момент записи отключается питание, данные не сохраняются вовсе либо могут быть записаны ошибочно. Требуется всегда дополнительно проверять внесенную информацию, чтобы избежать сбоев во время работы. Считывание данных происходит гораздо быстрее, ресурс памяти от этого не снижается.

Библиотека

Работа с памятью EEPROM осуществляется с помощью библиотеки, которая была специально создана для Ардуино. Главными являются способность к записи и чтению данных. Библиотека активируется командой #include EEPROM.h.

Далее используются простые команды:

В данных скетчах: address – аргумент с данными ячейки, куда вносятся данные второго аргумента data; при считывании используется один аргумент address, который показывает, откуда следует читать информацию.

Запись целых чисел

Запись целых чисел в энергонезависимую память EEPROM осуществить достаточно просто. Внесение чисел происходит с запуском функции EEPROM.write(). В скобках указываются необходимые данные. При этом числа от 0 до 255 и числа свыше 255 записываются по-разному. Первые вносятся просто – их объем занимает 1 байт, то есть одну ячейку. Для записи вторых необходимо использовать операторов highByte() высший байт и lowByte() низший байт.

Число делится на байты и записывается отдельно по ячейкам. Например, число 789 запишется в две ячейки: в первую пойдет множитель 3, а во вторую – недостающее значение. В итоге получается необходимое значение:

Для «воссоединения» большого целого числа применяется функция word(): int val = word(hi, low). Нужно читывать, что максимальное целое число для записи – 65536 (то есть 2 в степени 16). В ячейках, в которых еще не было иных записей, на мониторе будут стоять цифры 255 в каждой.

Запись чисел с плавающей запятой и строк

Числа с плавающей запятой и строк – это форма записи действительных чисел, где они представляются из мантиссы и показателя степени. Запись таких чисел в энергонезависимую память EEPROM производится с активацией функции EEPROM.put(), считывание, соответственно, – EEPROM.get().

При программировании числовые значения с плавающей запятой обозначаются, как float, стоит отметить, что это не команда, а именно число. Тип Char (символьный тип) – используется для обозначения строк. Процесс записи чисел на мониторе запускается при помощи setup(), считывание – с помощью loop().

В процессе на экране монитора могут появиться значения ovf, что значит «переполнено», и nan, что значит «отсутствует числовое значение». Это говорит о том, что записанная в ячейку информация не может быть воспроизведена, как число с плавающей точкой. Такой ситуации не возникнет, если достоверно знать, в какой ячейке какой тип информации записан.

Примеры проектов и скетчей

Пример №1

Скетч запишет до 16 символов с последовательного порта и в цикле выведет 16 символов из EEPROM. Благодаря Arduino IDE данные записываются в EEPROM и контролируется содержимое энергонезависимой памяти.

Пример №2

Пример №3

Запись в память два целых числа, чтение их из EEPROM и вывод в последовательный порт. Числа от 0 до 255 занимают 1 байт памяти, с помощью функции EEPROM.write() записываются в нужную ячейку. Для чисел больше 255 их нужно делить на байты с помощью highByte() и lowByte() и записывать каждый байт в свою ячейку. Максимальное число при этом – 65536 (или 2 16 ).

Пример №4

Пример №5

Использование EEPROM как массива.

Работа с EEPROM

Как упоминалось ранее, ресурс памяти EEPROM ограничен. Для продления срока службы энергонезависимой памяти, вместо функции write() запись, лучше применять функцию update обновление. При этом перезапись ведется только для тех ячеек, где значение отличается от вновь записываемого.

Еще одной полезной функцией рассматриваемой памяти микроконтроллера является возможность использования ячеек хранения байтов, как деталей целостного массива EEPROM. При любом формате использования необходимо постоянно осуществлять контроль целостности записанных данных.

Такая память на Ардуино стандартно хранит самое важное для работы контроллера и устройства. К примеру, если на такой базе создается регулятор температуры и исходные данные окажутся ошибочными, устройство будет работать «неадекватно» существующим условиям – сильно занижать или завышать температуру.

Существует несколько ситуаций, когда память EEPROM содержит неправильные данные:

Чтобы избежать возникновения неприятных последствий, устройство можно запрограммировать на несколько вариантов действий: применить данные аварийного кода, отключить систему полностью, подать сигнал о неисправности, использовать заранее созданную копию или другие.

Для контроля целостности информации используют контрольный код системы. Он создается по образцу записи первоначальных данных и, при проверке, он вновь просчитывает данные. Если результат отличается – это ошибка. Самым распространенным вариантом такой проверки является контрольная сумма – выполняется обычная математическая операция по сложению всех значений ячеек.

Опытные программисты добавляют к этому коду дополнительное «исключающее ИЛИ», например, E5h. В случае если все значения равны нулю, а система по ошибке обнулила исходные данные – такая хитрость выявит ошибку.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *