Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Энергонезависимая память данных EEPROM

Поиск

Энергонезависимая EEPROM память данных предназначена для хранения информации, которая должна сохраняться даже при отключении электропитания микроконтроллера. EEPROM память может быть перезаписана большее количество раз по сравнению с FLASH. Минимальное число циклов стирание/запись EEPROM составляет 100 тысяч, а FLASH памяти – всего 1 тысяча.

Карта памяти EEPROM приведена на рис. 2.3.

 

Рис. 2.3. Организация энергонезависимой

памяти данных EEPROM

 

Для чтения и записи информации в EEPROM память данных и во FLASH память программ используются регистры специального назначения: EEDATA – регистр данных (младший байт данных при обращении к 14-разрядной памяти программ), EEDATH – старший байт данных при обращении к памяти программ, EEADR – регистр адреса (младший байт адреса при обращении к 4К памяти программ), EEADRH – старший байт адреса при обращении к памяти программ, EECON1 – первый регистр управления EEPROM (FLASH), EECON2 – второй регистр управления EEPROM (FLASH), INTCON – регистр управления прерываниями, PIE2 – второй регистр разрешения прерываний и PIR2 –второй регистр флагов прерываний.

Для чтения данных из EEPROM необходимо выполнить следующую последовательность действий:

– записать адрес необходимой ячейки памяти в регистр EEADR;

– сбросить в «0» бит EEPGD в регистре EECON1;

– инициировать операцию чтения путем установки в «1» бита RD в регистре EECON1;

– считать полученные данные из регистра EEDATA.

Чтение данных из FLASH памяти программ осуществляется аналогично, последовательность действий при этом немного сложней:

– записать младший байт адреса необходимой ячейки в регистр EEADR, а старший – в регистр EEADRH;

– установить в «1» бит EEPGD в регистре EECON1;

– инициировать операцию чтения путем установки в «1» бита RD в регистре EECON1;

– сформировать выдержку времени длительностью два машинных цикла, например путем выполнения двух холостых команд NOP;

– считать младший байт полученных данных из регистра EEDATA, а старший – из регистра EEDATH.

Последовательность действий при записи информации в EEPROM следующая:

1. Проверить состояние бита WR в регистре EECON1 и убедиться, что он равен «0», те есть в настоящий момент не производится запись в EEPROM либо FLASH.

2. Записать адрес нужной ячейки в регистр EEADR.

3. Записать данные в ячейку EEDATA.

4. Сбросить в «0» бит EEPGD в регистре EECON1.

5. Установить в «1» бит WREN в регистре EECON1, разрешив запись в EEPROM.

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

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

– записать значение H'55' в регистр EECON2 (две команды, сначала запись в W, затем в EECON2).

– записать значение H'AA' в регистр EECON2 (две команды, сначала запись в W, затем в EECON2).

– установить в «1» бит WR в регистре EECON1.

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

9. Сбросить в «0» бит WREN в регистре EECON1.

10. По окончании цикла записи автоматически сбрасывается в «0» бит WR регистра EECON1 и взведется в «1» флаг прерывания EEIF в регистре PIR2 (сбрасывается программно).

Не смотря на то, что флаг прерывания взводится после окончания каждого цикла записи обработка прерываний будет инициирована только в том случае если они разрешены установкой в «1» битов GIE и PEIE регистра INTCON и не маскированы (бит EEIE в регистре PIE2 взведен).

 

Стек

Стеком называется область оперативной памяти, организованная по принципу «первым вошел – последним вышел». В микроконтроллерах PIC16 стек используется исключительно для хранения адресов возврата из подпрограмм. В отличии от других микропроцессоров и микроконтроллеров, в микроконтроллерах PIC16 запись данных на стек не предусматривается. Выбор очередной свободной ячейки стековой памяти осуществляется автоматически, указатель стека программно не доступен.

Стек имеет всего восемь 13-разрядных ячеек статической оперативной памяти (рис. 2.4.), следовательно в программе для микроконтроллера PIC16 не должно быть более восьми вложенных подпрограмм, с учетом обработчиков (драйверов) прерываний.

 

 

Рис. 2.4. Организация стековой памяти

 

Порядок выполнения работы

В данной лабораторной работе необходимо разработать и отладить программу, реализующую обращение к определенным областям памяти микроконтроллера PIC16F873A. Конкретное задание выдается преподавателем.

В качестве примера рассмотрим следующее задание: необходимо разработать программу заполняющую все регистры общего назначения банка 0 возрастающими двоичными числами начиная с h'00', и копирующую эти данные в EEPROM.

 

Постановка задачи

Представим исходную словесную форму задания в аналитическом виде. Для этого обозначим буквой N число записываемое в очередной регистр, буквой F адрес регистра, а буквой E адрес ячейки EEPROM. Поскольку адреса РОН в банке 0 начинаются с H'20', а заканчиваются H'7F', то можно записать, что F ⊂ [H'20', H'7F']. Соответственно в этот массив памяти поместятся числа от H'00' до H'5F' или N ⊂ [H'00', H'5F']. При копировании в EEPROM будут задействованы ячейки с адресами E ⊂ [H'00', H'5F']. Также можно записать: [ F 0]=0, [ Fi ]= Ni, [ Fi +1]= Ni +1, [ Ei ]=[ Fi ]. В последних формулах квадратные скобки обозначают, что буквами F и E обозначены не адреса ячеек памяти, а содержимое ячеек памяти с этими адресами.



Поделиться:


Последнее изменение этой страницы: 2016-06-06; просмотров: 208; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.34.148 (0.007 с.)