Вы находитесь на странице: 1из 15

Основы систем автоматического

контроля, управления и
регулирования (САК, САУ,САР)
ЛЕКЦИЯ 14. АВТОМАТИЧЕСКОЕ УПРАВЛЕНИЕ.
МИКРОКОНТРОЛЛЕР PIC16F84
 К 1992 году на свет появилось среднее семейство PIC16CXXX. Микроконтроллеры
этого семейства имели уже 14-битную память программ, что облегчало доступ к
памяти данных больших объемов. По сравнению с младшими семействами появились
две новые команды. Был значительно расширен базовый набор периферии -
добавились такие устройства, как 16-битные таймеры, модуль АЦП,
последовательные порты. Также была добавлена поддержка прерываний.
 С точки зрения программирования все устройства с одним и тем же ядром полностью
идентичны. Более того, все ядра, используемые в микроконтроллерах PIC, имеют
очень много общего. С аппаратной точки зрения блоки выборки и исполнения
незначительно отличаются, в частности, поддерживаемым объемом памяти и
построением схем сброса. Отдельные представители семейства имеют схожий
базовый набор портов и модулей периферийных устройств, однако отличаются в части
дополнительных возможностей ввода/вывода. Например, в микроконтроллере
PIC16F73 имеется 5-канальный 8-битный аналого-цифровой преобразователь, в
PIC16F874/7 - уже 8-канальный 10-битный аналого-цифровой преобразователь, а в
PIC16F627 /628 - аналоговый компаратор и 16-битный таймер/счетчик. Однако,
несмотря на эти отличия, существует множество идентичных модулей,
использующихся как в моделях среднего уровня, так и в моделях с расширенным
ядром.
Разновидностями контроллеров мы будем считать их деление по архитектуре. Примем за основу разрядность их ядра.
Первая линейка – это 8-битные контроллеры PIC. Наименование их моделей начинается с префикса PIC10/PIC12/PIC16.
 1. BASELINE – данная архитектура присутствует у контроллеров PIC10. От более мощной серии она отличается
количеством выводов (от 6 до 28), дешевизной.
 2. MID-RANGE – данную архитектуру имеют ядра микроконтроллеров PIC12/PIC16. Количество выводов в данной
серии увеличено (от 6 до 64), стоят они несколько дороже, зато имеют помимо 35 машинных инструкций,
поддерживаемых серией BASELINE, ещё 14 дополнительных инструкций (оптимизированных под компилятор языка
C). Также у данной серии производительность увеличена на 50.
 3. 8-битовые микроконтроллеры PIC18 – это улучшенная серия контроллеров, здесь на борту много другой
периферии, количество выводов от 18 до 100, производительность 16 MIPS, поддержка технологии NanoWatt, наличие
программироуемого генератора.
Вторая линейка – это 16-битные контроллеры PIC. Они имеют префикс PIC24F и PIC24H. Это уже более мощные
контроллеры. В отличие от первой линейки, машинная команда выполняется уже не за 4 такта генератора, а за 2.
Также периферия еще более расширена по разновидностям шин, прямой доступ к памяти DMA (у PIC24H),
расширенный набор инструкций. Также есть очень много других особенностей.
Третья линейка – это 32-битные контроллеры. Префикс у них уже PIC32. Частота тактирования таких контроллеров до
120 МГц, а у новой серии MZ – до 200 и даже выше. Также здесь ещё более увеличена производительность ядра.
Данное семейство построено на ядре MIPS32®, которое также кроме высокой производительности отличается ещё и
низким потреблением энергии.
 В левом верхнем углу сразу бросается в глаза
модуль памяти FLASH, в которой
обычно хранится программа контроллера
(прошивка). А в правом верхнем углу мы
видим память EEPROM, которая уже
используется для хранения данных. Эти два
вида памяти являются энергонезависимыми и
после отключения и сброса контроллера не
стираются. Но данная память не является
быстрой, поэтому код при старте программы
распределяется уже в память RAM (ОЗУ),
которая уже является быстродействующей и
предназначена для функционирования
контроллера при работе. Поэтому данную
память мы уже рассмотрим несколько
поподробнее.
 Оперативная память контроллера PIC делится
на память программ и память данных.
Организация памяти программ у
контроллера PIC16F84A
 Микроконтроллеры данной серии имеют счётчик команд, способный
адресовать 8К x 14 слов памяти программ и 14-разрядную шину
данных памяти программ. Вся память программ разделена на 4
страницы по 2 килослов каждая (0000h-07FFh, 0800h-0FFFh, 1000h-
17FFh, 1800h-1FFFh).
 У контроллеров, которых память небольшая, перемещение между
данными страницами приведёт к циклической адресации. Поэтому
размер памяти того контроллера, который мы хотим программировать,
мы обязаны знать твёрдо. В общем случае память программ состоит из
счётчика команд, стека нескольких уровней, память для хранения
векторов прерываний, а также внутренней памяти программ.
 Регистры специального назначения (SFR) – это регистры, которые
предназначены для хранения строго отведённых величин и имеют
определённые имена. С ними мы будем знакомиться постепенно, когда будем
писать какой-то исходный код, который будет широко их использовать.
 Регистры общего назначения (GPR) – это ячейки памяти, которые имеют
только адреса и предназначены они для хранения любых данных.
 Также из приведённого выше рисунка мы видим, что у нашего контроллера
память данных разделена на 2 страницы (или банка) переход между
которыми осуществляется посредством установки определённых битов в
регистре STATUS. Поэтому данный регистр присутствует в обеих банках и
обратиться к нему мы можем в любой момент, чтобы сменить текущую
страницу памяти.
 Адресация может быть как прямая, так и косвенная или относительная, когда
адрес отсчитывается относительно текущего адреса. С этим мы возможно не
будем знакомиться, так как такая задача возникает у программистов, которые
пишут программы на ассемблере.
 Соответственно, у каждого контроллера кроме памяти существует много
чего ещё интересного, в том числе порты ввода-вывода. Наши контроллеры
PIC – также не исключение.
 INDF (h'OO’) -Нулевой адрес памяти данных обозначается как INDF
(INDiгect File). Поскольку этот регистр используется исключительно для
включения режима косвенной адресации, то его не стали реализовывать как
настоящий регистр. То есть вы не можете хранить данные в регистре INDF,
поскольку он физически не существует!
 FSR (04h)- Указатель косвенной адресации
 TMR0 таймер/счетчик - Этот 8-битный суммирующий счетчик, иногда
называемый таймером/счетчиком реального времени, осуществляет счет
импульсов, поступающих на вход таймера.
 Иногда может потребоваться изменить состояние счетчика команд из
программы. Для этого младший байт счетчика напрямую доступен через
регистр специального назначения PCL (Program CoLJnteг Low).
 OPTION_REG (h'81 ‘) для управления Таймером О используются шесть
битов этого регистра, расположенного по адресу h'8 l'
 PCLATH (h'OA’) - Регистр PCLATH является регистром-защелкой для хранения данных, которые
должны быть загружены в старший байт счетчика команд. Загрузка старшего байта происходит при
записи в регистр PCL, что обеспечивает одновременное обновление всех 13 бит счетчика.
 PORTA (h'05’) - В этом регистре задействовано только 5 младших битов, подключенных к выводам
RA4 ... RA0 микроконтроллера. Вывод RA4 используется также модулем Таймера О. Фантомные три
старших бита читаются как О. В некоторых моделях семейства, например в PIC \ 6F628, могут быть
реализованы все 8 линий порта А.
 TRISA (h'85’) - Этот регистр предназначен для конфигурирования линий порта А в качестве входов или
выходов. Установка бита TRISA[n] в 1 делает вывод RA[n] входом, а сброс в О - выходом'). При любом
сбросе все биты регистра TRISA устанавливаются в 1, и все выводы порта соответственно становятся
входами.
 PORTB (h'06’) - Двунаправленный 8-битный порт ввода/вывода, подключенный к выводам RB0 ... RB7
микроконтроллера. Вывод RB0 может использоваться также в качестве входа аппаратного прерывания.
 TRISB (h'86’) - Этот регистр используется для конфигурирования линий порта B в качестве входов или
выходов. Более подробно - см. описание регистра TRISA.
 ЕЕРRОМ-память данных В большинстве моделей среднего и старшего семейства имеется блок памяти
объемом до 256 (в PIC 16F84 - 64) байт, для хранения содержимого которого не требуется питания. Эта
энергонезависимая память не является частью (энергозависимой) памяти данных, а обращения к ней
производятся посредством определенных РСН, как к обычному периферийному устройству. Любой байт
этой памяти можно считать или записать посредством регистра EEDATA. Адрес байта задается
регистром EEADR, а управление процессом чтения/записи осуществляется с помощью регистров
EECON 1 и EECON2. Срок службы большинства модулей EEPROM составляет не менее 10 млн циклов
перезаписи, а период сохранности данных - не менее 40 лет. Типичными примерами использования
энергонезависимой паvяти является хранение количества страниц, отпечатанных лазерным принтером,
или суммарный путь, пройденный автомобилем.
 EEDATA (h'08’) - Этот регистр содержит данные адресованной ячейки EEPROM
после операции чтения или же данные, которые будут записаны в EEPROM во
время операции записи.
 EEADR (h'09’) Этот регистр содержит адрес байта, к которому производится
обращение, загружаемый перед началом операции чтения или записи.
 EECON1 (h'88’) - Этот регистр содержит следующие биты управления и
состояния:
• Бит запуска операции чтения EEPROM.
• Бит разрешения операции записи.
• Бит запуска операции записи в EEPROM.
• Бит признака преждевременного завершения цикла записи.
• Бит признака нормального завершения цикла записи.
 EECON2 (h'89’) - Этот управляющий регистр физически не существует, и при его
чтении всегда возвращается нулевое значение. Указанный адрес используется для
загрузки последовательности, разрешающей цикл записи.
 Прерывания - Регистр управления прерываниями INTCON, расположенный по
адресу h 'ОВ' , содержит биты маски и статуса, управляющие реакцией
микроконтроллера на прерывания.
Счетчик команд
 Команды обычно располагаются в памяти программ последовательно, а счетчик команд РС является обычным счетным регистром,
определяющим местонахождение текущей команды. Этот суммирующий счетчик иногда называют (может быть, даже более правильно)
указателем команд.
Конвейер
В двух регистрах команд содержатся коды команд, считанные из памяти программ. В начало конвейера (в первый регистр команд, IRl) загружается код n-й команды и хранится там
для обработки в следующем цикле. Это позволяет исполнять команду n - 1, находящуюся в конце конвейера (во втором регистре команд, fR2) одновременно с выборкой п-й
команды и загрузкой ее в конвейер.
Дешифратор команд
 Дешифратор команд ID является «мозгами» ЦПУ- он дешифрует код команды, находящийся в регистре 1R2, и формирует в определенной последовательности сигналы .для
исполнительного блока, необходимые последнему для определения местоположения операнда (если таковой имеется) в памяти данных и для переключения АЛУ в заданный
режим. На рисунке показано выполнение команды rnovf r1' 2 5' , w (копирование содержимого регистра данных с адресом h'25' в рабочий регистр).
 Исполнительный блок осуществляет обращения к памяти данных и конфигурирование АЛ У. Работой исполнительного блока управляет дешифратор команд,
функционирование которого, в свою очередь, зависит от значения кода команды п - 1, находящегося в регистре команд IR2. Исполнительный блок обрабатывает все числа
группами по восемь битов, данные во всех регистрах и в памяти данных также хранятся побайтно. Поэтому о таком: компьютере обычно говорят как о 8-битном процессоре.
Регистр адреса
 Когда ЦПУ собирается обратиться к ячейке (регистру) памяти данных, он помещает адрес этой ячейки в регистр адреса FAR. При этом производится непосредственная
адресация памяти данных по ее шине адреса. Как показано на, из памяти данных считывается регистр с адресом 11'25', и его содержимое защелкивается во внутреннем·
регистре данных FDR процессора.
Регистр данных
 Этот «двунаправленный» регистр выполняет две функции: • Хранит содержимое адресованного регистра данных, если ЦПУ осуществляет цикл чтения. именно это происходит
при выполнении 1-й команды (rnovf l-1' 2 5' , w), которая пересылает (копирует) содержимое регистра с адресом h'25' в рабочий регистр.• Хранит данные, которые ЦПУ
собирается записать в адресованный регистр данных. Такой цикл записи, в частности, имеет место при выполнении команды rnovwf h' 2 6 ', которая пересылает (копирует)
содержимое рабочего регистра в регистр с адресом \1'26'.
Регистр состояния
 Этот регистр содержит флаги нуля Z и переноса С, которые устанавливаются соответственно, если результат операции равен нулю и если в результате сложения возник
перенос.
Рабочий регистр
 В рабочем регистре АЛУ (W) обычно находится один из операндов команды - либо источник, либо адресат. Например, команда addwf h' 2 О' , w складывает содержимое
рабочего регистра с содержимым регистра 11 '20' и помешает су11му обратно в рабочий регистр W. В некоторых компьютерах этот регистр называется также аккумулятором.
Назначение ножек контроллера PIC16F84A

 У данного контроллера два порта – порт A и порт B. Из порта A наружу


выведены 5 ножек – RA0-RA4, а из порта B – все 8 ножек RB0-RB7.
 Также ножки портов могут иметь и другое назначение в зависимости от того,
как мы их сконфигурируем. Например ножка 6 или RB0 может в любой
момент превратиться в ножку для захвата внешних прерываний, а ножка 3
или RA4 – стать ножкой для тактирования таймера от внешнего генератора.
 Тактирование МК PIC также может осуществляться как от внешнего
генератора, так и от кварцевого резонатора, от внутреннего резистора, а
также существует ещё несколько вариантов, которые поддерживают не все
контроллеры данного семейства. На практике как правило используется
тактирование от кварцевого резонатора.
M C LR
Обозначение Нормальный режим Режим записи EEPROM
RA0 – RA3 Двунаправленные линии
ввода/вывода. Входные
уровни ТТЛ
RA4/T0CKI Вход через триггер Шмитта.
Ножка порта ввода/вывода с
открытым стоком или вход
частоты для таймера/счетчика
TMR0
RB0/INT Двунаправленная линия
порта ввода/ вывода или
внешний вход прерывания
Уровни ТТЛ
RB1 – RB5 Двунаправленные линии
ввода/ вывода. Уровни ТТЛ
RB6 Двунаправленные линии Вход тактовой частоты для
ввода/ вывода. Уровни ТТЛ. EEPROM
RB7 Двунаправленные линии Вход/выход EEPROM
ввода/ вывода. Уровни ТТЛ. данных.
MCRL/Vрр Низкий уровень на этом Сброс контроллера Для
входе генерирует сигнал режима EEPROM- подать
сброса для контроллера. Vрр.
Активный низкий.
 Если микропроцессор с точки зрения архитектуры представляет собой только
блок центрального процессора, то микроконтроллер уже является законченной
самодостаточной компьютероподобной системой. Рассмотрим в качестве
примера электронную часть системы контроля автомобильного одометра,
которая отображает общий пробег автомобиля с момента изготовления, а также
дальность последней поездки (так называемый путевой одометр).
 Основным входным сигналом системы является сигнал от автомобильного
тахометра, который формирует импульсы при каждом обороте маховика
двигателя. Подсчитав суммарное количество этих импульсов, можно определить
количество оборотов двигателя, а по интервалу между импульсами можно
вычислить скорость движения автомобиля. Разумеется, реальный путь,
проходимый автомобилем, зависит от передаточного числа коробки передач,
поэтому нам необходимо знать о том, какая из пяти передач была включена
водителем в каждый момент времени. Эта информация поступает из коробки
передач по линиям G5, ... , G 1 (обычно обозначаемым как G[5: 1]). Включенной
передаче соответствует напряжение ВЫСОКОГО уровня на соответствующей
линии (передача заднего хода не учитывается). Два дополнительных входа
предназначены для задания единицы измерения отображаемых значений (мили
или километры) и для обнуления путевогоодометра.

Вам также может понравиться