Главная » Микроконтроллеры
Призовой фонд
на август 2019 г.
1. 1000 руб
Паяльник
2. Тестер компонентов MG328
Паяльник
3. 200 руб.
От пользователей

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

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

Организация памяти данных EEPROM ATmega8
Рис.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_read:
     sbic  EECR,EEWE   ;ожидаем пока запись не будет закончена
     rjmp  eeprom_write;предыдущая операция записи  в EEPROM
     out   EEARH,R18   ;задаем адрес ячейки EEPROM, из которую
     out   EEARL,R17   ;необходимо прочитать байт данных
     sbi   EECR,EERE   ;начинаем чтение байта из EEPROM
     in    R16,EEDR    ;извлекаем байт из регистра данных 
     ret

Перейти к следующей части:

Теги:

Котов Игорь Юрьевич Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (2) | Я собрал (0) | Подписаться

0
Валентин #
Я думаю, логично было бы во второй подпрограмме метку обозвать eeprom_read вместо eeprom_write, соответственно и rjmp eeprom_read
Ответить
0
si4karuk #
Самое интересное то, что никто так и не рассказал что такое эта самая энергонезависимая память. Да, считывать с нее да записывать данные, мы научились... Но все же. Кто именно хранит эти данные? Может там маленькие магнитофончики? Или в крутых МК маленькие СиДи плеерочки? Что такое, те самые ячейки? Вот как понять кто именно помнит?
Однажды, один мой знакомый, сказал что там сидят маленькие китайцы и помнят. Потихоньку в это верю...
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
Набор 4WD Kit Bluetooth Мультиметр Mastech MS8268
вверх