Дмитриев Универсалный лабораторный стенд. Аппаратные средства проектирования встраиваемых систем 2009
.pdf9. PCON – регистр управления режимом энергопотребления. Побитно не адресуется.
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SMOD |
– |
– |
WLE |
GF1 |
GF0 |
PD |
IDL |
|
|
|
|
|
|
|
|
Назначение битов:
SMOD – бит разрешения удвоение скорости передачи UART. Если бит установлен, скорость удваивается и определяется таймером Т1. UART может использоваться в режимах 1, 2 и 3;
WLE – бит разрешения загрузки сторожевого таймера Т3. Этот бит должен быть установлен программно перед его загрузкой. Сбрасывается аппаратно после загрузки Т3;
GF1 – пользовательский флаг общего назначения;
GF0 – пользовательский флаг общего назначения;
PD – бит включения режима пониженного энергопотребления (отключение внутреннего генератора). Может быть установлен только если выключен сторожевой таймер Т3;
IDL – бит включения режима приостанова.
2.3.ОРГАНИЗАЦИЯ ПРЕРЫВАНИЙ. ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ ВНЕШНИХ ПРЕРЫВАНИЙ В УЛС
В табл. 2.1 представлены адреса векторов каждого из 15 прерываний МК PCF80С552 включенного в составе УЛС. Все адреса находятся в области эмулятора ПЗУ и доступны пользователю для реализации обработки прерываний. Заметим, что таблица составлена с учетом переноса адресов векторов в область эмулятора ПЗУ, о чем говорилось в п. 1.6.
41
Таблица 2.1
Таблица векторов прерываний MK PCF80C552 в составе УЛС
Источник прерывания |
Обозначение |
Адрес вектора |
|
Внешнее прерывание INT0 |
X0 |
8003h |
|
Переполнение таймера Т0 |
Т0 |
800Вh |
|
Внешнее прерывание INT1 |
X1 |
8013h |
|
Переполнение таймера Т1 |
Т1 |
801Вh |
|
UART |
S0 |
8023h |
|
I2C |
S1 |
802Bh |
|
T2 |
регистр-защелка 0 |
Р |
8033h |
T2 |
регистр-защелка 1 |
CT1 |
803Bh |
T2 |
регистр-защелка 2 |
CT2 |
8043h |
T2 |
регистр-защелка 3 |
CT3 |
804Bh |
АЦП |
ADC |
8053h |
|
T2 |
компаратор 0 |
CM0 |
805Bh |
T2 |
компаратор 1 |
CM1 |
8063h |
T2 |
компаратор 2 |
CM2 |
806Bh |
Переполнение T2 |
T2 |
8073h |
Для того чтобы разрешить любое нужное прерывание, необходимо в регистре IEN0 установить бит EA=1, разрешив все прерывания, а затем в регистрах IEN0 и IEN1 выбрать и установить соответствующий бит индивидуального разрешения прерывания.
В МК реализована двухуровневая система приоритетов прерываний. Каждому прерыванию при помощи программирования регистров IP0 и IP1 может быть присвоен низкий (0) или высокий (1) уровень приоритета. Обработка прерывания низкого уровня может быть прервана только прерыванием высокого уровня. Обработка прерывания высокого уровня не может быть прервана никаким другим прерыванием. При одновременном поступлении двух прерываний различного уровня приоритета предпочтение для обработки отдается прерыванию высокого уровня. При одновременном поступлении прерываний одного уровня порядок их обработки определяется табл. 2.2.
42
|
|
|
Таблица 2.2 |
|
|
Приоритеты прерываний в пределах одного уровня |
|||
|
|
|
|
|
|
Источник прерывания |
Обозначение |
Приоритет в пределах |
|
|
|
|
одного уровня |
|
Внешнее прерывание INT0 |
X0 |
Высший |
||
I2C |
S1 |
|
||
АЦП |
ADC |
|
||
Переполнение таймера Т0 |
T0 |
|
||
T2 |
регистр-защелка 0 |
CT0 |
|
|
T2 |
компаратор 0 |
CM0 |
|
|
Внешнее прерывание INT1 |
X1 |
|
||
T2 |
регистр-защелка 1 |
CT1 |
|
|
T2 |
компаратор 1 |
CM1 |
|
|
Переполнение таймера Т1 |
T1 |
|
||
T2 |
регистр-защелка 2 |
CT2 |
Низший |
|
T2 |
компаратор 2 |
CM2 |
||
|
||||
UART |
S0 |
|
||
T2 |
регистр-защелка 3 |
CT3 |
|
|
Переполнение таймера Т2 |
T2 |
|
Обратим внимание на особенности использования внешних прерываний INT0 и INT1. Каждое из них может быть сконфигурировано или по изменению 1/0 или низкому уровню сигнала. Если прерывание сконфигурировано по изменению 1/0, то для его захвата контроллером прерывания необходимо, чтобы длительность значений «1» и «0» сигнала прерывания была бы не меньше 12 периодов тактового генератора МК (одного процессорного цикла). В УЛС пользователь может использовать только одно внешнее прерывание INT0 для обмена с ПЛИС. При проектировании схемного узла ПЛИС для генерации прерывания, сконфигурированного по изменению 1/0, следует принять во внимание, что ПЛИС тактируется от того же внешнего генератора, что и МК. В качестве решения для формирования такого узла, может быть предложена схема выделения заданного количества периодов генератора, например 16. Напомним, что флаг прерывания IEx в этом случае сбрасывает-
43
ся программно при входе в обработчик прерывания. Если прерывание сконфигурировано по низкому уровню сигнала, то его длительность должна удовлетворять двум условиям. Во-первых, она должна быть достаточной для захвата сигнала контроллером прерываний. Во-вторых, к моменту окончания обработки прерывания низкий уровень сигнала должен быть сброшен, иначе последует повторная обработка прерывания. Эти условия реализуется таким способом обработки прерывания, когда низкое значение сигнала выставляется внешним устройством, а сбрасывается оно при выполнении специальной команды обработчика прерывания. В гл. 3 рассматриваются примеры реализации обмена ПЛИС и МК по внешнему прерыванию INT0.
2.4.РАБОТА С ПАРАЛЛЕЛЬНЫМИ ПОРТАМИ ВВОДА-ВЫВОДА. ОСОБЕННОСТИ ИХ ИСПОЛЬЗОВАНИЯ В УЛС
В состав МК PCF80C552 входят шесть 8-разрядных портов вво- да-вывода (Р0-Р5). Каждый разряд всех портов, кроме Р5, для возможности организации двунаправленного обмена в своем составе имеет защелку, входной буфер и выходной драйвер. Порт Р5 может использоваться только как входной. Табл. 2.3 иллюстрирует назначение портов МК с учетом их альтернативных функций.
|
|
Таблица 2.3 |
Функции портов ввода-вывода |
||
|
|
|
ВЫВОД ПОРТА |
АЛЬТЕРНАТИВНАЯ ФУНКЦИЯ |
|
Р0.0 |
AD0 |
|
Р0.1 |
AD1 |
|
Р0.2 |
AD2 |
Мультиплексированные |
Р0.3 |
AD3 |
линии младшего байта |
Р0.4 |
AD4 адреса и данных при |
|
Р0.5 |
AD5 |
обращении к внешней |
Р0.6 |
AD6 |
памяти |
Р0.7 |
AD7 |
|
Р1.0 |
CT0I С вход регистра-защелки 0 |
|
Р1.1 |
CT1I С вход регистра-защелки 1 |
|
Р1.2 |
CT2I С вход регистра защелки 2 |
|
|
|
44 |
|
|
Продолжение табл. 2.3 |
|
|
|
ВЫВОД ПОРТА |
АЛЬТЕРНАТИВНАЯ ФУНКЦИЯ |
|
Р1.3 |
CT3I |
С вход регистра-защелки 3 |
Р1.4 |
T2 |
Вход таймера Т2 |
Р1.5 |
RT2 |
Сброс таймера Т2 |
Р1.6 |
SCL |
Линия синхронизации I2C |
Р1.7 |
SDA |
Линия данных I2C |
Р2.0 |
A0 |
|
Р2.1 |
A1 |
Старший байт адреса |
Р2.2 |
A2 |
при обращении к внешней |
Р2.3 |
A3 |
памяти данных и устройствам |
Р2.4 |
A4 |
ввода-вывода |
Р2.5 |
A5 |
|
Р2.6 |
A6 |
|
Р2.7 |
A7 |
|
Р3.0 |
RXD |
Вход приемника UART |
Р3.1 |
TXD |
Выход передатчика UART |
Р3.2 |
INT0 |
Внешнее прерывание 0 |
Р3.3 |
INT1 |
Внешнее прерывание 1 |
Р3.4 |
T0 |
Вход таймера 0 |
Р3.5 |
T1 |
Вход таймера 1 |
Р3.6 |
WR |
Строб записи |
Р3.7 |
RD |
Строб чтения |
Р4.0 |
CMSR0 |
Выходы компаратора |
Р4.1 |
CMSR1 |
таймера Т2 |
Р4.2 |
CMSR2 |
|
Р4.3 |
CMSR3 |
|
Р4.4 |
CMSR4 |
|
Р4.5 |
CMSR5 |
|
Р4.6 |
CMT0 |
|
Р4.7 |
CMT1 |
|
Р5.0 |
ADC0 |
|
Р5.1 |
ADC1 |
|
Р5.2 |
ADC2 |
|
Р5.3 |
ADC3 |
8 аналоговых входов |
Р5.4 |
ADC4 |
аналого-цифрового |
Р5.5 |
ADC5 |
преобразователя |
Р5.6 |
ADC6 |
|
Р5.7 |
ADC7 |
|
|
45 |
|
В УЛС порты Р0, Р2 и Р3 используются в альтернативном режиме для организации внешней шины и для пользователя недоступны. Вход таймера Т0 подключен к ПЛИС, а вход таймера Т1 к разъему расширения. Порт Р1 может использоваться только в альтернативном режиме для работы с JTAG-портом ПЛИС и организации последовательного интерфейса I2C. Линии порта 5 выведены на разъем расширения. Порт Р4 подключен к ПЛИС и одновременно к шкалам светодиодных индикаторов А и В. Если предусмотрен вывод информации из МК через порт Р4 на шкалы А и В, то в проекте, загружаемом в ПЛИС, эти шкалы не должны использоваться. В альтернативном режиме порт Р4 может использоваться для формирования временных интервалов при помощи таймера 2.
2.5. ТАЙМЕР Т2
В состав МК входит дополнительный 16-разрядный таймер Т2, который обеспечивает аппаратную поддержку формирования и измерения временных интервалов. Для этой цели в его состав введены три 16-разрядных компаратора и четыре 16-разрядные регист- ры-защелки. На рис. 2.5 представлена структурная схема таймера Т2. Для работы с таймером Т2, помимо рассмотренных ранее IEN1 IP1, используются следующие регистры специальных функций:
TML2(ECh) и TMH2(EDh) – 16-разрядный счетчик таймера Т2; CML0(A9h),CMH0(C9h),
CML1(AAh),CMH1(CAh), СML2(ABh),CMH2(CBh) – компараторы; CTL0(ACh), CTH0(CCh),
CTL1(ADh), CTH1(CDh),
CTL2(AEh), CTH2(CEh),
CTL3(AFh), CTH3(CFh) – регистры-защелки; TM2CON(EAh) – регистр управления таймером Т2; TM2IR(C8h) – регистр флагов прерывания таймера Т2;
CTCON(EBh) – регистр управления регистрами-защелками таймера Т2;
STE(EEh) – регистр разрешения установки линий порта Р4; RTE(EFh) – регистр разрешения сброса/переключения линий порта Р4.
46
Рис. 2.5. Структурная схема таймера Т2
Рассмотрим назначение этих регистров.
1. TM2CON – регистр управления таймером Т2. Побитно не адресуем.
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
|
|
|
|
|
|
|
T2IS1 |
T2IS0 |
T2ER |
T2BO |
T2P1 |
T2P0 |
T2MS1 |
T2MS0 |
|
|
|
|
|
|
|
|
Назначение битов:
T2IS1 – бит выбора прерывания по 16-разрядному переполнению таймера Т2;
T2IS0 – бит выбора прерывания по 8-разрядному переполнению таймера Т2;
47
T2ER – бит разрешения внешнего сброса таймера Т2. При его установке таймер Т2 может сбрасываться перепадом 0/1 на входе
RT2 (Р1.5);
T2BO – флаг прерывания по байтовому переполнению таймера Т2;
T2P1 – бит 1 выбор коэффициента деления частоты предделителем таймера Т2;
T2P0 – бит 0 выбор коэффициента деления частоты предделителем таймера Т2;
T2P1 |
T2P0 |
Частота работы таймера Т2 |
00 Частота источника тактирования (Fosc/12 или от внешнего входа Т2 (Р1.4)
01 Частота источника тактирования, деленная на 2
10 Частота источника тактирования, деленная на 4
1 |
1 |
Частота источника тактирования, деленная на 8 |
T2MS1 – бит 1 выбора режима таймера Т2;
T2MS0 – бит 0 выбора режима таймера Т2;
T2MS1 |
T2MS0 |
Режим работы таймера Т2 |
0 |
0 |
Таймер Т2 выключен |
0 |
1 |
Источник тактирования Fosc/12 |
1 |
0 |
Не используется |
1 |
1 |
Источник тактирования - сигнал со входа Т2 |
2. TM2IR – побитно адресуемый регистр флагов прерывания таймера Т2.
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
|
|
|
|
|
|
|
T2OV |
CMI2 |
CMI1 |
CMI0 |
CTI3 |
CTI2 |
CTI1 |
CTI0 |
|
|
|
|
|
|
|
|
Назначение битов:
T2OV – флаг 16-разрядного переполнения таймера Т2; CMI2 – флаг прерывания СМ2;
48
CMI1 – флаг прерывания СМ1;
CMI0 – флаг прерывания СМ0;
CTI3 – флаг прерывания СТ3;
CTI2 – флаг прерывания СТ2;
CTI1 – флаг прерывания СТ1;
CTI0 – флаг прерывания СТ0;
3. CTCON – регистр управления регистрами-защелками таймера Т2.
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
|
|
|
|
|
|
|
CTN3 |
CTP3 |
CTN2 |
CTP2 |
CTN1 |
CTP1 |
CTN0 |
CTP0 |
|
|
|
|
|
|
|
|
Назначение битов:
CTN3 – регистр-защелка СТ3 переключается перепадом 1/0 на входе CT3I (P1.3);
CTP3 – регистр-защелка СТ3 переключается перепадом 0/1 на входе CT3I (P1.3);
CTN2 – регистр-защелка СТ2 переключается перепадом 1/0 на входе CT2I (P1.2);
CTP2 – регистр-защелка СТ2 переключается перепадом 0/1 на входе CT2I (P1.2);
CTN1 – регистр-защелка СТ1 переключается перепадом 1/0 на входе CT1I (P1.1);
CTP1 – регистр-защелка СТ1 переключается перепадом 0/1 на входе CT1I (P1.1);
CTN0 – регистр-защелка СТ0 переключается перепадом 1/0 на входе CT0I (P1.0);
CTP0 – регистр-защелка СТ0 переключается перепадом 0/1 на входе CT0I (P1.0).
4. RTE – регистр разрешения сброса/переключения линий порта Р4.
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
|
|
|
|
|
|
|
TP47 |
TP46 |
RP45 |
RP44 |
RP43 |
RP42 |
RP41 |
RP40 |
|
|
|
|
|
|
|
|
|
|
|
|
49 |
|
|
|
Назначение битов:
TP47 – если TP47=1, то линия порта Р4.7 переключается при равенстве значений компаратора СМ2 и счетчика таймера Т2;
TP46 – если TP46=1, то линия порта Р4.6 переключается при равенстве значений компаратора СМ2 и счетчика таймера Т2;
RP45 – если RP45=1, то линия порта Р4.5 сбрасывается в 0 при равенстве значений компаратора СМ1 и счетчика таймера Т2;
RP44 – если RP44=1, то линия порта Р4.4 сбрасывается в 0 при равенстве значений компаратора СМ1 и счетчика таймера Т2;
RP43 – если RP43=1, то линия порта Р4.3 сбрасывается в 0 при равенстве значений компаратора СМ1 и счетчика таймера Т2;
RP42 – если RP42=1, то линия порта Р4.2 сбрасывается в 0 при равенстве значений компаратора СМ1 и счетчика таймера Т2;
RP41 – если RP41=1, то линия порта Р4.1 сбрасывается в 0 при равенстве значений компаратора СМ1 и счетчика таймера Т2;
RP40 – если RP40=1, то линия порта Р4.0 сбрасывается в 0 при равенстве значений компаратора СМ1 и счетчика таймера Т2;
5. STE – регистр разрешения установки линий порта Р4.
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
|
|
|
|
|
|
|
TG47 |
TG46 |
SP45 |
SP44 |
SP43 |
SP42 |
SP41 |
SP40 |
|
|
|
|
|
|
|
|
Назначение битов:
TG47 – переключение триггеров;
TG46 – переключение триггеров;
SP45 – если SP45=1, то линия порта Р4.5 устанавливается в 1 при равенстве значений компаратора СМ0 и счетчика таймера Т2; SP44 – если SP44=1, то линия порта Р4.4 устанавливается в 1 при равенстве значений компаратора СМ0 и счетчика таймера Т2; SP43 – если SP43=1, то линия порта Р4.3 устанавливается в 1 при равенстве значений компаратора СМ0 и счетчика таймера Т2; SP42 – если SP42=1, то линия порта Р4.2 устанавливается в 1 при равенстве значений компаратора СМ0 и счетчика таймера Т2; SP41 – если SP41=1, то линия порта Р4.1 устанавливается в 1 при равенстве значений компаратора СМ0 и счетчика таймера Т2; SP40 – если SP40=1, то линия порта Р4.0 устанавливается в 1 при равенстве значений компаратора СМ0 и счетчика таймера Т2.
50