Память данных EEPROM

Память данных EEPROM

EEPROM предназначена для сохранения данных, которые не должны изменятся после отключения напряжения питания. Эта память отсутствует в некоторых моделях младшего семейства. В целом устройство EEPROM подобно FLASH. Однако EEPROM имеет значительно больший ресурс (до 100000 циклов стирания/записи), и допускает побайтовую адресацию, вместо страничной у FLASH. Время записи в EEPROM для разных моделей находится в пределах 2…9 мс.

Рис.7 Организация памяти данных EEPROM ATmega8

EEPROM-память данных находится в отдельном адресном пространстве, независимом от FLASH и SRAM (см. рис.7). Взаимодействие прикладной программы с EEPROM происходит через 4 РВВ: EEARH, EEARL, EEDR и EECR.

Адрес ячейки памяти в операциях чтения/записи находится в регистрах EEARH (старший байт адреса) и EEARL (младший байт адреса). В моделях с объемом EEPROM до 256 б старший регистр адреса, по понятным причинам отсутствует. Число перед записью в EEPROM помещается в регистр EEDR. B этом же регистре нужно искать байт данных после операции чтения.

Для непосредственного управления процессами чтения/записи служат биты регистра EECR. Этим процедурам должен предшествовать строго определенный порядок действий, как показано в подпрограммах.

; Подпрограмма записи байта данных в EEPROM ; R16 – регистр с байтом данных для записи при входе ; R17 – регистр для передачи младшего байта адреса ; R18 – регистр для передачи старшего байта адреса eeprom_write: sbic EECR,EEWE ;ожидаем пока запись не будет закончена rjmp eeprom_write;предыдущая операция записи в EEPROM out EEARH,R18 ;задаем адрес ячейки EEPROM, в которую out EEARL,R17 ;необходимо записать байт данных out EEDR,R16 ;заносим в регистр данных байт для записи sbi EECR,EEMWE ;разрешаем запись sbi EECR,EEWE ;начинаем запись байта в EEPROM ret ; Подпрограмма чтения байта данных из EEPROM ; R16 – регистр с прочитанным байтом данных на входе ; R17 – регистр для передачи младшего байта адреса ; R18 – регистр для передачи старшего байта адреса eeprom_write: sbic EECR,EEWE ;ожидаем пока запись не будет закончена rjmp eeprom_write;предыдущая операция записи в EEPROM out EEARH,R18 ;задаем адрес ячейки EEPROM, из которую out EEARL,R17 ;необходимо прочитать байт данных sbi EECR,EERE ;начинаем чтение байта из EEPROM in R16, EEDR ;извлекаем байт из регистра данных ret


Категория: Микроконтроллеры
Метки:

Написать коментарий

*
= 4 + 3

Добавить изображение

Последние статьи