Реферат: Разработка и описание работы устройства на PIC-контроллере
--PAGE_BREAK--Рисунок 3.3 — Блок-схема порта А, линии RA4 (а) и RA0-RA3 (b)
Двунаправленный порт В, регистры PORTB и TRISB
Порт В представляет собой 8-битный двунаправленный порт. Выходные значения записываются в регистр-защелку PORTB. Направление ввода-вывода определяется установкой или сбросом битов регистра TRISB. Установка бита в 1 настраивает соответствующую линию на ввод, переводя выходной драйвер в высокоимпедансное состояние, а-0 — на вывод. При включении питания все линии по умолчанию настроены на ввод. Как и для порта А, чтение порта В всегда возвращает действительные значения на выводах, независимо от направления передачи данных для каждого вывода.
Все выводы порта В имеют встроенную отключаемую нагрузку в виде резисторов, подключенных к шине питания (подтягивающие резисторы). Нагрузка включается и отключается одновременно для всех выводов при помощи бита 7 RBPU регистра OPTION_REG. При включении питания RBPU= 1 и нагрузка отключена. Программное обнуление бита RBPU подключает нагрузку, но для линий, настроенных на вывод нагрузка автоматически отключается.
Линии RB4...RB7 могут использоваться как входы прерывания по изменению уровня. В этом качестве используются только линии, настроенные на ввод. В каждом командном цикле происходит сравнение текущих значений на выводах с предыдущими, зафиксированными в специальной защелке. Если хотя бы на одном из этих выводов произошло изменение уровня, формируется прерывание. Длительность импульса, который распознается как изменение уровня, должна быть не менее 4-х периодов тактовой частоты. Программно распознать, по какой из линий RB4...RB7 произошло прерывание, невозможно.
Это прерывание выводит контроллер из состояния SLEEP.
<img width=«535» height=«400» src=«ref-1_1565047855-18954.coolpic» v:shapes=«Рисунок_x0020_97»>
Рисунок 3.4 — Блок-схема порта В, линии RB7-RB4 (а) и RB3-RB0 (b)
Модуль TIMER0 и регистр TMR0
TIMER0 является программируемым модулем таймера/счетчика. Он имеет в своем составе:
-8-битный таймер/счетчик TMR0, доступный для чтения и записи как регистр,
-программируемый предварительный делитель (предделитель) мультиплексор входного сигнала
-генератор прерывания по переполнению регистра TMR0 с FFh в 00h.
Предделитель
Предделитель является 8-битным счетчиком, который также может быть использован, как выходной делитель (постделитель) сторожевого таймера. Если предделитель подключен к модулю TIMER0, то он не может использоваться со сторожевым таймером, и наоборот. Когда предделитель подключен к таймеру/счетчику, все команды, использующие запись в регистр TMR0, обнуляют предделитель. Если предделитель подключен к сторожевому таймеру, они обнуляются совместно, командой CLRWDT. Предделитель недоступен для прямой записи или чтения.
Подключение предделителя может быть изменено «на лету», то есть во время выполнения программы.
Работа с 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, а затем выполнить обязательную последовательность команд, рекомендованных изготовителем:
MOVLW55h
MOVWFEECON2; записываем 55h
MOVLWAAh
MOVWFEECON2; записываем AAh
BSFEECON1, 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 не имеют встроенного тактового генератора, работающего без внешних элементов. Для тактирования необходим либо кварцевый резонатор, либо независимый тактовый генератор.
<img width=«371» height=«157» src=«ref-1_1565066809-9340.coolpic» v:shapes=«Рисунок_x0020_96»>
Рисунок 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 пФ.
<img width=«260» height=«99» src=«ref-1_1565076149-4309.coolpic» v:shapes=«Рисунок_x0020_95»>
Рисунок 3.6 — Схема подключения внешнего генератора
При использовании независимого внешнего генератора, его схема может быть любой. Выход генератора подключается к выводу OSC1, вывод OSC2 обязательно должен остаться свободным, в противном случае контроллер может выйти из строя. Контроллер в этом случае настраивается в режим XT, LP или HS.
Если приложение некритично к величине и стабильности тактовой частоты, можно применить недорогой RC-генератор. Резистор и конденсатор являются внешними элементами.
Рекомендуемый номинал резистора лежит в пределах от 5 кОм до 100 кОм. При использовании резистора менее 4 кОм генерация может быть нестабильной или вообще не возникнет. При слишком большом номинале, порядка 1 МОм и выше, на работу генератора начинают влиять внешние наводки и шумы схемы, а также монтажная емкость и влажность платы. Несмотря на то, что генератор может работать вообще без внешнего конденсатора, рекомендуется применять конденсатор с емкостью порядка 20 пФ для увеличения стабильности и помехоустойчивости генератора.
<img width=«329» height=«212» src=«ref-1_1565080458-9549.coolpic» v:shapes=«Рисунок_x0020_94»>
Рисунок 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 в слове конфигурации.
Если питающее напряжение нарастает медленно, может понадобиться внешняя цепь сброса.
<img width=«224» height=«129» src=«ref-1_1565090007-4178.coolpic» v:shapes=«Рисунок_x0020_93»>
Рисунок 3.8 — Внешняя цепь сброса
Организация прерываний
Микроконтроллеры PIC16F84 имеют четыре источника прерываний:
- Внешнее по входу RB0/INT
- Внешнее по изменению состояния одной из линий RB4-RB7 порта В
- Внутреннее по переполнению таймера/счетчика TMR0
- Внутреннее по окончанию записи в EEPROM.
Для каждого из прерываний 1, 2 и 3 существует свой флаг-бит в регистре INTCON, сигнализирующий о поступлении конкретного вида запроса. Для прерывания 4 флаг-бит хранится в регистре EECON1. Анализируя эти биты подпрограмма обработки прерываний, начинающаяся с адреса 0004h, определяет источник прерывания. Кроме этого, в регистре INTCON содержится бит глобального запрета прерываний GIE и биты индивидуального запрета каждого прерывания. Когда бит GIE сброшен, все прерывания запрещены. При включении питания бит GIE по умолчанию сброшен.
Когда поступает прерывание, бит GIE сбрасывается, чтобы не допустить возникновения нового прерывания (поскольку у микроконтроллера PIC16F84 существует только один вектор прерывания), адрес возврата загружается в стек, а в программный счетчик загружается адрес-вектор 0004h. Инструкция возврата из подпрограммы обработки прерывания RETFIE устанавливает бит GIE в единицу, тем самым разрешая прерывания.
Обработка запроса внешнего прерывания может занимать три или четыре командных цикла процессора, в зависимости от того, в какой момент времени обнаружен запрос.
Все флаг-биты прерываний должны быть сброшены программно до того, как прерывания вновь будут разрешены установкой бита GIE. В противном случае может произойти повторный вход в прерывание и зацикливание программы. Также следует помнить, что флаг-биты прерываний устанавливаются в соответствии с прерывающими событиями независимо от того, замаскированы эти прерывания, или нет. Игнорирование этих фактов приводит к достаточно распространенным ошибкам программирования, которые могут проявить себя не сразу.
Энергосберегающий режим SLEEP.
Микроконтроллер переводится в режим SLEEP при выполнении специальной команды SLEEP. Если сторожевой таймер включен, то он обнуляется и начинает отсчет задержки заново. В регистре STATUS сбрасывается бит PD и устанавливается бит ТО. Тактовый генератор отключается. Выводы портов сохраняют состояние, которое было непосредственно перед исполнением команды SLEEP.
Пробуждение из режима SLEEP.
Процессор может быть выведен из режима SLEEP тремя различными способами:
- внешним сбросом по входу MCLR;
- при переполнении сторожевого таймера (если он включен);
- прерыванием по входу RB0/INT, по изменению состояния входов RB4-RB7 или по окончанию записи в EEPROM.
Событие 1 приводит к сбросу процессора и исполнению программы с начального адреса. Два остальных события приводят к продолжению исполнения программы. Во время исполнения команды SLEEP процессор загружает в буфер команд следующую команду (РС+1). Чтобы контроллер вышел из режима SLEEP по прерыванию, оно должно быть разрешено соответствующими битами.
Порядок пробуждения по прерыванию зависит от состояния бита GIE. Если этот бит сброшен, то после пробуждения выполняется команда, следующая за командой SLEEP (и уже загруженная в буфер) и далее по порядку. Если бит GIE установлен в 1, то сначала исполняется команда, загруженная в буфер, а затем процессор переходит на адрес-вектор прерывания 0004h. Если исполнение команды, следующей за SLEEP, при выходе по прерыванию нежелательно, то сразу после команды SLEEP должна следовать команда NOP.
Система команд
Каждая команда контроллера PIC16F84 представляет собой 14-битное слово, состоящее из кода команды (OPCODE) и одного или нескольких операндов.
f — Адрес специального регистра или регистра пользователя. Диапазон значений от 0x00 до 0x7F. Фирменный ассемблер допускает применять вместо цифровых значений непосредственно имена регистров, определенные ранее.
W — Рабочий регистр (аккумулятор)
b — Битовый адрес, используемый с 8-битным регистром, и указывающий внутри регистра на бит, с которым выполняется битовая операция. В ассемблерном тексте обозначает константу, представленную в двоичном счислении.
k — Литерал, константа или метка.
d — Указатель приемника результата операции. Если d=0, результат сохраняется в W, если d= 1, результат сохраняется в регистре, объявленном в команде. По умолчанию d=l. Никакой другой регистр, кроме используемого в операции, не может быть назначен приемником. Фирменный ассемблер для большей наглядности допускает применять вместо значений 0 и 1 соответственно символы w и f.
Таблица 3.6 — Система команд микроконтроллера PIC16F84
Мнемоника
операнды
Расшифровка мнемоники
Количество
циклов
Изменяемые
регистры
Примечание
БАЙТОВЫЕ ОПЕРАЦИИ С РЕГИСТРАМИ
ADDWF f, d
Add W and F
1
C, DC, Z
1,2
ANDWF f, d
AND W with F
1
Z
1,2
CLRF f
Clear F
1
Z
2
CLRW
Clear W
1
Z
СОМF f, d
Complement F
1
Z
1,2
DECF f, d
Decrement F
1
Z
1,2
DECFSZ f, d
Decrement F, Skip if Zero
1(2)
1,2,3
INCF f, d
Increment F
1
Z
1,2
INCFSZ f, d
Increment F, Skip if Zero
1(2)
1,2,3
IORWF f, d
Inclusive OR W with F
1
Z
1,2
MOVF f, d
Move F
1
Z
1,2
MOVWF f
Move W to F
1
NOP
No Operation
1
RLF f,d
Rotate Left F through carry
1
C
1,2
RRF f,d
Rotate Right through carry
1
C
1,2
SUBWF f, d
Subtract W from F
1
C, DC, Z
1,2
SWAPF f, d
Swap nibbles in F
1
1,2
XORWF f, d
Exclusive OR W with F
1
Z
1,2
Мнемоника
операнды
Расшифровка мнемоники
Количество
циклов
Изменяемые
регистры
Примечание
БИТОВЫЕ ОПЕРАЦИИ С РЕГИСТРАМИ
BCF f, b
Bit Clear F
1
1,2
BSF f, b
Bit Set F
1
1,2
BTFSC f, b
Bit Test F, Skip if Clear
1(2)
3
BTFSS f, b
Bit Test F, Skip if Set
1(2)
3
ОПЕРАЦИИ С ЛИТЕРАЛАМИ И ПЕРЕХОДЫ
ADDLW k
Add Literal and W
1
C, DC, Z
ANDLW k
AND Literal with W
1
Z
CALL k
Call subroutine
2
CLRWDT
Clear Watchdog Timer
1
TO, PD
GOTO k
Go To address
2
IORLW k
Inclusive OR Literal with W
1
Z
MOVLW k
Move Literal to W
1
RETFIE
Return From Interrupt
2
RETLW k
Return with Literal in W
2
RETURN
Return from subroutine
2
SLEEP
Sleep into standby mode
1
TO, PD
SUBLW k
Subtract W from Literal
1
C, DC, Z
XORLW k
Exclusive OR Literal with W
1
Z
Примечания:
1) Когда происходит чтение-модификация-запись портов ввода-вывода, то всегда считывается реальные значения напряжений на выводах, независимо от того, как настроены линии порта и что записано в триггер-защелку. Операция производится над считанным реальным значением и результат записывается в защелку.
2) Когда эта инструкция выполняется над регистром TMR0 и d= 1, предделитель сбрасывается, если подключен к модулю Timer0.
3) Если программный счетчик модифицируется или проверка на условие возвращает истинный результат, инструкция требует два машинных цикла. Второй цикл исполняется процессором как NOP.
3.6.2Микросхема КР142ЕН5А
Микросхема КР142ЕН5А трехвыводный стабилизатор с фиксированным выходным напряжением 5 вольт могут найти применение в широком спектре радиоэлектронных устройств в качестве источниках питания логических систем, измерительной технике, устройств высококачественного воспроизведения и других радиоэлектронных устройств.
Внешние компоненты могут быть использованны для ускарения переходных процессов. Входной конденсатор необходим только в том случае, если регулятор находиться на растоянии более <metricconverter productid=«5 см» w:st=«on»>5 см от фильтрующего конденсатора источника питания.Основные характеристики:
-Допустимый выходной ток 1А
-Не требуются внешние компоненты
-Внутренняя термозащита
-Защита выходного транзистора
-Внутреннее ограничение тока КЗ
Таблица 3.7 — Электрические характеристики КР142ЕН5А
<img width=«551» height=«386» src=«ref-1_1565094185-52336.coolpic» alt=«крен1» v:shapes=«Рисунок_x0020_92»> продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по коммуникациям
Реферат по коммуникациям
Разработка микропроцессорной системы
2 Сентября 2013
Реферат по коммуникациям
Историко-научная основа научных и научно-технических прогнозов на примере люминофоров и особо
2 Сентября 2013
Реферат по коммуникациям
Исследование линейных и нелинейных систем управления
2 Сентября 2013
Реферат по коммуникациям
Разработка системы регулирования температуры смазочного масла турбины
2 Сентября 2013