Читайте также:
|
|
Энергонезависимая 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. Организация стековой памяти
Дата добавления: 2015-07-08; просмотров: 352 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
FLASH память программ | | | Разработка алгоритма программы |