.
В качестве примера, можно рассмотреть конструкцию «Генератор кодов Морзе», где данный программный прием работает для сохранения пользовательских настроек (сохраняются скорость и тональность генератора). За счет применения EEPROM памяти данных отпадает необходимость в настройке параметров генератора, при включении микроконтроллера.
Объем памяти данных в семействе микроконтроллеров PIC18XXXX в основном не велик и составляет 256 байт. На самом деле это не так и мало и вполне достаточно для большинства приложений . Опять же, если взять тот же генератор кодов Морзе, то в нем используется всего три байта памяти. В случае необходимости можно подобрать МК с большим объемом, к примеру PIC18F2525, где EEPROM память ровняется 1024 байтам.
Для работы с памятью данных EEPROM задействованы практически те же регистры специального назначения, что и при работе с Flash памятью программ.
Это:
Чтение из EEPROM памяти данных.
Для чтения байта из EEPROM памяти данных необходимо записать адрес выбранной ячейки в регистр EEADR, сбросить бит EEPGD ( EECON1,7) и установить в "1" бит RD (EECON1,0) и в следующем машинном цикле значение выбранной ячейки будет дуступно в регистре EEDATA, которое для удобства (не обязательно) копируем в регистр W.
ПП чтения байта из EEPROM памяти данных.
movlw .4 ; = Выбираем ячейку с адресом 04h movwf EEADR ; (пример, можно другой адрес)= call R_EEPROM ; Вызываем ПП результат в W ;----------------------------------- ; Читаем байт из EEPROM ;----------------------------------- R_EEPROM bcf EECON1,EEPGD ; Работа с EEPROM. bcf EECON1,CFGS ; Обращение к EEPROM памяти программ bsf EECON1,RD ; Инициализация чтения. movf EEDATA,W ; Считывание байта, из выбранной ячейки. return ; Возврат из ПП.
Запись в EEPROM память данных.
При включенной защите запрещена запись/чтение EEPROM памяти данных внешними устройствами (программаторами) . В то же время программа пользователя может нормально функционировать вне зависимости от состояния защиты, т.е. работает в обычном режиме.
После окончания записи бит WR регистра EECON1 аппаратно сбрасывается в "0", а флаг прерывания EEIF регистра PIR2 (смотреть статью "Прерывания в семействе PIC18 xxxx") устанавливается в "1".
В случае привлечения флага для проверки завершения цикла записи, его по окончанию записи необходимо сбросить в "0", т.к. флаг сбрасывается программно.
Для записи в EEPROM памяти данных необходимо сделать следующее:
ПП записи байта в EEPROM память данных.
movlw .4 ; =адрес ячейки в EEPROM movwf EEADR ; (выбран для примера, может быть любой другой)= movlw .7 ; = данные для записи в EEPROM movwf EEDATA ; (выбран для примера)= call W_EEPROM ; результат в EEPROM..... в EEPROM по адресу 04h ;----------------------------------- ;Запись байта данных в EEPROM ;----------------------------------- W_EEPROM bcf EECON1,EEPGD ; Работа с EEPROM. bcf EECON1,CFGS ; Обращение к EEPROM памяти программ bsf EECON1,WREN ; Разрешение записи. bcf INTCON,GIE ; Запрет прерывания movlw 0x55 ; =Обязательная movwf EECON2 ; последовательность movlw 0xAA ; команд movwf EECON2 ; записи.= bsf EECON1,WR ; Инициализация записи. bsf INTCON,GIE ; Разрешение прерывания btfsc EECON1,WR ; Запись завершена? goto $-.2 ; Нет.Ждем. bcf EECON1,WREN ; Запрещение записи. return ; Возврат из ПП.
Видеоурок по теме....
Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2021 © ChipMK.ru
![]() |
|