Рефераты. Разработка и описание работы устройства на PIC-контроллере

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

Работа с EEPROM

Память данных EEPROM доступна для чтения и записи во всем рабочем диапазоне питающих напряжений и предназначена для хранения 8-битных значений. Перед записью нового значения предыдущее стирается. Микроконтроллеры PIC16F84 имеют 64 байта EEPROM с адресами от 00h до 3Fh, но эти ячейки недоступны путем прямой адресации в адресном пространстве микроконтроллера. Для доступа к ним используется косвенная регистровая адресация через специальные регистры. Всего при работе с EEPROM используется четыре специальных регистра:

-EECON1

-EECON2

-EEDATA

-EEADR

Регистр обмена EEDATA содержит 8-битные данные чтения/записи. EEADR хранит адрес ячейки, к которой происходит обращение. Несмотря на то, что в PIC16F84 физически существует только 64 байта EEPROM, декодируются все биты адреса. Поэтому необходимо следить за значением в EEADR, чтобы не выйти за пределы адресного пространства. При записи в EEPROM требуется строго выдерживать временной интервал, который контролируется встроенным таймером. Время записи может варьироваться от кристалла к кристаллу, а также в зависимости от питающего напряжения и температуры.

Когда у микроконтроллера установлен бит защиты кода, процессор может читать и записывать EEPROM, но для программатора эта память становится недоступна.

Регистры EECON1 и EECON2

Регистр EECON1 является контрольным регистром, у которого физически доступны младшие пять бит. Старшие три недействительны и всегда читаются как "0".

bit 7-5 Физически недоступны, всегда читаются как "0"

bit 4 EEIF - флаг прерывания по окончанию записи

 1 = запись завершена (должен быть сброшен программно)

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

bit 3 WRERR - флаг ошибки записи в EEPROM

 1 = запись преждевременно прервана

 0 = запись прошла успешно

bit 2 WREN - разрешение записи в EEPROM

 1 = разрешен цикл записи

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

bit1 WR - бит управления записью

 1 = начать цикл записи. Программная установка бита является командой начать цикл записи. Сбрасывается этот бит только аппаратно, когда цикл записи окончен.

 0 = цикл записи данных завершен

bit1 RD - бит управления чтением

 1 = начать чтение данных из EEPROM. Чтение занимает один командный цикл. Программная установка бита является командой начать чтение. Бит сбрасывается только аппаратно.

 0 = чтение не начато

Невозможность программно сбросить бит WR предохраняет от случайного преждевременного прерывания цикла записи, поскольку этот цикл занимает несколько машинных тактов.

Бит WREN при включении питания сброшен, что предохраняет от случайной записи. Бит WRERR устанавливается, когда операция записи прервана сбросом по входу MCLR или сбросом по переполнению сторожевого таймера. В этом случае, при повторном старте, пользователь может проверить бит WRERR и, при необходимости, повторить запись. Данные и адрес в регистрах EEDATA и EEADR при сбросе не теряются.

Регистр EECON2 не является физическим регистром и используется исключительно в качестве служебного регистра при записи. Чтение этого регистра всегда возвращает значение "0".

Чтение данных из EEPROM

Для чтения данных необходимо записать адрес в регистр EEADR и установить бит RD регистра EECON1. В следующем цикле данные уже доступны для чтения из регистра EEDATA. Прочитанные данные хранятся в этом регистре, пока не будут прочитаны новые данные или пока в него не будут занесены данные для записи.

Запись данных в EEPROM

Для записи данных в EEPROM необходимо сначала записать адрес в регистр EEADR и данные для записи в регистр EEDATA, а затем выполнить обязательную последовательность команд, рекомендованных изготовителем:

MOVLW 55h

MOVWF EECON2 ;записываем 55h

MOVLW AAh

MOVWF EECON2 ;записываем AAh

BSF EECON1, WR ;старт записи данных

Процесс записи не будет инициирован, если не будет выполнена поочередная запись 55h и AAh в регистр EECОN2. перед тем, как установить бит WR. Изготовитель настоятельно рекомендует запрещать все прерывания на момент исполнения этого фрагмента программы. Если прерывания в работе устройства вообще не используются, то нет надобности в запрете и последующем разрешении прерываний, так как по включению питания все прерывания запрещены.

Бит WREN не сбрасывается аппаратно, поэтому его необходимо сбросить программно после окончания записи всех данных. Этот бит предохраняет от записи случайных данных в EEPROM, например, при сбое программы. Необходимо тщательно следить, чтобы этот бит был сброшен всегда, когда не производится запись данных. Сброс бита WREN во время начатого цикла записи не повлияет на его успешное завершение.

Слово конфигурации CPU

Слово конфигурации расположено по адресу 2007h. Этот адрес находится за пределами пользовательской памяти программ и входит в состав специального адресного пространства (2000h - 3FFFh), которое доступно только для программатора во время программирования. Слово конфигурации содержит 14 бит.

bit 13-4 СР - бит защиты программного кода

 1 = защита отключена

 0 = защита установлена

bit 3 PWRTE - бит разрешения задержки при включении питания

 1 = задержка отключена

 0 = задержка включена

bit 2 WDTE - бит включения сторожевого таймера

 1 = сторожевой таймер включен

 0 = сторожевой таймер выключен

bit 1-0 FOSC1-FOSC0 - бит выбора режима тактового генератора

 11= RC-генератор

 10 = HS резонатор

 01 = XT резонатор

 00 = LP резонатор

Обозначения резонаторов в данном случае следующие: XT - стандартный кварцевый или керамический резонатор 4МГц, LP - низкочастотный (обычно часовой, 32768Гц) резонатор для экономичных приложений, HS - высокочастотный кварцевый резонатор 10МГц, RC - генератор на основе внешней RC-цепочки.

Внешние источники тактовой частоты.

Микроконтроллеры PIC16F84 не имеют встроенного тактового генератора, работающего без внешних элементов. Для тактирования необходим либо кварцевый резонатор, либо независимый тактовый генератор.


Рисунок 3.5 - Схема подключения кварцевого резонатора


Для нормальной работы собственного генератора требуется кварц, работающий на частоте параллельного резонанса.


Таблица 3.5 - Значения емкостей С1 и С2 для кварцевых резонаторов

Режим

Частота

С1,С2

LP

32 кГц

200 кГц

68-100пФ

15-ЗЗпФ

XT

100 кГц

2.0 МГц

4.0 МГц

100-150 пФ

15 - 33 пФ

15-ЗЗпФ

HS

8.0 МГц

10. 0 МГц

15-ЗЗпФ

15-ЗЗпФ


При напряжении питания больше 4,5 В изготовитель рекомендует применять конденсаторы со значениями С1 = С2 = 30 пФ.


Рисунок 3.6 - Схема подключения внешнего генератора


При использовании независимого внешнего генератора, его схема может быть любой. Выход генератора подключается к выводу OSC1, вывод OSC2 обязательно должен остаться свободным, в противном случае контроллер может выйти из строя. Контроллер в этом случае настраивается в режим XT, LP или HS.

Если приложение некритично к величине и стабильности тактовой частоты, можно применить недорогой RC-генератор. Резистор и конденсатор являются внешними элементами.

Рекомендуемый номинал резистора лежит в пределах от 5 кОм до 100 кОм. При использовании резистора менее 4 кОм генерация может быть нестабильной или вообще не возникнет. При слишком большом номинале, порядка 1 МОм и выше, на работу генератора начинают влиять внешние наводки и шумы схемы, а также монтажная емкость и влажность платы. Несмотря на то, что генератор может работать вообще без внешнего конденсатора, рекомендуется применять конденсатор с емкостью порядка 20 пФ для увеличения стабильности и помехоустойчивости генератора.


Рисунок 3.7 - Схема внешнею RC-генератора


Частота тактового генератора зависит от мигающего напряжения, номиналов резистора и конденсатора и варьируется от кристалла к кристаллу.

В режиме RC с вывода OSC2/CLKOUT можно снимать импульсы с частотой одна четвертая от тактовой и использовать эти импульсы для тактирования или синхронизации остальной схемы.

Когда контроллер настроен в режим RC, на его вывод OSC1/CLKIN нельзя подавать импульсы от внешнего генератора, так как можно вывести кристалл из строя.

Организация сброса.

Для PIC16F84 доступны следующие пять вариантов сброса:

-              Сброс по включению питания

-              Сброс по входу MCLR во время нормальной работы

-              Сброс по входу MCLR в режиме SLEEP

-              Сброс по переполнению сторожевого таймера (WDT) во время нормальной работы

-              Сброс по переполнению сторожевого таймера (WDT) в режиме SLEEP

Если питающее напряжение при включении устанавливается достаточно быстро, не дольше, чем за 70мс, то можно обойтись без внешней цепи сброса и подключить вывод MCLR непосредственно к плюсовой шине питания. При достижении питающим напряжением уровня 1.2-1.7V сформируется внутренний сигнал сброса и начнется отсчет времени задержки сброса специальным внутренним таймером PWRT (Power-up timer). За это время питающее напряжение должно подняться до нормального рабочего уровня. Таймер PWRT работает от независимого встроенного RC-генератора, время задержки равняется примерно 72мс и может несколько изменяться от кристалла к кристаллу, а также в зависимости от температуры. После окончания задержки таймера PWRT включается таймер запуска основного тактового генератора, но он тактируется непосредственно от этого генератора и отсчитывает 1024 импульса.

Таймер PWRT может быть включен или выключен изменением бита PWRTE в слове конфигурации.

Если питающее напряжение нарастает медленно, может понадобиться внешняя цепь сброса.

Страницы: 1, 2, 3, 4, 5



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.