EEROM память данных PIC18XXXX.

Автор: Super User Просмотров: 3688

 

В качестве примера,  можно рассмотреть конструкцию «Генератор кодов Морзе»,  где данный программный прием работает для сохранения пользовательских настроек (сохраняются скорость и тональность генератора). За счет применения EEPROM памяти данных отпадает необходимость в настройке параметров генератора, при  включении микроконтроллера.

Объем памяти данных  в семействе микроконтроллеров PIC18XXXX  в основном не велик и составляет 256 байт. На самом деле это не так и мало и вполне достаточно для большинства приложений  . Опять же,  если взять тот же генератор кодов Морзе, то в нем используется всего три байта памяти.  В случае необходимости можно подобрать МК  с большим объемом, к примеру PIC18F2525,  где EEPROM память ровняется  1024 байтам.

Для работы с памятью данных  EEPROM задействованы практически те же регистры специального назначения, что и при работе  с Flash памятью программ.

Это:

 

  • EECON1 - регистр управления.
  • EECON2 - физ. не риализован,используется в операциях  записи в EEPROM .
  • EEDATA  - байт данных для записи/чтения.
  • EEADR    - байт адреса EEPROM.

 

Чтение из 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 памяти данных  необходимо сделать следующее:

  • записать   адрес выбранной ячейки  в регистр EEADR.
  • записать данные   в регистр EEDATA .
  •  выбрать работать с  EEPROM памяти данных, сбросом в "0" (EECON1,7).
  • установить бит WREN (EECON1,2) в "1" (разрешить запись).
  • запретить прерывания
  • выполнить обязательную последовательность команд.
  • установить бит WR (EECON1,1) для начала записи
  • разрешить прерывание
  • ожидать завершения цикла записи
  • запретить запись сбросом WREN (EECON1,2)

 

 

ПП записи байта в 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-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru