Запись еерrом данных

Пример: Чтение из ЕЕРRОМ памяти данных

Чтение из ЕЕРRОМ-памяти

РАБОТА С ПАМЯТЬЮ РIС16FХХХ

Память делится на:

- память программ;

- flash-память;

- оперативная память.

Доступ к функциям записи/чтения ЕЕРRОМ памяти данных и FLASH памяти программ выполняется через шесть регистров специального назначения:

- ЕЕDАТА;

- ЕЕDАТН;

- ЕЕАDR;

- ЕЕАDRН;

- ЕЕСОN1;

- ЕЕСОN2.

Операции чтения/записи ЕЕРRОМ памяти данных не приостанавливают выполнение программы. В регистре ЕЕАDR сохраняется адрес ячейки ЕЕРRОМ памяти данных. Данные сохраняются/читаются из регистра ЕЕDАТА. В микроконтроллерах РIС16F873/874 объем ЕЕРRОМ памяти 128 байт. Старший бит адреса в регистре ЕЕАDR всегда должен равняться нулю, потому что не поддерживается циклическая адресация (т.е. ячейка с адресом 0х80 не отображается на 0х00). В РIС16F876/877 объем ЕЕРRОМ памяти данных 256 байт (используются все 8-разрядов регистра ЕЕАDR).

Чтение FLASH памяти программ не влияет на выполнение программы, а во время операции записи выполнение программы приостановлено. В спаренных регистрах ЕЕАDRН:ЕЕАDR сохраняется 13-разрядный адрес ячейки памяти программ, к которой необходимо сделать обращение. Спаренные регистры ЕЕАDRН:ЕЕАDR содержат 14-разрядные данные для записи или отображают значение из памяти программ при чтении. Также как для ЕЕРRОМ памяти данных, в регистры ЕЕАDRН:ЕЕАDR должен быть загружен адрес физически реализованной памяти программ, потому что циклическая адресация не поддерживается.

При работе с памятью не выполняется проверка на правильность и качество записи. Если попадается некорректное значение адреса или данных, то выполняется NОР.

ЕЕРRОМ рассчитана на 100 000 циклов чтения/записи, а flash-память на 10000 циклов.

1. Записать адрес в регистр ЕЕАDR. Проверить, что записанный адрес корректен для данного типа микроконтроллера.

2. Сбросить в '0' бит ЕЕРGD для обращения к ЕЕРRОМ памяти данных.

3. Инициализировать операцию чтения установкой бита RD в ‘1’.

4. Прочитать данные из регистра ЕЕDАТА.

BSF STATUS.RP1;

BCF STATUS.RPO; Выбрать банк 2

MOVF ADDR.W; Записать адрес

MOVWF EEADR; ячейки

BSF STATUS.RFO; Выбрать банк 3

BCF EECON1.EEPGD; Выбрать EEPROM память

BSF EECON1.RD; Инициализировать чтения

BCF STATUS.RPO; Выбрать банк 2

MOVF EEDATA.W; W = EEDATA

1. Если шаг 10 не был выполнен, то необходимо проверить, что не происходит запись (WR=0).

2. Записать адрес в регистр ЕЕАDR. Проверьте, что записанный адрес корректен для данного типа микроконтроллера.

3. Записать 8-разрядное значение в регистр ЕЕDАТА.

4. Сбросить в '0' бит ЕЕРGD для обращения к ЕЕРRОМ памяти данных.

5. Установить бит WREN в ‘1’, разрешив запись в ЕЕРRОМ память.

6. Запретить прерывания, если они разрешены.

7. Выполнить обязательную последовательность из пяти команд:

- Запись значения 55h в регистр ЕЕСОN2 (две команды, сначала в W затем в ЕЕССЖ2):

- Запись значения ААh в регистр ЕЕСОN2 (две команды, сначала в W затем в ЕЕСON2);

- Установить бит WR в ‘1’.

8. Разрешить прерывания (если необходимо).

9. Сбросить бит WREN в ‘0’.

10. После завершения цикла записи сбрасывается в '0' бит WR, устанавливается в ‘1’ флаг прерывания ЕЕIF (сбрасывается программно). Если шаг 1 не выполняется, то необходимо проверить состояние битов ЕЕIF, WR перед началом записи.


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



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