EEPROM
EEPROM — энергонезависимая память, которую можно перезаписывать по одному байту. В неё сохраняют настройки, калибровку и счётчики, которые должны пережить выключение питания. Главные ограничения — конечное число циклов записи и время записи в миллисекунды.
Обновлено Редакция GAW
EEPROM (electrically erasable programmable read-only memory, электрически стираемое перепрограммируемое ПЗУ) — энергонезависимая память, в которой можно стирать и записывать отдельные байты. В отличие от флеш-памяти, которая стирается страницами или секторами, EEPROM удобна для небольших часто обновляемых данных: настроек, калибровочных коэффициентов, счётчиков моточасов.
Встроенная и внешняя EEPROM
| ATmega328P (встроенная) | 24LC256 (внешняя, I²C) | |
|---|---|---|
| Объём | 1 КБ | 256 Кбит (32 КБ) |
| Ресурс | не меньше 100 000 циклов | больше 1 000 000 циклов |
| Время записи | около 3,3 мс на байт | до 5 мс на страницу 64 байта |
| Хранение данных | 20 лет при 85 °C, 100 лет при 25 °C | — |
Значения — из даташитов Microchip DS40002061B и DS20001203W. Внешнюю EEPROM подключают по I²C и обращаются к ней по адресу I²C — подробнее на странице EEPROM с интерфейсом I²C. Встроенная EEPROM AVR — отдельное адресное пространство, к которому программа обращается через регистры EEAR, EEDR и EECR; об организации памяти — в статье об архитектуре AVR.
Как не испортить EEPROM
- Ресурс. Каждая запись расходует ресурс ячейки. Значение, которое меняется каждую секунду, исчерпает 100 000 циклов меньше чем за 28 часов: пишите только при изменении, реже или по кругу в разные ячейки.
- Питание. Запись при пониженном напряжении может испортить данные. Microchip рекомендует включить детектор пониженного питания, чтобы микроконтроллер находился в сбросе, пока напряжения недостаточно (DS40002061B, раздел 8.4.2).
- Время. Запись длится миллисекунды — её не стоит выполнять в обработчиках прерываний и в критичных по времени участках программы.
Частые вопросы
Сколько раз можно записать EEPROM?
У встроенной EEPROM ATmega328P ресурс не меньше 100 000 циклов записи/стирания на ячейку, у внешней 24LC256 — больше миллиона. Флеш-память программы ATmega328P рассчитана всего на 10 000 циклов. Если записывать значение каждую секунду, 100 000 циклов закончатся меньше чем за 28 часов — поэтому часто меняющиеся данные пишут реже или распределяют по разным ячейкам.
Сколько длится запись в EEPROM?
Миллисекунды: у ATmega328P запись байта из программы — около 3,3 мс, у 24LC256 цикл записи — до 5 мс, но за один цикл можно записать страницу до 64 байт. Чтение быстрое. Пока идёт запись, микросхема 24LC256 не отвечает на шине I2C, а AVR не начнёт следующую запись в EEPROM.
Почему портятся данные в EEPROM?
Чаще всего из-за записи при пониженном напряжении питания: процессор при недостаточном напряжении может выполнить команды неверно, а сама запись требует минимального напряжения. Microchip рекомендует держать микроконтроллер в сбросе при недостаточном питании — включить детектор пониженного питания.
Источники
- Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B) — 8.4 — EEPROM 1 КБ, ресурс не меньше 100 000 циклов; табл. 8-2 — запись 3,3 мс; разд. 4 — хранение 20 лет при 85 °C и 100 лет при 25 °C; флеш — 10 000 циклов
- Microchip. 24AA256/24LC256/24FC256 Data Sheet (DS20001203W) — 256 Кбит, страница 64 байта, время записи до 5 мс, больше миллиона циклов стирания/записи
Нашли ошибку?
Смотрите также
- EEPROM с шиной I²CВыводы, адрес на шине, запись байта и страницы, опрос ACK, защита, чтение
- Архитектура AVRЯдро, конвейер, память, порты, прерывания, сброс, такты и сон
- Детектор пониженного питанияBrown-out detector: сброс МК при просадке питания
- Адрес I²C7-битный адрес ведомого и байт адреса с битом R/W