Долговременная память данных-констант EEPROM
Память данных-констант EEPROM позволяет прочитать и записать байт информации. При записи байта автоматически стирается предыдущее значение и записывается новое (стирание перед записью). Все эти операции производит встроенный автомат записи EEPROM. Содержимое ячеек этой памяти сохраняется при выключенном питании.
Таблица 1.
Страница 0 | Страница 1 | ||
00 h | IND0 (*) | IND0 (*) | 80 h |
01 h | RTCC | OPTION | 81 h |
02 h | PCL | PCL | 82 h |
03 h | STATUS | STATUS | 83 h |
04 h | FSR | FSR | 84 |
05 h | PORT A | TRISA | 85 h |
06 h | POTR B | TRISB | 86 h |
Продолжение таблицы 1
07 h | //////////// | ///////////// | 87 h |
08 h | ADCON0 | ADCON1 | 88 h |
09 h | ADRES | ADRES2 | 89 h |
0А h | PCLATH | PCLATH | 8А h |
0В h | INTCON | INTCON | 8В h |
0C h 2F h 30 h | 36/68 регистров общего назначения (ОЗУ) ------------------------- | Отображаются на банк 0 -------------------------- | 8С h AF h B0 h CF h |
50 h 7F h | ///////////////////////////////////////// | ///////////////////////////////////////// | D0 h FF h |
(*) - не физический регистр ( Косвенный адрес )
///// - отсутствует, считывается как "0"
Размещение регистров в памяти данных.
Кристалл PIC16F84 имеет память данных-констант 64х8 EEPROM бит, которая позволяет запись и чтение во время нормальной работы (во всем диапазоне питающих напряжений). Эта память не принадлежит области регистров ОЗУ.
Описание специальных регистров PIC 16F84
Таблица 2.
Адрес | Имя | Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 | ||
Банк 0
| |||||||||||
00h | INDF | Используется значение FSR для доступа к памяти данных (не физический регистр) | |||||||||
01h | TMRO | 8-разрядный таймер/счетчик | |||||||||
02h | PCL | Младшие 8 разрядов счетчика команд РС | |||||||||
03h | STATUS2 | IRP | RP1 | RP0 | TO | PD | Z | DC | C |
продолжение таблицы 2
04h | FSR | Регистр косвенной адресации (Указатель адреса) | ||||||||||||||||||||||
05h | PORTA | _ | _ | _ | RA4/ TOCKI | RA3 | RA2 | RA1 | RA0 | |||||||||||||||
06h | PORTB | RB7 | RB6 | RB5 | RB4 | RB3 | RB2 | RB1 | RB0/ INT | |||||||||||||||
07h |
|
| ||||||||||||||||||||||
08h | EEDATA | Регистр данных ППЗУ данных-констант | ||||||||||||||||||||||
09h | EEADR | Регистр адреса ППЗУ данных-констант | ||||||||||||||||||||||
0Ah | PCLATH | – | – | – | Старшие разряды счетчика РС1 | |||||||||||||||||||
0Bh | INTCON | GIE | EEIE | TOIE | INTE | RBIE | TOIF | INTF | RBIF | |||||||||||||||
Банк 1 | ||||||||||||||||||||||||
80h | INDF | Используется значение FSR для доступа к памяти данных (не физический регистр) | ||||||||||||||||||||||
81h | OPTION | RBPU | INTEG | TOCS | TOSE | PSA | PS2 | PS1 | PS0 | |||||||||||||||
82h | PCL | Младшие 8 разрядов счетчика команд РС | ||||||||||||||||||||||
83h | STATUS2 | IRP | RP1 | RP0 | TO | PD | Z | DC | C | |||||||||||||||
84h | FSR | Регистр косвенной адресации (Указатель адреса) | ||||||||||||||||||||||
85h | TRISA | – | – | – | Биты управления портом А | |||||||||||||||||||
86h | TRISB | Биты управления портом В | ||||||||||||||||||||||
87h |
|
| ||||||||||||||||||||||
88h | EECON1 | – | – | – | EEIF | WRERR | WREN | WR | RD | |||||||||||||||
89h | EECON2 | Регистр управления 2 ППЗУ данных-констант (не физический регистр) | ||||||||||||||||||||||
0Ah | PCLATH | – | – | –
| Старшие разряды счетчика РС1 | |||||||||||||||||||
0Bh | INTCON | GIE | EEIE | TOIE | INTE | RBIE | TOIF | INTF | RBIF | |||||||||||||||
Примечания:
1. Старшие разряды программного счетчика РС <12:8> прямо недоступны. Они могут быть записаны или прочитаны только через регистр PCLATH.
2. Низкий уровень сигнала на входе MCLR не изменяет состояния битов PD и TO. Биты сохраняют свое значение, пока не поступит какое-либо иное условие сброс
Доступ к ней осуществляется через два регистра: EEDATA <08h>, который содержит в себе восьмибитовые данные для чтения/записи и EEADR <09h>, который содержит в себе адрес ячейки к которой идет обращение. Дополнительно имеется два управляющих регистра: EECON1 <88h> и EECON2<89h>.
При считывании данных из памяти EEPROM необходимо записать требуемый адрес в EEADR регистр и затем установить бит RD EECON1<0> в единицу. Данные появятся в следующем командном цикле в регистре EEDATA и могут быть прочитаны. Данные в регистре EEDATA защелкиваются. Пример фрагмента программы считывания данных из памяти данных-констант EEPROM приведена ниже:
; Считывание из памяти данных-констант.
Bcf STATUS , RP0 ; Установка банка 0.
Movlw CONFIG_ADDR ;
Movwf EEADR ; Адрес чтения.
|
|
Bsf STATUS , RP0 ; Установка банка 1.
Bsf EECON1 , RD ; Чтение EEPROM.
Bcf STATUS , RP0 ; Установка банка 0.
Movf EEDATA , W ; Считанные данные W.
При записи в память EEPROM, необходимо сначала записать требуемый адрес в EEADR регистр и данные в EEDATA регистр. Затем выполнить специальную обязательную последовательность команд, производящую непосредственную запись:
Movlw 55h ;
Movwf EECON2 ; Запись 55 h.
Movlw AAh ;
Movwf EECON2 ; Запись AA h.
Bsf EECON1 , WR ; Установка бита WR,
; начало цикла записи.
Во время выполнения этого участка программы, все прерывания должны быть запрещены для точного выполнения временной диаграммы. Время записи - примерно 10мс. Фактическое время записи будет изменяться в зависимости от напряжения, температуры и индивидуальных свойств кристалла. В конце записи бит WR автоматически обнуляется, а флаг завершения записи EEIF, он же запрос на прерывание, устанавливается. Пример фрагмента программы записи в память данных-констант EEPROM приведена ниже:
; Запись в память данных-констант.
Bsf Status , RP0 ; Установка банка 1.
Bcf Intcon , GIE ; Запрет прерываний.
; Обязательая последовательность команд.
Movlw 55h ;
Movwf EECON2 ; Запись 55 h.
Movlw Aah ;
Movwf EECON2 ; Запись AA h.
Bsf EECON1, WR ; Установка бита WR,
; начало цикла записи.
;Bsf Intcon , GIE ; Разрешение прерываний.
|
|
Для предотвращения случайных записей в память данных предусмотрен специальный бит WREN в регистре EECON1. Рекомендуется держать бит WREN выключенным, кроме тех случаев, когда нужно обновить память данных. Более того, кодовые сегменты, которые устанавливают бит WREN и те, которые выполняют запись должны храниться на различных адресах, чтобы избежать случайного выполнения их обоих при сбое программы.
Таблица 3.
- | - | - | EEIF | WRERR | WREN | WR | RD |
7 | 6 | 1 | 0 |
Управляющие биты RD и WR запускают соответственно чтение и запись. Они могут быть установлены только программно. Сбрасываются- аппаратно по завершения операций чтения/записи. Запрет программного сброса бита WR предотвращает преждевременное окончание записи.
RD – бит чтения;
RD =1: Запускает чтение памяти данных EEPROM. Чтение занимает один цикл. Устанавливается программно. Обнуляется аппаратно.
WR – бит записи;
WR =1: Запускает запись в память данных EEPROM. Устанавливается программно. Обнуляется аппаратно.
WREN – Бит разрешения записи в память данных EEPROM
WREN = 1: Разрешена запись.
WREN = 0: Запрещена запись. После включения питания WREN обнуляется.
Флаг ошибки WRERR устанавливается, когда процесс записи прерывается сигналом сброса /MCLR или сигналом сброса от WDT таймера. Рекомендуем проверять этот флаг WRERR и при необходимости производить перезапись данных, данные и адрес которых сохраняются в регистрах EEDATA и EEADR.
WRERR – флаг ошибки записи;
WRERR = 1: Флаг устанавливается, когда операция записи преждевременно прерывается сигналом сброса /MCLR (во время обычного режима или режима SLEEP) или сигналом сброса WDT во время обычного режима.
Флаг EEIF устанавливается, когда встроенный автомат завершает запись в память данных. Он должен быть сброшен программно.
EEIF – Флаг завершения прерывания;
EEIF=1: флаг устанавливается, когда завершена запись.
Соответствующий бит разрешения прерывания по окончанию записи в EEPROM - EEIF находится в регистре INTCON.
Управляющий регистр EECON2 (Адрес: 89h). Значение после включения – отсутствует, читается как "0") физически отсутствует. При чтении EECON2 считывается "0". Регистр EECON2 предназначен исключительно для использования в последовательности команд, осуществляющей запись в память EEPROM/
Дата добавления: 2018-06-27; просмотров: 180; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!