double arrow

EEPROM Control Register (EECR)

EEPROM Data Register (EEDR)

EEPROM Address Register (EEARH, EEARL)

Бит $1F ($3F) R/W Нач.знач.         EEARH
- - - EEAR8
R R R R/W
       
Бит $1E ($3E) R/W Нач.знач.         EEARL
EEAR7 EEAR6 EEAR1 EEAR0
R/W R/W R/W R/W
       

Рисунок 7.1 – Регистры адреса EEPROM (EEARH, EEARL)

Биты 7-1 регистра EEARH зарезервированы. В AT90S8535 эти биты зарезервированы и всегда читается как 0.

Бит 0 регистра EEARH и биты 7-0 регистра EEARL - Адрес EEPROM. Адресный регистр EEPROM задает адрес в 512-байтном пространстве EEPROM. Байты данных EEPROM адресуются линейно в диапазоне 0..512.

РЕГИСТР ДАННЫХ EEPROM - EEDR

Бит $1D ($3D) R/W Нач.знач.         EEDR
MSB - - LSB
R/W R/W R/W R/W
       

Рисунок 7.2 – Регистр данных EEPROM (EEDR)

Биты 7..0 - EEDR7..0 - Данные EEPROM. Для операции записи регистр EEDR содержит данные, которые будут записаны в EEPROM по адресу в ре­гистре EEAR. Для операции чтения в этот регистр читаются данные, прочи­танные из EEPROM по адресу в регистре EEAR.

Бит $1C($3C) R/W Нач.знач.                 EECR
- - - - EERIE EEMWE EEWE EERE
R R R R R R/W R/W R/W
               

Рисунок 7.3 – Регистр управления EEPROM (EECR)

Биты 7..4 - зарезервированы. В AT90S8535 эти биты зарезервированы и всегда читаются как 0.

Бит 3 – EERIE (EEPROM Ready Interrupt Enable). Разрешение прерывания от EEPROM. Данный разряд управляет генерацией прерывания, возникающего при завершении цикла записи в EEPROM. Если этот разряд установлен в «1», прерывания разрешены (если флаг I регистра SREG также установлен в «1»). При сброшенном разряде EEWE (см. далее в таблице) прерывание генерируется постоянно.

Бит 2 - EEMWE (EEPROM Master Write Enable). Управление разрешением записи. Этот бит определяет, будут ли записаны данные при установке EEWE. Если бит EEMWE установлен, при установке EEWE данные записываются по выбранному адресу EEPROM. Если этот бит сброшен, установка EEWE не имеет эффекта. После программной установки этот бит сбрасывается аппаратно через четыре такта процессора.

Бит 1 - EEWE (EEPROM Write Enable). Разрешение записи в EEPROM. Сигнал EEWE является стробом записи в EEPROM. После установки правильных адреса и данных для записи в EEPROM необходимо установить бит EEWE. При записи "1" в бит EEWE должен быть установлен бит EEMWE, тогда происходит запись в EEPROM.

Бит 0 - EERE (EEPROM Read Enable). Разрешение чтения из EEPROM. Сигнал EERE является стробом чтения из EEPROM. После установки нужного адреса в регистре EEAR, необходимо установить бит EERE. После того как бит EERE будет аппаратно очищен, в регистре EEDR. Чтение EEPROM занимает одну команду и не требует отслеживания бита EERE. При установке бита EERE, ЦПУ останавливается на два цикла перед тем как будет выполнена следующая команда. Перед чтением пользователь должен проверять состояние бита EEWE, если регистры данных или адреса изменяются во время операции записи, запись в ячейку прерывается и результат операции записи становится неопределенным.

Таким образом, для записи в EEPROM должна соблюдаться следующая последовательность:

1. Ждем обнуления флага EEWE регистра EECR (готовности EEPROM к приему новых данных).

2. Записываем адрес в EEAR (не обязательно)

3. Записываем данные в EEDR (не обязательно)

4. Устанавливаем в 1 бит EEMWE регистра EECR

5. Не позже чем через 4 такта после установки EEMWE устанавливаем EEWE.

После того как время записи истечет (типично 2.5 mS для Vcc=5V и 4mS для Vcc=2.7), бит EEWE очищается аппаратно. Пользователь может отслеживать этот бит и ожидать его установки в ноль, перед тем как записывать следующий байт. При установке EEWE, ЦПУ останавливается на два цикла перед исполнением следующей команды.

При записи в EEPROM могут быть вызваны проблемы, вызванные прерываниями:

1. При возникновении прерывания между 4 и 5 шагами описанной последовательности запись в EEPROM будет сорвана, так как за время обработки прерывания флаг EEMWE сбросится в «0».

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

Для избежания описанных проблем настоятельно рекомендуется запрещать все прерывания (сбрасывать бит I регистра SREG) при выполнении пунктов 2-5 описанной выше последовательности.

Процедура чтения данных из EEPROM гораздо проще, чем процедура зазаписи. После загрузки требуемого адреса в регистр EEAR (EEARH:EEARL) программа должна установить в «1» разряд EERE реги­стра EECR. Когда запрошенные данные будут находиться в регистре дан­ных EEDR, произойдет аппаратный сброс этого разряда.

Операция чтения из EEPROM всегда выполняется за один машинный цикл. Кроме того, после установки разряда EERE в «1» процессор пропускает 4 машинных цикла перед началом выполнения следующей инструкции. Поэтому следить в программе за состоянием разряда EERE нет никакой необходимости.

Единственное, на что нужно обратить внимание при чтении из ЕЕРROM, — это состояние флага EEWE. Перед выполнением чтения необхо­димо убедиться, что этот флаг сброшен. В противном случае в результате загрузки в регистры новых значений адреса и данных во время записи и EEPROM, процедура записи будет прервана, а результат этой записи — не определен.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: