4.15. Описание регистров контроллера энергонезависимой памяти
4.15.1. ADDR2 - регистр 2-го байта адреса энергонезависимой памяти
Регистры ADDR2, ADDR1 и ADDR0 образуют 24-битное значение ADDR.
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
ADDR2 |
+0х02 |
|
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - ADDR[23:16]: байт 2 адреса энергонезависимой памяти
В данном регистре хранится байт расширения адреса во время доступа к сектору прикладной программы и загрузочному сектору.
4.15.2. ADDR1 - регистр 1-го байта адреса энергонезависимой памяти
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
ADDR1 |
+0х01 |
|
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - ADDR[15:8]: байт 1 адреса энергонезависимой памяти
В данном регистре хранится старший байт адреса во время доступа к любой ячейке памяти.
4.15.3. ADDR0 - регистр 0-го байта адреса энергонезависимой памяти
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
ADDR0 |
+0х00 |
|
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - ADDR[7:0]: байт 0 адреса энергонезависимой памяти
В данном регистре хранится младший байт адреса во время доступа к любой ячейке памяти.
4.15.4. DATA2 - регистр 2-го байта данных энергонезависимой памяти
Регистры DATA2, DATA1 и ADDR0 образуют совместно 24-битное значение DATA.
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
DATA2 |
+0х06 |
|
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - DATA[23:16]: байт 2 данных энергонезависимой памяти
В данном регистре хранится значение 2-го байта данных во время выполнения проверки CRC в секторе прикладной программы, загрузочном секторе или при комбинированной проверке.
4.15.5. DATA1 - регистр 1-го байта данных энергонезависимой памяти
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
DATA1 |
+0х05 |
|
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - DATA[15:8]: байт 1 данных энергонезависимой памяти
В данном регистре хранится значение первого байта данных во время доступа к сектору прикладной программы и к загрузочному сектору.
4.15.6. DATA0 - регистр 0-го байта данных энергонезависимой памяти
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
DATA0 |
+0х04 |
|
Чтение/запись |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:0 - DATA[7:0]: байт 0 данных энергонезависимой памяти
В данном регистре хранится значение байта 0 данных, участвующих в доступе к любой ячейке памяти.
4.15.7. CMD - регистр команды энергонезависимой памяти
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CMD |
+0х0A |
|
Чтение/запись |
Чт. |
Чт. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Бит 7 - Res: резервный бит
Данный бит не задействован и зарезервирован для будущего использования. Для совместимости с последующими МК, при выполнении записи в этот регистр, в данный бит необходимо записывать 0.
- Биты 6:0 - CMD[6:0]: команда энергонезависимой памяти
Данные биты определяют команды программирования flash-памяти. Шестой бит используется в командах внешнего программирования. Описание команд программирования приведено в разделе 30 "Программирование запоминающих устройств".
4.15.8. CTRLA - Регистр A управления энергонезависимой памятью
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CTRLA |
+0х0B |
|
Чтение/запись |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Зап. (установка) |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:1 - Res: резервные биты
Данные биты не задействованы и зарезервированы для будущего использования. Для совместимости с последующими МК, во время выполнения записи в регистр всегда записывайте в данные биты нули.
- Бит 0 - CMDEX: запуск исполнения команды энергонезависимой памяти
Запись единицы в данный бит инициирует выполнение хранящейся в регистре CMD команды. Данный бит защищен механизмом защиты от изменения конфигурации, рассмотренный в 3.12 "Защита от изменения конфигурации".
4.15.9 CTRLB - Регистр В управления энергонезависимой памятью
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CTRLB |
+0х0C |
- |
- |
- |
- |
EEMAPEN |
FPRM |
EPRM |
SPMLOCK |
|
Чтение/запись |
Чт. |
Чт. |
Чт. |
Чт. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:4 - Res: резервные биты
Данные биты не задействованы и зарезервированы для будущего использования. Для совместимости с последующими МК, во время выполнения записи в регистр всегда записывайте в данные биты нули.
- Бит 3 - EEMAPEN: Разрешение отображения EEPROM в памяти данных
Запись в данный бит единицы активизирует опцию отображения EEPROM в памяти данных. После этого, EEPROM будет доступна с помощью инструкций чтения и записи.
- Бит 2 - FPRM: режим снижения энергопотребления Flash-памяти
Запись единицы в данный бит активизирует функцию снижения энергопотребления flash-памяти, что делает ее недоступной, так же как и в режиме SLEEP. Если код исполняется из сектора прикладной программы, то отключенным окажется загрузочный сектор и, наоборот. Попытка доступа к отключенному сектору приведет к приостановке ЦПУ на время, необходимое для выхода из режима IDLE. Данный бит защищен механизмом защиты от изменения конфигурации, описанный в 3.12 "Защита от изменения конфигурации".
- Бит 1 - EPRM: режим снижения энергопотребления EEPROM
Запись единицы в данный бит активизирует функцию энергосбережения у EEPROM. После этого, также как и при переходе в экономичный режим работы МК, EEPROM отключается. При попытке выполнения доступа шинный мастер будет приостановлен, на время, которое равно задержке возобновления нормальной работы МК из режима IDLE. Данный бит защищен механизмом защиты от изменения конфигурации, описанный в 3.12 "Защита от изменения конфигурации".
- Бит 0 - SPMLOCK: блокировка инструкции SPM
Бит блокировки инструкции SPM делает возможным отключение функции самопрограммирования flash-памяти. Данный бит очищается во время сброса; программная запись в него нуля не предусмотрена. Бит защищен механизмом защиты от изменения конфигурации, описанный в 3.12 "Защита от изменения конфигурации".
4.15.10. INTCTRL - регистр управления прерываниями энергонезависимой памяти
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
INTCTRL |
+0х0D |
- |
- |
- |
- |
SPMLVL[1:0] |
EELVL[1:0] |
|
Чтение/запись |
Чт. |
Чт. |
Чт. |
Чт. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Чт./Зап. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Биты 7:4 - Res: резервные биты
Данные биты не задействованы и зарезервированы для будущего использования. Для совместимости с более новыми МК, выполняя запись в этот регистр, всегда записывайте нули в резервные биты.
- Биты 3:2 - SPMLVL[1:0]: уровень прерывания по готовности к выполнению инструкции SPM
С помощью данных бит можно разрешить и выбрать уровень прерывания по готовности к выполнению записи во flash-память (подробнее об уровнях прерываний см. в разделе 12 "Прерывания и программируемый многоуровневый контроллер прерываний"). Данное прерывание является прерыванием по уровню и генерируется, когда флаг BUSY регистра STATUS равен нулю. Из этого следует ряд предостережений по использованию данного прерывания. До момента запуска команды энергонезависимой памяти прерывание должно быть отключено, т.к. флаг BUSY может оказаться в состоянии, инициирующем прерывание. Кроме того, во избежание повторной генерации прерывания, его необходимо отключить в процедуре обработки прерывания.
- Биты 1:0 - EELVL[1:0]: уровень прерывания по готовности EEPROM
Данные биты позволяют разрешить прерывание по готовности EEPROM и выбрать его уровень (подробнее об уровнях прерываний см. в разделе 12 "Прерывания и программируемый многоуровневый контроллер прерываний"). Данное прерывание является прерыванием по уровню и запускается, когда флаг BUSY в регистре STATUS равен нулю. Из этого следует ряд предостережений по использованию данного прерывания. До момента запуска команды энергонезависимой памяти прерывание должно быть отключено, т.к. флаг BUSY может оказаться в состоянии, инициирующем прерывание. Кроме того, во избежание повторной генерации прерывания, его необходимо отключить в процедуре обработки прерывания.
4.15.11. STATUS - регистр статуса энергонезависимой памяти
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
STATUS |
+0х04 |
BUSY |
FBUSY |
- |
- |
- |
- |
EELOAD |
FLOAD |
|
Чтение/запись |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- Бит 7 - NVMBUSY: флаг занятости энергонезависимой памяти
Флаг NVMBSY сигнализирует о занятости программированием энергонезависимой памяти, в т.ч. Flash-память, EEPROM, Lock-биты. Сразу после запуска операции программирования данный флаг переходит в высокое состояние и остается в нем до завершения программирования. Сброс флага NVMBSY происходит автоматически после завершения операции программирования.
- Бит 6 - FBUSY: флаг занятости сектора Flash-памяти
Флаг FBUSY сигнализирует об активности какой-либо операции над Flash-памятью (стирание страницы или запись страницы). После запуска операции, флаг FBUSY переходит в высокое состояние и доступ к сектору прикладной программы блокируется. Бит FBUSY автоматически сбрасывается по завершении операции.
- Биты 5:2 - Res: резервные биты
Данные биты являются резервными и всегда считываются с нулевыми значениями. Для совместимости с будущими МК, при выполнении записи в этот регистр, в резервные биты необходимо записывать нули.
- Бит 1 - EELOAD: флаг активности загрузки страничного буфера EEPROM
Флаг статуса EELOAD сигнализирует, что во временный страничный буфер EEPROM выполнена загрузка хотя бы одного байта данных. Установка флага EELOAD происходит сразу после ввода в действие команды загрузки EEPROM и записи байта данных в NVMDR, или же после запуска операции загрузки буфера отображаемого в памяти данных EEPROM. Флаг EELOAD остается установленным до тех пор, пока выполняется операции записи страницы или заполнения страничного буфера.
- Бит 0 - FLOAD: флаг активности загрузки страничного буфера Flash-памяти
Флаг FLOAD сигнализирует о загрузке во временный страничный буфер Flash-памяти хотя бы одного байта данных. Флаг FLOAD устанавливается сразу после ввода команды Flash-памяти и записи байта данных в NVMDR. Флаг остается в установленном состоянии до тех пор, пока выполняется операция записи страницы сектора прикладной программы или загрузочного сектора, или заполнения страничного буфера.
4.15.12. LOCKBITS - регистр Lock-бит энергонезависимой памяти
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
LOCKBITS |
+0х07 |
BLBB[1:0] |
BLBA[1:0] |
BLBAT[1:0] |
LB[1:0] |
|
Чтение/запись |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Чт. |
Начальное значение |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
В данном регистре отображается состояние Lock-бит энергонезависимой памяти, что делает возможным их программный опрос. См. 4.16.6 "LOCKBITS - регистр Lock-бит энергонезависимой памяти".
|