- •Микропроцессорные системы мпс (Полетаев Игорь Алексеевич) 4-й курс Iсеместр 2000/2001 гг.
- •Классификация процессоров
- •Классификация контроллеров. Сферы применения 32-разрядных контроллеров
- •Обзор 8-разрядных контроллеров
- •Общая структура контроллеров семейства mCs-51i8x51
- •Структура контроллеров семейства pic16Схх
- •Структура команд и методы адресации
- •Методы адресации в pic-контроллерах
- •Язык Ассемблер
- •Программирование арифметических операций
- •Табличные вычисления
- •Порты ввода-вывода
- •Таймер-счётчик
- •Последовательный интерфейс mCs51
- •Работа последовательного порта в мультиконтроллерных системах
- •Определение тактовой частоты при работе с последовательным портом
- •Интерфейсы контроллеров pic
- •Последовательный связной интерфейс
- •Структурная схема приёмника
- •Модуль прерываниёMCs51
- •Система прерываний pic16
- •16-Ти разрядные контроллеры на примере mCs96
- •Вопросы
Табличные вычисления
При вычислении сложных функций необязательно применять итерационные методы. Можно задать результат таблично. Для этого в Intel8051 в контроллерах предназначен метод косвенной адресации по сумме базового и индексного регистра. Т.е. в указатель данных загружается начальный индекс таблицы, а в аккумулятор – аргумент (строка таблицы). Скорость вычислений при таком способе возрастает на несколько порядков.
Использование какого-либо ЯВУ существенно упрощает формирование таблиц и создаёт их как включаемый файл.
Пример: формирование синуса для байтного аргумента 0/2.
Теперь файл подключим в программу:.
В контроллерах PIC16 для определения табличных значений предназначена команда:
Возможен только один способ доступа к элементам таблицы – по значению РС. Каждая таблица должна иметь следующую команду: . Предварительно в старшую часть РС должна быть записана старшая половина адреса.
При операциях с младшей частью РС отсутствует перенос в старший байт, поэтому таблица должна целиком помещаться в области 256 слов при неизменном девятом бите РС.
23.10.2000
Порты ввода-вывода
MCs51: эти контроллеры имеют 4 порта, выделяется 0 порт. Он является двунаправленным: в зависимости от используемой команды переходит автоматическое переключение на ввод или вывод с мультиплексированием адреса. Порт может находиться вZ-состоянии. В самом простом виде структура портов следующая:
Когда информация записывается в порт, триггер-защёлка устанавливается в соответствующее состояние. При выполнении команд ЧТЕНИЕ, МОДИФИКАЦИЯ, ЗАПИСЬ чтение производится не с линии порта, а с триггера. Команды для работы с портом:
Если линии порта Р3 используются для альтернативных функций, то в соответствующие разряды должны быть записаны ‘1‘.
При работе с внешней памятью Р0 всегда используется целиком. Если используются только команды
то Р2 можно использовать для других целей. Если используются команды
или внешняя память команд, то Р2 выполняет альтернативную функцию вывода старшего байта адреса.
PIC16:
РИС2.
К порту относится 2 регистра; можно прочитать их с помощью “чтение порта” и ”чтение TRIS”; можно записать в них с помощью “запись в порт” и ”записьTRIS”.
PIC16С74 – наиболее полно оснащённый контроллер семейства PIC:
32 линии ввода-вывода;
5 портов А Е;
все линии ,кроме RA4, трехстабильные;
имеет нагрузочную способность по току до 25мА.
К линиям порта BRB7RB4 подключён транзистор с высокоомным каналом с током 100мкА, соединяющий вход с питанием +U.
Таймер-счётчик
MCs51: здесь 2 т/с. для их управления есть 2 регистра. При работе т/с в качестве счётчика внешних событий счётный вход “Т“ проверяется 1 раз за машинный цикл и должен держаться на одном уровне. У т/с 4 режима работы(в зависимости от установки бит М0 и М1):
0 режим – используется для обеспечения совместимости с ранним семейством MCs48;
1 режим – его можно пояснить на рисунке:
TL TH TF
1
1
Бит GATEпозволяет использовать таймер для измерения длительности импульсного сигнала по входуINTили использовать счётчик для подсчёта импульсов на входе Т при включённом сигнале-окнеINT.
Т/с работают на увеличение содержимого, и временные задержки определяются по формуле: . Чем меньше задержка, тем больше надо в таймер записывать.
25.10.2000
2 режим: здесь младший байт используется, как перезапускаемый восьмиразрядный счётчик.
При каждом переполнении TLпроисходит автоматическая перезагрузка изTHвTL, т.е. счёт называется не с начала, а со значенияTH. Т.о. можно задавать частные интервалы; используется, например, широтно-импульсная модуляция и для задания опорной частоты последовательного интерфейса, с которым аппаратно связан т/с1.
3 режим: определяет работу т/с0 и представляет собой 2 независимых восьмиразрядных регистра.
TL0 может работать и в режиме таймера, и в режиме счётчика.TH0 может быть только таймером.
В режимах 02 т/с1 всегда включён, но при переходе всех бит в 0 флаг переполнения не устанавливается. Т/с1 в режиме 3 выключается. Этот режим обычно используют, когда требуется работа интерфейса и двух таймеров или интерфейса, таймера и счётчика.
PIC16
TMR0: может работать и как таймер, и как счётчик. В режиме таймера инкремент производится каждый командный цикл, если не используется предварительный делитель. В режиме счётчика инкремент производится либо положительным, либо отрицательным фронтом в зависимости от битаRTE(регистрOPTION). Предварительный делитель может быть использован или сTMR0, или со сторожевым таймером в зависимости от битаPSA.
Для формирования точных переменных задержек можно использовать дополнительно 1 или несколько РОН для расширения разрядности счётчика. Тогда делитель отключается от таймера, а длительность задержки определяется:
Перед началом задержки загружаются расчётные значения в регистр и таймер, затем по каждому прерыванию таймера регистр декрементируется, и если стал равным 0, то задержка закончена.
TMR1: 2 регистраTMR1HиTMR1Lпрограммно доступны.
Биты |
Обозначение |
Назначение | ||||||||||
5 |
T1CKPS1 |
Настройка
делителя:
S1
S0 значение 0
0 1:1 0
1 1:2 1
0 1:4 1
1 1:8
| ||||||||||
4 |
T1CKPS0 | |||||||||||
3 |
T1OSCEN |
Разрешение внешнего генератора | ||||||||||
2 |
T1SYNC |
Контроль синхронизации (1 – таймер на синхронизирован внутренней частотой, 0 – наоборот) | ||||||||||
1 |
TMR1CS |
1 – счётчик, 0 – таймер | ||||||||||
0 |
TMR1ON |
Включение счёта |
TMR1 может работать с модулями ССР.
TMR2: восьми битный с дополнительными предварительным и дополнительным делителями. Он может работать только в режиме таймера.
Для управления таймером TMR2 служит регистрT2CON.
Биты |
Обозначение |
назначение |
6 |
TOUTPS3 |
Настройка выходного делителя 0000 1:1 0001 1:2 … 1111 1:16 |
5 |
TOUTPS2 | |
4 |
TOUTPS1 | |
3 |
TOUTPS0 | |
2 |
TMR2ON |
Включение счёта |
1 |
T2CKPS1 |
Настройка предварительного делителя 00 1:2, 01 1:4, 1х 1:16 |
0 |
T2CKPS0 |
TMR2 инкрементируется пока не достигнет величины, записанной в регистре периодаPR2. после этого он обнуляется и начинает счёт сначала. Выходной сигнал до дополнительного делителя используется в качестве сигналов сдвига для последовательного порта в синхронном режиме.
30.10.2000 и 4.11.2000.
CCP – Compare/ Capture (захват)/PWM
PWM – Pulse Width Modulation (широко-импульсная модуляция)
Каждый из двух модулей CCPможет выполнять одну из функций:
чтение “на лету” без остановки счёта;
генерирование сигнала сравнения;
генерирование сигнала с ШИМ.
Кроме этого каждый модуль содержит 16-ти битовый регистр-защёлку;
CPRxH:CPRxL
И управляющего регистра конфигурации CCPxCON.
1 режим:Capture(захват) используется для изменения временных интервалов и периодов. В регистрыCCPRпереписывается содержимое таймера1 по сигналу на входеRC2 (дляCCP1). Сигналы на защёлкивание можно определить:
отрицательный фронт;
положительный фронт;
один раз на каждый четвёртый отрицательный фронт;
один раз на каждый шестнадцатый отрицательный фронт.
При защёлкивании устанавливается флаг прерывания CCPxIF.
2 режим: Сравнение. Сравнивается содержимое таймера1 иCCPR. Встроенный триггер устанавливается при равенстве этих значений. Сигнал с этого триггера поступает на внешний вывод и в виде флага прерывания. Внутренний триггер можно использовать для перезапуска других устройств:
сбрасывать таймер;
производить запуск АЦП без вмешательства программы.
3режим: В режиме ШИМ обеспечивается 10-ти битное расширение. Участвует только таймер2. этот режим является простейшим аналогом ЦАП.
Период ШИМ = <PR2 + 1> * 4fQ* <TMR2 с предделителем>
Длительность ШИМ = DC1*fQ- <TMR2 с предделителем>
DC1 – 10-ти битное значение, составленное из
CCPRxL(старшие 8 разрядов)
CCPxCON<5:4> (2 младших)
Минимальное время периода ШИМ для стандартных частот опорного генератора
Разрешение, бит |
Опорная частота | ||
20 МГц |
10 МГц |
4 МГц | |
10 |
19.53 кГц |
9.77 кГц |
3.9 кГц |
9 |
39 кГц |
19.53 кГц |
7.8 кГц |
8 |
78 |
39 |
15.6 |
6 |
312.5 |
156 |
62.5 |
Регистры конфигурации CCP1CONиCCP2CON:
Биты |
Обозначение |
Назначение |
5 |
CCPxX |
В режиме ШИМ 2 мл. бита длительности |
4 |
CCPxY | |
3 |
CCPxM3 |
Выбор режима модуля |
2 |
CCPxM2 | |
1 |
CCPxM1 | |
0 |
CCPxM0 |