Регистры EEPROM

Микроконтроллеры / Для начинающих / Архитектура /

Микроконтроллеры для начинающих Что нужно для того, чтобы стать профессиональным разработчиком программ для микроконтроллеров и выйти на такой уровень мастерства, который позволит с лёгкостью найти и устроиться на работу с высокой зарплатой (средняя зарплата программиста микроконтроллеров по России на начало 2017 года составляет 80 000 рублей). Подробнее...

EEARL - Регистр адреса EEPROM (EEPROM Address Register)

EEARL - Регистр адреса EEPROM (EEPROM Address Register)

  • Биты 7 и 6 - Res: зарезервированные биты. Эти разряды зарезервированы в ATtiny13A, и всегда будут читаться как нулевые значения.
  • Биты 5...0 – EEAR[5:0]: адрес EEPROM. Регистр адресов EEPROM – EEARL - задает адрес EEPROM в 64-х байтах пространства EEPROM. Байты данных EEPROM адресуются линейно в пределах от 0 до 63. Начальное значение EEARL не определено. Перед обращением к EEPROM необходимо записать в EEARL правильное значение.

ПРИМЕЧАНИЕ
Для других моделей микроконтроллеров серии AVR может использоваться 16-разрядный регистр адреса EEAR.

EEDR – Регистр данных EEPROM (EEPROM Data Register)

EEDR – Регистр данных EEPROM (EEPROM Data Register)

  • Биты 7...0 – EEDR[7:0]: данные EEPROM. При выполнении записи в EEPROM, регистр EEDR содержит данные для записи в EEPROM по адресу, указанному в регистре EEARL. При выполнении чтения из EEPROM, регистр EEDR содержит данные, считанные из EEPROM по адресу, указанному в регистре EARL.

EECR – Регистр управления EEPROM (EEPROM Control Register)

EECR – Регистр управления EEPROM (EEPROM Control Register)

  • Бит 7 – Res: зарезервированный бит. Этот бит зарезервирован для будущего использования и всегда будет считываться как 0 в ATtiny13A. Для совместимости с будущими устройствами AVR всегда записывайте этот бит в ноль. После прочтения замаскируйте этот бит.
  • Бит 6 – Res: зарезервированный бит. Этот бит зарезервирован для будущего использования и всегда будет считываться как 0 в ATtiny13A.
  • Биты 5 и 4 – EEPM[1:0]: биты режима программирования EEPROM. Установка битов режима программирования EEPROM определяет, какое действие программирования будет выполняться при записи единицы в бит EEPE. Можно запрограммировать данные в одной атомарной операции (стереть старое значение и запрограммировать новое значение) или выполнить операции стирания и записи в двух разных операциях. Время программирования для различных режимов показано в таблице 5-1 (ниже). Если бит EEPE (см. ниже) установлен, то любая запись в EEPMn будет отклонена. Во время сброса биты EEPMn будут сброшены в значение 0b00, если EEPROM не занят программированием.
  • Бит 3 – EERIE: включить прерывание EEPROM (EEPROM Ready Interrupt Enable). Запись единицы в бит EERIE позволяет включить прерывания EEPROM, если установлен I-бит в регистре SREG. Запись нуля в бит EERIE отключает прерывание. Флаг готовности прерывания EEPROM вызывает прерывание, когда энергонезависимая память готова для программирования.
  • Бит 2 – EEMPE: мастер включения программирования EEPROM (EEPROM Master Program Enable). Бит EEMPE определяет, будет ли запись единицы в бит EEPE иметь эффект или нет. Когда бит EEMPE установлен, установка бита EEPE в течение четырех тактов запрограммирует EEPROM по выбранному адресу. Если EEMPE равен нулю, установка EEPE не будет иметь никакого эффекта. Если EEMPE был установлен с помощью программного обеспечения, аппаратное обеспечение очищает бит (сбрасывает в ноль) после четырех тактов.
  • Бит 1 – EEPE: включение программирования (записи) EEPROM. Бит EEPE - это сигнал для EEPROM. Если бит EEPE установлен, то EEPROM будет запрограммирована согласно состоянию битов EEPMn. Бит EEMPE должен быть установлен, прежде чем логическая единица будет записана в EEPE, иначе запись EEPROM не произойдёт. Когда время доступа к записи истекло, бит EEPE очищается аппаратным обеспечением. После установки EEPE процессор останавливается на два такта, прежде чем будет выполнена следующая инструкция.
  • Бит 0 – EERE: включение чтения EEPROM. Бит EERE - разрешение чтения из EEPROM. Если в регистр EEARL записан правильный адрес, то бит EERE должен быть записан в единицу, чтобы вызвать чтение EEPROM. Доступ чтения из EEPROM принимает одну инструкцию, а запрошенные данные доступны немедленно. Когда EEPROM считывается, процессор останавливается на четыре такта до выполнения следующей инструкции. Пользователь должен опросить бит EEPE перед началом операции чтения. Если операция записи выполняется, невозможно ни прочитать EEPROM, ни изменить регистр EEARL.

На рисунках:

  • Сверху указаны номера битов регистра.
  • Слева надписи:
    • Адрес регистра.
    • Read/Write - это чтение/запись. Буква под битом говорит о том, какой доступ возможен к этому биту: R - только чтение, W - только запись, R/W - чтение и запись.
    • Начальное значение (Initial Value) - значение, которое изначально (по умолчанию) хранится в бите. Если Х - то значение может быть любым (не определено).

Таблица 5.1. Биты режимов EEPROM.

EECR Время программирования Операция
EEPM1 EEPM0
0 0 3,4 мс Стирание и запись за одну операцию (Атомарная операция)
0 1 1,8 мс Только стирание
1 0 1,8 мс Только запись
1 1 - Зарезервировано для будущего использования

Выводы

Примерная последовательность действий при записи в EEPROM:

  1. Записать адрес ячейки памяти EEPROM, с которой будет выполняться работа, в регистр EEARL.
  2. Загрузить данные в регистр EEDR.
  3. Установить (при необходимости) режим программирования в битах 5 (EEPM1) и 4 (EEPM0) регистра EECR.
  4. Установить бит EEMPE регистра EECR, чтобы запись единицы в EEPE имела эффект.
  5. Установить бит 1 (EEPE) регистра EECR, чтобы начать запись.
  6. Дождаться завершения записи.

Если память EEPROM в данное занята и не может быть записана, то можно использовать прерывание (установить бит 3 - EERIE), и тем самым дать возможность микроконтроллеры выполнять другие действия, пока запись не станет возможной (пока не произойдёт прерывание). После чего можно установить бит 1 (EEPE) регистра EECR, чтобы начать запись.

Дожидаться завершения записи можно в цикле, проверяя бит регистра EEPE, который сбросится аппаратно по завершении записи. То есть пока этот бит равен 1 - запись ещё не завершена.

Чтение выполняется проще. Примерная последовательность действий при чтении из EEPROM:

  1. Записать адрес ячейки памяти EEPROM, с которой будет выполняться работа, в регистр EEARL.
  2. Установить бит 0 (EERE) регистра EECR, чтобы начать чтение.
  3. Прочитать данные из регистра EEDR.

Поскольку при чтении данные доступны сразу после установки флага EERE, то ждать завершения операции не надо. Сразу после инструкции, которая устанавливает флаг EERE, можно читать данные из EEDR. Однако надо помнить, что процессор останавливается на четыре такта при чтении EEPROM.

Также не помешает перед чтением опросить бит EEPE, чтобы убедиться, что запись в EEPROM в данное время не выполняется (во время записи чтение невозможно).


Вступить в группу "Основы программирования"

Подписаться на RUTUBE-канал

Подписаться на Дзен-канал

Подписаться на рассылки по программированию

Микроконтроллеры для ЧАЙНИКОВ Микроконтроллеры для ЧАЙНИКОВ

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

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su