Вторник, 22 мая 2012 10:54

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

Written by
Rate this item
(0 votes)

Практически все микроконтроллеры семейства  PIC18XXXX  имеют встроенную  энергонезависимую EEPROM память данных, доступную для чтения и записи (т.е. по ходу исполнения программы  можно по-байтно записать/прочитать необходимые данные)EEPROM память в основном применяется  для хранения различных  констант, программных настроек, шрифтов и т.д.. 

 

В качестве примера,  можно рассмотреть конструкцию «Генератор кодов Морзе»,  где данный программный прием работает для сохранения пользовательских настроек (сохраняются скорость и тональность генератора). За счет применения 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                 ; Возврат из ПП.

Видеоурок по теме....

 

 


 

Регистр EECON1.

 

Регистр содержит биты управления EEPROM памяти данных.

 

Важно:

Сброс по включению питания   микроконтроллера (POR) и сброс по снижению питания (BOR) приводит к сбросу  битов управления регистра EECON1, за исключением битов 3,6,7,  которые принимают неизвестное состояние.

R/W-X R/W-X U-0 R/W-0 R/W-X R/W-0 R/S-0 R/S-0
EEPGD CFGS - FREE WRERR WREN WR RD
Бит7 Бит6 Бит5 Бит4 Бит3 Бит2 Бит1 Бит0

Бит7   EEPGD:  Обращение к Flash памяти программ или EEPROM памяти данных

 

           1= Обращение к Flash памяти программ

           0= Обращение к EEPROM памяти данных

 

Бит6   CFGS: Обращение к Flash памяти программ /EEPROM памяти данных или

                           к регистрам конфигурации

 

           1= Обращение к регистрам конфигурации

           0= Обращение к Flash памяти программ/EEPROM памяти данных

 

Бит5  Не используется. Читается как 0

 

       

Бит4   FREE: Разрешение стирания Flash  памяти программ

 

           1= стереть блок памяти программ начиная с адреса TBLPTR при следующей

                  команде WR (сбрасывается аппаратно при окончании стирания)

           0= Только запись данных

 

Бит3   WRERR: Флаг ошибки записи в память

 

           1= Запись прервана (произошел один из сбросов во время исполнения записи)

           0= Запись завершена

             Примечание. При установке бита WRERR биты EEPGD,CFGS не сбрасываются, что позволяет определить

                                       условные ошибки.

 

Бит2  WREN: Разрешение записи в память

 

           1= Запись разрешена

           0= Запись запрещена

 

Бит1 WR: Управляющий бит записи

 

           1= Инициализация цикла стирания/запись в EEPROM память данных.

                Для памяти программ инициализация цикла записи или стирания. Бит сбрасывается

                     аппаратно по завершении операции стирания/записи, программно он может быть только установлен в "1"

           0= цикл стирание/запись завершен

 

 

Бит0  RD: Управляющий бит чтения

1= Инициализация чтения   EEPROM памяти данных. Чтение выполняется за один цикл.

       Бит RD сбрасывается аппаратно. программно он может только установлен в "1" . RD  не

       устанавливается  в "1", если EEPGD=1

      

          0= Чтение EEPROM памяти данных не инициализировалось

Read 1949 times Last modified on Воскресенье, 10 августа 2014 12:32

Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

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