Основные особенности EEPROM памяти
EEPROM память является энергонезависимой. Это значит, что после записи информации, и отключения питания, данные сохранятся. Пожалуй, самым приятным моментом использования внешней памяти является мысль того, что она есть, и существует дополнительное хранилище для информации. Однако, когда дело доходит до использования, всё становится немного иначе. Необходимо выполнить строгую последовательность действий, предписанных руководством, чтобы «достучаться» и попытаться произвести операцию записи. С чтением дела обстоят немного проще. Да и в целом картина выглядела бы неплохо, если бы процесс не осложнял сам отладчик среды разработки. Автор не решается сказать, кто здесь виноват, но чуть ниже вы убедитесь, что порой придётся «поработать», чтобы добиться результата.
Чтение и запись в EEPROM память выполняется в нормальном режиме работы и не требует остановки МК. За 1 машинный цикл способна выполниться операция с 1 байтом памяти. Операция записи производится по принципу «стирание – запись». Даже когда ячейка пуста, МК сначала производи подготовку, «записывая/стирая» значение типа 0, а потом производит запись информации, время которой, контролируется внутренним таймером, и зависит от напряжения и питания. Доступ к памяти программ, а также все прерывания, во время операции записи запрещёны. Все возникшие прерывания ставятся в очередь, а после завершения операции, происходит переход по соответствующему вектору. Такая последовательность действий обусловлена из-за конвейерной обработки данных. Для доступа к функциям EEPROM памяти существует шесть регистров специального назначения:
· EEDATA;
· EEDATH;
· EEADR;
· EEADRH;
· EECON1;
· EECON2;
Вкратце рассмотри назначение каждого из них.
Регистр EEADR
Регистр EEADR используется для сохранения ячейки памяти данных. Спаренные регистры EEADRH:EEADR содержат 14-разрядные данные для записи или отображают значение из памяти программ при чтении. Также для EEPROM памяти данных должен быть загружен физически реализованный адрес памяти программ, потому что циклическая адресация не поддерживается, то есть адрес 0х4000h отображается как 0х0000h.
Регистр EEDATA
Данные сохраняются/читаются из регистра EEDATA.
Регистры EECON1, EECON2
Относятся к регистрам управления. Регистр EECON1 содержит биты управления косвенной операцией записи/чтения EEPROM памяти данных и FLASH памяти программ. Регистр EECON2 физически не реализован, он используется только при операциях записи с целью предотвращения случайной записи. На рис.6.1. представлена информация об управляющих битах регистра EECON1.
Рис.6.1 – управляющий регистр EECON1
Бит: | Значение: |
Производит выбор памяти, к которой будет выполненное обращение: EEPGD = 0 – обращение к EEPROM памяти; EEPGD = 1 - обращение к FLASH памяти; | |
Не реализован, читается как 0. | |
Не реализован, читается как 0. | |
Не реализован, читается как 0. | |
WRERR – флаг ошибки записи. 0 – состояние – операция завершена; 1 – состояние – операция прервана. Возможно причинной послужил сигнал сброса. | |
WREN – применяется для разрешения/запрещения записи. 0 – операция записи запрещена. 1 – операция записи разрешена. Аппаратно сбрасывается в 0, по завершении операции записи. | |
WR – инициализация записи данных. Возможно установить программно 1, что будет служить признаком начала инициализации. 0 – запись завершена. 1 – начать процесс инициализации записи. Сбрасывается автоматически, после завершения инициализации. | |
RD - инициализирует операцию чтения из указанной памяти. 1 – инициализировать чтение. Сбрасывается автоматически по завершении операции. При чтении из EEPROM памяти, данные будут доступны в регистре EEDATA в следующем машинном цикле, после установки бита. При чтении FLASH памяти программ, данные будут доступны на 2 машинном цикле. 0 – чтение завершено. |
Первоначальное знакомство завершено. В следующем разделе представлены примеры операций чтение/запись с EEPROM памятью.
Использование EEPROM памяти
Операции чтения/записи с EEPROM памятью довольно сложно выполнимы. Операция записи имеет высший приоритет, поэтому рассмотрим её первой.