- •Микропроцессорные системы мпс (Полетаев Игорь Алексеевич) 4-й курс Iсеместр 2000/2001 гг.
- •Классификация процессоров
- •Классификация контроллеров. Сферы применения 32-разрядных контроллеров
- •Обзор 8-разрядных контроллеров
- •Общая структура контроллеров семейства mCs-51i8x51
- •Структура контроллеров семейства pic16Схх
- •Структура команд и методы адресации
- •Методы адресации в pic-контроллерах
- •Язык Ассемблер
- •Программирование арифметических операций
- •Табличные вычисления
- •Порты ввода-вывода
- •Таймер-счётчик
- •Последовательный интерфейс mCs51
- •Работа последовательного порта в мультиконтроллерных системах
- •Определение тактовой частоты при работе с последовательным портом
- •Интерфейсы контроллеров pic
- •Последовательный связной интерфейс
- •Структурная схема приёмника
- •Модуль прерываниёMCs51
- •Система прерываний pic16
- •16-Ти разрядные контроллеры на примере mCs96
- •Вопросы
Структурная схема приёмника
При приёме сигнал проходит через синхронный детектор бит в сдвиговый регистр. Данные переписываются в очередь FIFO, состоящую из двух 9-ти битных регистров (но программно доступен только один). При приёме может возникнуть ошибка отсутствия стоп-бита, а при несвоевременном чтении из буфера – ошибка переполнения очереди.
Временные диаграммы:
В синхронном ведомом режиме сигнал синхронизации поступает от внешнего источника. Это позволяет контроллеру передавать и принимать данные в режиме пониженного энергопотребления (режим SLEEP).
Модуль прерываниёMCs51
1
IE0
1 IE1
1
В MCs51 действует аппаратный пулинг.
При возникновении разрешения сигнала прерывания формируется аппаратный вызов подпрограммы обработки прерывания, если нет блокировки по условиям:
Установлена общая блокировка прерываний;
Установлена блокировка данного прерывания;
В данный момент обслуживается прерывание данного и более высокого приоритета.
Возврат из подпрограммы обработки прерывания в основную программу осуществляется с помощью команды RETIили с использование регистровIEиIP.
При использовании прерываний всегда используется стек, поэтому значение регистра SPдолжно быть определено.
Флаги TIиRIвсегда сбрасываются программно. Независимо от того, разрешено или нет соответствующее прерывание, флагиIE0,IE1,TF0,TF1,RI,TIбудут установлены.
22.11.2000
Система прерываний pic16
Работает медленнее, чем MSc51.
Для всех прерываний вектор (адрес начала обработки прерывания) 4, т.е. подпрограмме обработки необходимо осуществить программы полинга разрешённых для прерывания устройств. Приоритеты определяются порядком опроса флагов прерываний. Здесь имеется 12 прерываний. Прерывания могут вызвать следующие события:
внешнее прерывание по фронту или спадам (RB0/INT);
прерывание от переполнения TMR0;
прерывание при изменении сигналов на выводах RB<4:7>;
прерывание от переполнения TMR1;
прерывание при достижении таймером TMR2 значения регистра периода;
прерывание от модуля CCP1 (произведено чтение налету или значениеTMR1 сравнялось с заданным);
прерывание от модуля CCP2;
прерывание от синхронного последовательного порта SSP;
прерывание от параллельного порта (тот, который может работать в режиме сопроцессора);
прерывание при завершении АЦП;
прерывание при приёме данных модулем SCI;
прерывание при передаче данных модулем SCI.
Чем меньше используется прерываний, тем лучше.
INTCON– управляющий регистр прерываний.
Бит |
Обозначение |
Назначение |
7 |
GIE |
Разрешение всех прерываний (=1) |
6 |
PEIE |
Разрешение прерываний устройств периферии |
5 |
T0IE |
Разрешено прерывание с таймером TMR0 |
4 |
INTE |
Разрешение прерываний по входу INT |
3 |
RBIE |
Прерывание при изменении состояния на входах RB<4:7> |
2 |
T0IF |
Флаг прерывания таймера TMR0 |
1 |
INTF |
Внешнее прерывание |
0 |
RBIF |
Флаг прерывания при изменении на входах RB<4:7> |
Остальные регистры выполняю оставшиеся 9 прерываний.
Работа системы прерываний заключается в следующем: когда начинает обрабатываться прерывание, бит GIEобнуляется автоматически, чтобы запретить повторные прерывания на момент выполнения текущего. Он также автоматически восстанавливается по команде возврат из прерывания. Программа обработки прерываний не должна каким-либо способом устанавливать битGIE. Возврат из прерывания производится командойRETFIE(для всех контроллеров).
В программе обработки флаг запроса на обрабатываемое прерывание должен быть программно сброшен, иначе программа обработки будет выполняться постоянно.
По прерываниям можно выходить из режима пониженного энергопотребления в случаях:
вообще можно выйти:
при внешнем сбросе (для всех устройств);
сброс при срабатывании сторожевого таймера;
выход по прерыванию приводит к некоторым событиям, при этом работают следующие прерывания:
от TMR1;
от модуля SCIв ведомом режиме;
от модуля SSPв ведомом режиме;
от модуля CCPв режиме захвата;
от модуля АЦП, если он работает с RC-генератором;
от параллельного порта.
При возникновении прерывания и GIE=1 будет выполняться подпрограмма обработки прерывания. Если общее прерывание запрещено, то будет выполняться команда, следующая заSLEEP.
АЦП
В контроллерах PIC16C7xимеется 8-ми разрядный АЦП, подключаемый через коммутатор к одному из нескольких входов (до 8). АЦП –AIC(Analog-To-Digital-Converter) построен по схеме последовательных приближений: 1 разряд за 1 такт модуля. Тактирование может производиться от основного генератора со временем цикла не менее 1.6 мкс или от внутреннегоRC-генератора с длительностью ~4 мкс.
Ошибка 1 мл. разряд при опорном напряженииVREF=5.12 В разрешение 20 мВ.
С АЦП связано 3 регистра, один из которых ADRES, а остальные управляющие:ADCON1 показывает, какие входы могут быть подключены (7, 5, 4, 3, 2). Можно использовать напряжение питания илиVREFв качестве опорного.
27.11.2000
ADCON0
Бит |
Обозначение |
Назначение |
7 |
ADS1 |
выбор тактов на один шаг приближения:
|
6 |
ADS0 | |
5 |
CHS2 |
Выбор аналогового канала |
4 |
CHS1 | |
3 |
CHS0 | |
2 |
GO/DONE |
Бит статуса; устанавливается для начала преобразования, аппаратно сбрасывается при окончании |
1 |
Не используется | |
0 |
ADON |
Включение модуля АЦП |
При использовании RC-генератора преобразование будет завершено даже в режиме пониженного энергопотребления. Результат получается в регистрADRES. Если прерывание от АЦП разрешено, то процессор выйдет из режимаSLEEPпо прерыванию. Если прерывание от АЦП запрещено, то узел АЦП уменьшит потребление тока, но бит статуса останется установленным.
Непосредственно перед модулем АЦП находится устройство выборки и хранения.
Пока бит статуса = 0, ключ будет постоянно замкнут, а конденсатор подключен к источнику входного напряжения. Нет специальной команды, чтобы начать и закончить выборку. Поэтому, когда начинается цикл преобразования после установки бита статуса в 1, ключ размыкается и напряжение на конденсаторе запоминается. На это уходит 2 такта. На зарядку запоминающего конденсатора необходимо отвести время 10-30 мкс.
Цикл измерения АЦП:
подключается аналоговый вход с записью данных в ADCON0 (GO/DONE=0);
через 10-30 мкс. запускается преобразование установкой бита статуса;
через 10 циклов проверяется бит статуса, если он = 0, то читается содержимое ADRES.
4.12.2000