|
И. Шагурин
Периферийные устройства
микроконтроллеров семейства 68HC705
В предыдущем номере нашего журнала началась публикация
цикла статей, знакомящих российских
специалистов с перспективными моделями 8-разрядных микроконтроллеров семейства 68HC705 компании Motorola.
В первой статье цикла [1] описаны общая структура микроконтроллеров и функционирование их процессорного ядра.
В данной статье дается обзор периферийных устройств, входящих в состав различных моделей этих микроконтроллеров.
Различные модели микроконтроллеров семейства 68HC705 имеют общее процессорное ядро, но отличаются набором
размещенных на кристалле периферийных устройств, в состав которых входят:
- параллельные порты ввода/вывода данных,
- последовательные порты ввода/вывода данных,
- таймерные блоки,
- широтно-импульсные модуляторы,
- блок контроля функционирования,
- аналого-цифровые преобразователи,
- контроллеры ЖКИ.
В этой статье описывается функционирование основных периферийных устройств.
1. Параллельные порты ввода/вывода данных
Для обмена данными с внешними устройствами в микроконтроллерах семейства 68HC705 используются
от 2 до 5 параллельных портов, которые имеют имена A, B, C, D и E (табл. 1). Двунаправленные порты служат
для ввода/вывода данных (i/o), некоторые порты обеспечивают только ввод (i) или вывод (o) данных. В большинстве
микроконтроллеров выводы некоторых портов используются как дополнительные входы прерываний [1]. Как указано в табл. 1,
выводы ряда портов совмещены со входами/выходами других периферийных устройств — АЦП, таймеров, последовательных портов
SCI, SPI, SIOP, контроллера жидкокристаллических индикаторов (ЖКИ). При включении этих устройств соответствующие выводы
обеспечивают передачу сигналов, необходимых для их функционирования, и не могут использоваться в качестве входов или
выходов параллельных портов. Большинство портов обеспечивает передачу 8-разрядных данных, однако в некоторых портах для
обмена данными используется меньшее количество внешних выводов (2, 3, 6 или 7).
Таблица 1. Состав и функции выводов параллельных портов
Тип контроллера |
Параллельные порты |
A |
B |
C |
D |
E |
68HC705KJ1 |
8 i/o, 4 входа прерываний |
2 i/o |
- |
- |
- |
68HC705J1A |
8 i/o, 4 входа прерываний |
6 i/o |
- |
- |
- |
68HC705P6A |
8 i/o, 8 входов прерываний |
3 i/o, 3 вывода SIOP |
8 i/o, 4 входа АЦП |
1 i/o + 1 i, 1 вход таймера |
- |
68HC705C8A |
8 i/o |
8 i/o, 8 входов прерываний |
8 i/o |
7 i, 3 вывода SPI, 2 вывода SCI |
- |
68HC705C9A |
8 i/o |
8 i/o, 8 входов прерываний |
8 i/o |
7 i/o, 3 вывода SPI, 2 вывода SCI |
- |
68hc705b16 |
8 i/o |
8 i/o |
8 i/o, 1 выход ГТИ |
8 i, 8 входов АЦП |
- |
68HC705L16 (имеет дополнительно 27 выходов контроллера ЖКИ) |
8 i/o |
8 i, 8 входов прерываний |
8 i/o, 3 вывода SIOP, 3 вывода таймеры, 2 входа прерываний |
7 о, 8 выходов контрол лера ЖКИ |
8 О, 8 выходов контрол лера ЖКИ |
Двунаправленные параллельные порты (i/o в табл. 1) содержат 8-разрядные регистры данных PORTx и направления
пересылки DDRx (символ x = A, B, C или D указывает имя порта). Регистры PORTx имеют адреса $00–$03, регистры DDRx — адреса
$04–$07 в младших позициях адресного пространства, выделенных для адресации регистров периферийных устройств [1]. В регистры
DDRx вводится управляющий код, программирующий направление передачи для каждого вывода порта: если i-й бит в регистре имеет
значение “0”, то соответствующий вывод порта Pxi является входом, если “1” — то выходом. В процессе начальной установки при
поступлении внешнего сигнала RESET# в регистрах DDRx устанавливается нулевое значение всех битов, то есть в исходном состоянии
порты запрограммированы на выполнение ввода данных. Обращение к портам производится с помощью команд LDA, LDX и STA, STX.
При выполнении команд STA, STX содержимое регистра A или X записывается в регистр PORTx адресуемого порта. Если все или часть
выводов порта запрограммированы в качестве выходов, то соответствующие разряды содержимого PORTx поступают на эти выводы
порта. При выполнении команд LDA, LDX производится считывание в регистр A или X данных, поступающих на выводы порта,
запрограммированные в качестве входов. Если же все или часть выводов данного порта запрограммированы как входы, то считывается
содержимое соответствующих разрядов регистра данных PORTx. Таким образом регистры PORTx двунаправленных портов могут служить
для хранения данных.
В ряде микроконтроллеров выводы двунаправленных портов, запрограммированные для использования в качестве входов, могут
подключаться к низкому потенциалу (“земля”) через МДП-транзистор с малым током стока (около 100 мкА). Такое подключение
входов (pull-down) позволяет исключить помехи, возникающие во входных цепях портов, когда источник входных сигналов
отключается (переводится в состояние с высокоимпедансным выходом). В микроконтроллерах 68HC705KJ1, J1A регистр режима
содержит специальный бит SWPDI, который разрешает подключение входов к низкому потенциалу, если установлено значение
SWPDI = 1. Порты A и B этих микроконтроллеров имеют специальные регистры PDRA и PDRB, каждый i-й бит в которых обеспечивает
подключение к низкому потенциалу i-го входа порта, если значение этого бита равно “0”. В микроконтроллере 68HC705B16
все входы портов B или C подключаются к низкому потенциалу, если в регистре режима установлено значение бита PBPD
или PCPD = 1.
Некоторые микроконтроллеры имеют порты, выполняющие только функции ввода данных (i в табл. 1). Такие порты не имеют
регистров PORTx, DDRx. При выполнении команд LDA и LDX, адресующих эти порты, производится считывание в регистр A или
X данных непосредственно со входов этих портов.
В микроконтроллере 68HC705L16 порты D и E служат только для вывода данных (o в табл. 1). Функции выводов определяются
содержимым специальных регистров PDMUX, PEMUX — если i-й бит в этих регистрах имеет значение “0”, то i-й вывод
соответствующего порта служит для вывода данных, если i-й бит имеет значение “1”, то i-й вывод является выходом
контроллера ЖКИ. При начальной установке по сигналу RESET# = 0 выводы портов D и E программируются на обслуживание
контроллера ЖКИ.
В микроконтроллере 68HC705B16 вывод PC2 порта C можно запрограммировать на выдачу тактовых импульсов с частотой Ft,
формируемых внутренним генератором ГТИ. Для этого необходимо записать “1” в соответствующий бит регистра режима.
Большинство выходов портов обеспечивают допустимые значения токов нагрузки Iн0 = 1,6 мА при низком потенциале
U0 на выходе, Iн1 = 0,8 мА при высоком потенциале U1 на выходе (для 68HC705L16 токи Iн0 = 0,8 мА, Iн1 = 0,4 мА).
Однако для некоторых выводов допускаются повышенные значения токов нагрузки, достаточные для подключения к этим
выводам светодиодов или других приборов со значительным потреблением тока. В микроконтроллерах 68HC705KJ1, J1A
четыре выхода PA7-4 порта A обеспечивают значения токов нагрузки Iн0 = 10 мА, Iн1 = 0,8 мА; в 68HC705C8A, C9A
выход PC7 порта C — токи Iн0 = 20 мА, Iн1 = 5 мА; в 68HC705P6A выходы PC0,1 порта C — токи Iн0 = 10 мА, Iн1 = 5 мА.
2. Последовательные порты ввода/вывода данных
Для последовательного обмена данными в микроконтроллерах 68HC705C8A, C9A используются асинхронный и
синхронный последовательные порты SCI и SPI, в 68HC705P6A и L16 — упрощенные варианты син-хронного последовательного
порта SIOP и SSPI, в 68HC705B16 — модифицированный вариант асинхронного последовательного порта SCI+ с расширенными
функциональными возможностями.
Асинхронный последовательный порт SCI (serial communication interface) обеспечивает стандартный асинхронный формат
приема/передачи данных с одним стартовым и одним стоповым битом, восемью информационными битами и возможностью
пересылки 9-го (контрольного) бита (рис. 1).
Рис. 1. Формат данных SCI
SCI содержит буферный регистр данных SCDR (адрес $11), регистр состояния SCSR, два регистра управления SCCR1 и
SCCR2. Генератор ГСС формирует син-хросигналы обмена, частота которых Fs определяется содержимым регистра BRR.
Формат содержимого регистров показан на рис. 2. Для обмена данными используются вход приема RDI и выход передатчика
TDO, подключенные, соответственно, к выводам PD0 и PD1 порта D.
Функционирование SCI определяется значениями управляющих кодов, загружаемых в регистры SCCR1,2 c помощью
команды STA. Бит M в регистре SCCR1 (рис. 2а) определяет разрядность данных: 8 бит при M = 0, 9 бит при M = 1. Если M = 1,
то при передаче в качестве 9-го (контрольного) бита передается бит T8 из регистра SCCR1, а при приеме 9-й бит заносится в
регистр SCCR1 в качестве бита R8. Перед началом передачи на линии устанавливается уровень “1” (сигнал ожидания) на время не
менее, чем длительность одного такта синхросигналов Ts = 1/Fs. Если на линии поддерживается уровень “0” в течении более 10Ts
(при 8-бит данных, M = 0) или 11Ts (при 9-бит данных, M = 1), то это является сигналом прекращения обмена.
Рис. 2. Форматы содержимого регистров SCI
В режиме приема данные со входа RDI последовательно вводятся во входной сдвиговый регистр, а затем переписываются в буферный
регистр SCDR, откуда могут быть считаны в регистр A или X командами LDA или LDX. В режиме передачи данные, предварительно
записанные в SCDR с помощью команд STA или STX, переписываются в выходной сдвиговый регистр и последовательно выдаются на
выход TDO. Приемник может переводиться в холостой режим, когда он не записывает поступающие данные в регистр SCDR, но
проверяет их содержание, ожидая прихода символа активизации. При этом данные, передаваемые по подключенной к RDI линии,
принимаются другими устройствами в системе. Последующая активизация приемника производится в соответствии со значением бита
WAKE в регистре SCCR. При WAKE = 0 активизация происходит при поступлении на вход RDI последовательности из 10 (при 8-бит
данных, M = 0) или 11 (при 9-бит данных, M = 1) единиц. При WAKE = 1 приемник активизируется при значении “1” старшего
(адресного) разряда поступающих данных. Передатчик может выдавать сигнал прекращения обмена, посылая на выход TDO
последовательность из нулей, длительностью более 10 (при 8-бит данных) или 11 (при 9-бит данных) тактов Ts.
Управляющий код, записываемый в регистр SCCR2 (рис. 2б), разрешает или запрещает формирование за-просов прерывания,
производит запуск и отключение приемника и передатчика, устанавливает холостой режим приемника и выдачу сигнала
прекращения обмена передатчиком. Отдельные биты содержимого SCCR2 имеют следующее назначение:
- TIE — разрешает при TIE = 1 формирование запроса прерывания при установке признака освобождения буферного
регистра в режиме передачи (в регистре SCSR бит TDRE = 1);
- TCIE — разрешает при TCIE = 1 формирование за-проса прерывания при установке признака завершения передачи
(в регистре SCSR бит TC = 1);
- RIE — разрешает при RIE = 1 формирование запроса прерывания при заполнении буфера или переполнении приемника
(в регистре SCSR биты RDRF = 1 или OR = 1);
- ILIE — разрешает при ILIE = 1 формирование запроса прерывания при поступлении на вход RDI сигнала прекращения
обмена (в регистре SCSR бит IDLE = 1);
- TE — включает (при TE = 1) и отключает (при TE = 0) передатчик;
- RE — включает (при RE = 1) и отключает (при RE = 0) приемник;
- RWU — переводит при RWU = 1 приемник в холостой режим, а при RWU = 0 разрешает активизацию приемника
(в соответствии со значением бита WAKE в регистре SCCR1);
- SBK — вызывает при SBK = 1 выдачу на выход TDO передатчика сигнала прекращения обмена (последовательность “0”).
При включении передатчика или приемника выводы PD1 и PD0 подключаются, соответственно, к выходу передатчика TDO или
входу приемника RDI и не могут служить в качестве входов данных порта D. При записи бита SBK = 0 передатчик посылает
10 или 11 нулей на выход TDO, а затем устанавливает на выходе уровень “1” и начинает передачу символа, если в регистр
SCDR загружены данные.
Регистр состояния SCSR (рис. 2в), при обращении к которому производится только считывание, содержит семь признаков,
устанавливаемых в процессе приема или передачи данных:
- TDRE — признак освобождения буфера передатчика — принимает значение “1” после того, как содержимое регистра SCDR
переписывается в выходной сдвиговый регистр для последовательной выдачи на выход TDO;
- TC — признак окончания передачи — принимает значение “1” после выдачи последнего бита данных из выходного
сдвигового регистра на выход TDO;
- RDRF — признак заполнения буфера приемника — принимает значение “1” после того, как данные, поступившие во
входной сдвиговый регистр, переписываются в регистр SCDR;
- IDLE — признак прекращения обмена — принимает значение “1”, если состояние “1” на входе RDI поддерживается
более 10 (при M = 0) или 11 (при M = 1) тактов Ts;
- OR — признак переполнения приемника — принимает значение “1” в случае, когда очередной символ поступает во
входной сдвиговый регистр до считывания из буфера SCDR предыдущего символа; содержимое SCDR при этом сохраняется,
а вновь поступивший символ пропадает;
- NF — признак наличия шумов на линии приема — устанавливается в состояние “1”, если в процессе приема какого-либо
бита состояние входа изменяется;
- FE — признак нарушения кадра — принимает зна-чение “1”, если длительность стоп-бита оказывается меньше, чем Ts.
Признаки TDRE, TC, RDRF, IDLE, OR вызывают формирование запроса прерывания, если это разрешено соответствующими
битами в регистре SCCR2. При этом подпрограмма обслуживания прерывания должна считать и проанализировать содержимое
регистра SCSR, чтобы выяснить причину прерывания и выполнить необходимую процедуру. Запросы, вызванные признаками
TDRE, TC, RDRF и OR обычно вызывают процедуры пересылки в SCI новых данных для передачи или считывания из SCI принятых
данных. Если соответствующие запросы запрещены установкой значения “0” в битах TIE, TCTE и RIE, то прием и передача
данных через SCI выполняется программно с помощью периодического считывания и анализа содержимого SCSR (программный
опрос). Обнаружение шумов на линии приема производится путем троекратной проверки значения сигнала на входе RDI в
течении времени приема одного бита Ts. Если проверка дает разные значения уровня, то принимается то значение (“0” или
“1”), которое поступило дважды (принцип мажоритарности), а однократное поступление другого значения воспринимается как
помеха. В этом случае устанавливается признак наличия шумов NF = 1. Признаки NF и FE не вызывают запросов прерывания и
должны счи-тываться и анализироваться путем программного опроса.
Значения признаков TDRE и TC устанавливаются равными “0”, если в режиме передачи выполняется чтение содержимого SCSR
после записи данных в регистр SCDR. Значения признаков RDRF, IDLE, OR, NF и FE устанавливаются равными “0”, если в
режиме приема выполняется чтение содержимого SCSR после чтения данных из регистра SCDR.
Длительность такта обмена Ts = 1/Fs определяется частотой Fs импульсов, генерируемых ГСС, которая задается содержимым
регистра BRR (рис. 2г). Значение этой частоты определяется выражением Fs = Ft /(Kd ґ Ks), где Kd и Ks — коэффициенты
деления, которые устанавливаются в зависимости от содержимого полей SCP1-0 и SCR2-0 в регистре BRR (табл. 2). Благодаря
возможности выбора различных значений коэффициентов Kd и Ks реализуется широкий диапазон скоростей обмена данными — от
десятков бит/c до100 Кбит/c.
Таблица 2. Значения коэффициентов деления Kd и KS для SCI и SCI+
SCP1-0 |
Kd |
SCR2-0 |
KS |
00 |
1 |
000 |
1 |
01 |
3 |
001 |
2 |
10 |
4 |
010 |
4 |
11 |
13 |
011 |
8 |
|
|
100 |
16 |
|
|
101 |
32 |
|
|
110 |
64 |
|
|
111 |
128 |
Модифицированный асинхронно-синхронный порт SCI+, используемый в микроконтроллерах 68HC705B16, отличается от SCI
тем, что позволяет отдельно задавать частоту син-хросигналов для приемника и передатчика, а также обеспечивает возможность
синхронной передачи данных. Порт SCI+ имеет выводы для приема и передачи данных — SDI и SDO, а также выход синхросигналов
передачи SCK, которые не совмещены с выводами какого-либо параллельного порта. Синхроимпульс формируется на выходе SCK в
начале или середине периода передачи очередного информационного бита. Возможен режим работы, при котором передача
последнего (8-го или 9-го) бита не сопровождается выдачей синхроимпульса. Таким образом, при использовании синхросигналов
SCK порт SCI+ обеспечивает синхронную передачу данных. Если не использовать выход SCK, то порт SCI+ реализует
последовательную асинхронную передачу/прием данных, аналогично порту SCI.
Для управления работой порта используются регистры SCCR1 и SCCR2, причем в SCCR1 введены дополнительные биты, управляющие
состоянием SCK:
- CPOL (бит 2) — указывает исходное и конечное состояние выхода SCK (“0” или “1”) перед началом и после окончания
передачи информационных битов, задавая полярность формируемых синхроимпульсов: положительная полярность при CPOL = 0,
отрицательная — при CPOL = 1;
- CPHA (бит 1) — определяет фазу выдачи синхроимпульса на выход SCK: при CPHA = 0 синхроимпульс формируется в начале
такта передачи Ts, при CPHA = 1 — в середине такта;
- LBCL (бит 0) — разрешает (при LBCL = 1) или запрещает (при LBCL = 0) выдачу синхроимпульса при передаче последнего
(8-го или 9-го) информационного бита.
Остальные управляющие биты и признаки, устанавливаемые в регистрах SCCR1, SCCR2 и SCSR, имеют такое же назначение, как
и для порта SCI (рис. 2а-в). В регистре BRR введены отдельные поля, устанавливающие длительность тактов Ts приемника и
передатчика: SCP1-0 (биты 7,6) устанавливает общее значение коэф-фициента предварительного деления частоты Kd; SCT2-0
(биты 5,4,3) и SCR2-0 (биты 2,1,0) задают значения коэффициентов Kst и Ksr для передатчика и приемника. Значения
коэффициентов определяются табл. 2.
Синхронный последовательный порт SPI (serial peripheral interface) содержит регистр данных SPDR (адрес $0C), регистры
управления SPCR и состояния SPSR, формат содержимого которых показан на рис. 3.
Рис. 3. Формат содержимого регистров SPI
Функционирование SPI определяется управляющим кодом, который записывается в регистр SPCR (рис. 3а). При этом SPI
программируется для работы в качестве ведущего, если в регистре SPCR устанавливается значение бита MSTR = 1, или ведомого,
если MSTR = 0. Ведущий SPI задает частоту синхросигналов обмена, которая равна Fs = Ft/Kd, где коэффициент деления Kd
определяется значениями поля SPR1,0 в регистре SPCR (табл. 3).
Таблица 3. Значения коэффициента деления Kd для SPI
SPR1-0 |
Kd |
00 |
2 |
01 |
4 |
10 |
16 |
11 |
32 |
Включение SPI происходит при установке в регистре SPCR
значения бита SPE = 1. При этом выводы PD5-2 порта D служат входами/выходами сигналов MISO, MOSI, SCK и SS# (рис. 4),
обеспечивающих последовательный обмен. Данные выводы имеют следующее назначение:
- MISO — вход данных для ведущего SPI и выход данных для ведомого SPI;
- MOSI — выход данных для ведущего SPI и вход данных для ведомого SPI;
- SCK — выход синхросигнала для ведущего SPI и вход синхросигнала для ведомого SPI;
- SS# — вход сигнала выбора ведущего/ведомого: на вход ведущего подается сигнал SS# = 1, на вход ведомого — SS# = 0.
Включение выводов ведущего и ведомого SPI показано на рис. 4. В каждом такте обмена производится ввод бита в младший
разряд сдвигового регистра ведущего и ведомого SPI и вывод бита из старших разрядов этих регистров. Обмен производится
8-разрядными символами, которые поступают в сдвиговый регистр при записи в регистр SPDR данного порта и считываются при
чтении этого регистра. После окончания передачи символа устанавливается признак завершения обмена SPIF = 1 в регистре
состояния SPSR (рис. 3б). При этом формируется запрос прерывания SPI, если в регистре SPCR бит разрешения прерывания
SPIE = 1.
Рис. 4. Включение ведущего и ведомого SPI для обмена данными
В исходном состоянии на выходе SCK ведущего SPI поддерживается постоянный уровень “0”, если в регистре SPCR установлено
значение бита полярности син-хросигналов CPOL = 0, или уровень “1”, если CPOL = 1. Обмен начинается после записи данных
в регистр SPDR ведущего SPI. При этом на выход SCK ведущего порта поступают синхросигналы, положительный или отрицательный
фронт которых определяет начало передачи очередного бита и момент его ввода в принимающий регистр. Выбор активного фронта
синхросигнала определяется значением бита фазы синхронизации CPHA, который задает формат передачи данных.
Формат 0. При значении CPH = 0 ведомый SPI выдает на линию MISO старший бит данных из сдвигового регистра после поступления
сигнала SS# = 0. Если бит CPOL = 0, то после начала обмена (записи данных в регистр SPDR ведущего SPI) выдача данных из
ведущего и ведомого SPI производится при установке на выходе SCK уровня “0”, а ввод поступающих данных в сдвиговые
регистры — при установке SCK уровня “1” (положительный фронт синхросигнала). Если бит CPOL = 1, то выдача данных
производится при установке уровня “1” на выходе SCK, а ввод — при установке уровня “0” (отрицательный фронт синхросигнала).
После передачи символа на вход SS# ведомого SPI необходимо подать уровень “1”, а перед началом передачи следующего
символа снова установить уровень “0”.
Формат 1. При значении CPHA = 1 ведущий и ведомый SPI начинают и продолжают выдачу битов одновременно — при поступлении
положительного фронта синхросигнала, если бит CPOL = 0, или отрицательного фронта, если CPOL = 1. Ввод поступающих данных
производится при поступлении отрицательного фронта синхросигнала, если бит CPOL = 0, или положительного фронта, если
CPOL = 1. При этом сигнал SS# на входе ведомого SPI может сохранять постоянный уровень “0” между передачами различных
символов.
Регистр состояния SPSR (рис. 3б), кроме признака окончания обмена SPIF, содержит значения еще двух признаков — WCOL и MODF.
Признак ошибки записи WCOL принимает значение “1”, если производится попытка записи в регистр SPDR до окончания процесса
передачи предыдущего символа. Признак ошибки режима MODF принимает значение “1” при подаче сигнала SS# = 0 на вход SPI,
запрограммированного как ведущий. В этом случае в регистре SPCR устанавливаются значения битов MSTR = SPE = 0, то есть
SPI переводится в режим ведомого и отключается. Если бит SPIE = 1, то формируется запрос прерывания SPI, который
обслуживается микроконтроллером. Содержимое регистра SPSR может быть только считано. Признаки SPIF, WCOL и MODF
устанавливаются в “0”, когда производится считывание регистра SPSR после загрузки в регистр SPDR новых данных для
следующего обмена.
В микроконтроллере 68HC705L16 используется упрощенный вариант последовательного периферийного порта SSPI (simple
serial peripheral interface), который функционирует, в основном, аналогично SPI. Отличия SSPI состоят в том, что
он использует три вывода: SDI (аналог MISO), SDO (аналог MOSI) и SCK, подключа-емых, соответственно, к выводам
PC0-2 порта B. Сигнал SS#, аппаратно устанавливающий режим работы SPI, отсутствует. В регистре управления SPCR
содержатся биты SPIE, SPE и MSTR (рис. 3а), а также DORD (бит 5) и SPR (бит 0). Бит DORD определяет порядок
последовательной передачи данных: начиная с младшего (при DORD = 1) или со старшего (при DORD = 0) разряда. Бит
SPR задает частоту синхросигналов обмена: Fs = Ft/2 при SPR = 0 или Fs = Ft/16 при SPR = 1. Прием и передача каждого
бита производится при поступлении положительного фронта синхросигнала SCK. Регистр состояния SPSR содержит два
признака — SPIF и DCOL (вместо WCOL), который принимает значение DCOL = 1, если выполняется запись или считывание
регистра SPDR во время процесса пересылки символа.
Используемый в микроконтроллере 68HC705P6A вариант последовательного периферийного порта SIOP (simple synchronous
serial input-output port) во многом аналогичен порту SSPI. Его основное отличие от SPI и SSPI состоит в том, что
он не формирует запрос прерывания после завершения передачи, поэтому состояние порта SIOP можно контролировать только
программным опросом. В регистре SPCR этого порта содержатся только два управляющих бита — SPE и MSTR (рис. 3а), а в
регистре состояния SPSR — два признака — SPIF и DCOL (аналогично SSPI). Другие управляющие биты находятся в регистре
режима: LSBF, задающий порядок передачи данных (аналогично DORD в SSPI), и SPR1-0, определяющие частоту синхросигналов
обмена в соответствии с табл. 3. Для приема/передачи данных порт использует три вывода SDO, SDI и SCK, подключаемые
к выводам PB5–7 порта B.
3. Таймерные блоки и широтно-импульсные модуляторы
В микроконтроллерах таймер является одним из основных периферийных устройств, поскольку при выполнении задач
управления очень часто возникает необходимость приема и выдачи сигналов в заданные моменты времени. Большинство
микроконтроллеров семейства 68HC705 содержат 16-разрядный таймерный блок, который эффективно выполняет указанные функции.
В микроконтроллере 68HC705L16 кроме таймер-ного блока имеются 8-разрядный таймер-счетчик и 14-разрядный базовый таймер,
переключение кото-рого может выполняться либо тактовыми сигналами основного ГТИ, либо сигналами дополнительного генератора
импульсов ДГИ, синхронизируемого отдельным синхросигналом или частотно-задающим резонатором, подключаемым к специальным
входам XOSC1,2. В микроконтроллерах 68HC705KJ1, J1A используется 15-разрядный многофункциональный таймер MFT.
Микроконтроллеры 68HC705B16 содержат также два широтно-импульсных модулятора, формирующих на выходах по-следовательность
импульсов с программируемой скважностью, частота которых задается таймерным блоком.
Таймерный блок, используемый в микроконтроллерах 68HC705P6A, C8A, C9A, B16, L16 имеет внешние вход сигнала захвата
TCAP и выход сигнала совпадения TCMP. Блок содержит 8-разрядные регистры управления TCR и состояния TSR (рис. 5),
16-разрядные регистры: основной счетчик TCNTR (адрес $18–19), дополнительный счетчик ACNTR (адрес $1A–1B), регистр
захвата ICR (адрес $14–15) и регистр сравнения OCR (адрес $16–17).
Запуск счетчика TCNTR производится при начальной установке микроконтроллера, после чего его состояние может быть
только считано. Частота переключения счетчика равна Fc = Ft/4, и длительность его рабочего цикла составляет
(216)Tc= 4·(216)Tt. Когда счетчик переключается из состояния $FFFF в $0000, признак переполнения TOF в регистре
TSR принимает значение TOF = 1. При этом формируется запрос прерывания, если в регистре TCR установлено значение
бита разрешения TCIE = 1. Текущее состояние TCNTR дублируется в дополнительном счетчике ACNTR, который также может
быть только считан. Отличие в работе TCNTR и ACNTR состоит в том, что при чтении содержимого TCNTR устанавливается
значение признака TOF = 0, а при чтении содержимого ACNTR признак TOF не меняет своего значения. Таким образом
можно считать состояние счетчика с сохранением установленного признака переполнения.
Рис. 5. Форматы содержимого регистров TCR, TSR (биты, отмеченные *, используются
в микроконтроллере 68HC705B16)
Если при считывании TCNTR и ACNTR выбирается сначала младший байт, то в регистр A (при выполнении команды LDA)
или X (при выполнении команды LDX) поступает текущее значение этого байта на момент обращения. Если при считывании
выбирается сначала старший байт, то младший байт переписывается из счетчика в буферный регистр. При последующем
обращении к младшему байту его значение будет выбираться из этого буфера, чтобы получить содержимое счетчика на
момент считывания старшего байта.
Таймер может выполнять функции захвата (фиксации) и сравнения (совпадения). В режиме захвата приход сигнала на
вход TCAP таймера вызывает запись текущего содержимого счетчика в регистр ICR, фиксируя таким образом время
поступления. При этом в регистре TSR устанавливается значение признака захвата ICF = 1, которое вызывает формирование
запроса прерывания таймера, если в регистре TCR значение бита разрешения прерывания ICIE = 1. Последующее считывание
содержимого регистра ICR позволяет определить время поступления сигнала TCAP. В режиме сравнения производится запись
определенного числа в регистр OCR. Когда содержимое счетчика становится равным этому числу, формируется сигнал
совпадения на выходе TCMP таймера, и устанавливается значение признака совпадения OCF = 1 в регистре TSR. Этот признак
вызывает формирование запроса прерывания таймера, если в регистре TCR установлено значение бита разрешения этого
прерывания OCIE = 1.
Регистр управления TCR (рис. 5а) содержит биты разрешения прерывания ICIE, OCIE и TOIE, которые разрешают
формирование запроса прерывания таймера при установке соответствующих признаков в регистре TSR. Бит IEDG в
этом регистре определяет вид сигнала TCAP, вызывающего захват содержимого счетчика в регистр ICR: если значение
IEDG = 0, то захват происходит при положительном фронте сигнала, если IEDG = 1 — при отрицательном. Бит OLVL задает
значение сигнала, устанавливаемого на выходе TCMP при совпадении содержимого счетчика и регистра OCR: при OLVL = 0
устанавливается значение TCMP = 0, при OLVL = 1 — TCMP = 1.
Регистр состояния TSR (рис. 5б) содержит признаки захвата ICF,
совпадения OCF и переполнения счетчика TOF, которые принимают нулевые значения при сбросе микроконтроллера в начальное
состояние, а при работе таймера могут устанавливаться в “1”. Установка нулевых значений этих признаков в процессе
работы микроконтроллера происходит только после чтения содержимого регистра TSR. Значение ICF = 0 устанавливается
при чтении младшего байта регистра ICR, значение OCF = 0 — при записи младшего байта в регистр OCR, значение
TOF = 0 — при записи младшего байта регистра TCNTR. С помощью команд LDA и LDX можно читать содержимое регистра TSR,
но запись в этот регистр запрещена.
Использование таймерного блока совместно с блоком прерываний позволяет осуществлять измерение временных интервалов
между событиями, формирование сигналов с заданной задержкой, периодическое выполнение необходимых подпрограмм,
формирование импульсов заданной частоты и длительности и другие процедуры.
Описанный таймерный блок входит в состав микроконтроллеров 68HC705C8A, C9A, P6A. В микроконтроллере 68HC705L16
используется аналогичный блок, но без выхода сигнала совпадения TCMP. Поэтому функция совпадения реализуется
только путем установки признака OCF = 1 и формирования запроса прерывания.
В микроконтроллере 68HC705B16 имеются по два входа захвата TCAP1,2 и совпадения TCMP1,2. Поэтому дополнительно
введены регистры захвата ICR2 (адрес $1C–1D) и сравнения OCR2 (адрес $1E–1F), а также дополнительные управляющие
биты в регистр TCR и признаки в регистр TSR. В TCR (рис. 5а) биты IEDG1 и OLVL1 определяют виды сигналов захвата
и совпадения для выводов TCAP1 и TCMP1, а бит OLVL2 — вид сигнала для выхода TCMP2. Функция захвата для TCAP2
реализуется только при поступлении на этот вход отрицательного перепада потенциала. Дополнительно в регистр TCR
введены управляющие биты FOLV2 и FOLV1, запись “0” или “1” в которые вызывает установку соответствующих значений
сигналов на выходах TCMP2 и TCMP1, не дожидаясь момента совпадения содержимого счетчика TCNT и регистра совпадения
(OCR2 или OCR1). Регистр TSR (рис. 5б) содержит отдельные признаки захвата и совпадения для входов TCAP1,2 и
выходов TCMP1,2.
Таймер-счетчик событий входит в состав микроконтроллера 68HC705L16 дополнительно к основному таймерному блоку.
Он содержит 8-разрядный счетчик, работающий в режиме таймера, когда счетчик переключается внутренними сигналами
CLK2 с программируемой частотой (от Fc = Ft до Fc = Ft/128), или режиме счета внешних событий, когда счетчик
переключается внешними сигналами, поступающими на вход EVI. В режиме таймера сигналы на входе EVI останавливают
переключение счетчика от внутренних сигналов, реализуя режим захвата. Таймер-счетчик имеет также выход EVO, на
котором формируются сигналы в заданные моменты времени, реализуя режим совпадения. Выводы EVI и EVO совмещены с
выводами PC5 и PC4 порта C. При работе в режиме таймера частота переключения счетчика Fc = Ft/Kc, где коэффициент
деления частоты Kc задается двумя младшими битами T2R1-0 содержимого регистра TBCR1 (рис. 6а): Kc = 1 при T2R1-0 = 00,
4 при 01, 32 при 10, 128 при 11. Функционирование счетчика-таймера определяется содержимым регистров управления TCR2
и состояния TSR2 (рис. 6а,б), таймера TCNT2 (адрес $1F), регистров совпадения OCR2 (адрес $1E) и синхронизации
TBCR1 (адрес $10).
Регистр TCR2 содержит следующие управляющие биты (рис. 6а):
- TI2IE и OC2IE — при установке в “1” разрешают прерывание процессора, если значения соответствующих признаков
TI2F и OC2F = 1;
- T2CLK — определяет вид сигналов, переключающих счетчик: внутренние сигналы CLK2 при T2CLK = 0 (режим таймера)
или внешние сигналы на входе EBI при T2CLK = 1 (режим счетчика);
- IM2 — при работе в режиме таймера (T2CLK = 0) разрешает при IM2 = 1 останов TCNT2 при поступлении сигнала на
вход EBI (режим захвата);
- IL2 — задает вид сигнала EBI, вызывающего останов счетчика в режиме таймера (IM2 = 1): отрицательный перепад
потенциала при IL2 = 0 или положительный перепад при IL2 = 1;
- OE2 — разрешает при OE2 = 1 выдачу сигнала на выход EVO (при OE2 = 0 к этому выходу подключается вывод PC5 порта C);
- OL2 — определяет исходный уровень сигнала (“0” или “1”) на выходе EVO.
В регистре состояния TSR2 (рис. 6б) устанавливается значение признака TI2F = 1, когда на вход EVI поступает сигнал,
вызывающий переключение TCNT2 при работе в режиме счетчика (T2CLK = 0) или останавливающий его при работе в режиме
таймера (T2CLK = 0). Признак OC2F = 1 устанавливается при совпадении содержимого TCNT2 и OCR2. Установка этих
признаков вызывает прерывание процессора, если это разрешено битами TI2IE и OC2IE в регистре TSR2. После установки
сброс признаков TI2F и OC2F в состояние “0” можно выполнить только путем записи “1” в соответствующие биты сброса
RTI2F и ROC2F регистра TSR2.
Рис. 6. Формат содержимого регистров управления TCR2 и состояния TSR2 таймера-счетчика
Следует отметить, что в таймере-счетчике не устанавливается признак переполнения. Контроль переполнения TCNT2 можно
реализовать путем записи максимального значения его содержимого в регистр сравнения OCR2. В этом случае прерывание
при установке признака OC2F = 1 указывает на достижение максимального установленного значения содержимого TCNT2.
Базовый таймер в микроконтроллере 68HC705L16 обеспечивает заданные отсчеты времени для реализации периодических
прерываний, функционирования блока контроля (раздел 4), формирования необходимой временной диаграммы подачи сигналов
на сегменты ЖКИ (раздел 6). В состав базового таймера входит 14-разрядный счетчик, переключаемый сигналами TBCLK,
которые поступают от ГТИ (с частотой Fb = Ft/64) или от ДГИ (частота Fb определяется резонатором, подключаемым ко
входам XOSC1,2). C выходов счетчика поступают импульсы с частотой Fl = Fb/64 или Fb/128 на вход контроллера ЖКИ
для формирования необходимых сигналов управления состоянием сегментов, импульсы с частой Fp = Fb/Kp — для формирования
запросов периодических прерываний (величина Kp определяется значениями битов TBR1-0 в регистре TBCR2, рис. 6б),
импульсы с частотой Fp/4 для переключения сторожевого таймера в блоке контроля функционирования COP (раздел 4).
Управление работой базового таймера и подключенных к нему устройств обеспечивается с помощью регистров TBCR1,2,
биты которых имеют следующее назначение (рис. 7а,б):
Рис. 7. Формат содержимого регистров управления базового таймера
- TBCLK — определяет выбор сигналов, переключающих базовый таймер: сигналы ДГИ при TBCLK = 0, сигналы
ГТИ с частотой Ft/64 при TBCLK = 1;
- LCLK — задает частоту синхроимпульсов для контроллера ЖКИ: Fl = Fb/64 при LCLK = 0, Fl = Fb/128 при LCLK = 1;
- T2R1–0 — определяют коэффициент деления частоты Kc для таймера-счетчика;
- TBIF — признак формирования запроса периодиче-ского прерывания;
- TBIE — разрешение обслуживания периодических прерываний при TBIE = 1;
- TBR1–0 — определяют коэффициент деления Kp для частоты периодических прерываний: 128 при TBR1–0 = 00, 4096
при 01, 8192 при 10, 6386 при 11;
- RTBIF — при записи значения RTBIF = 1 устанавливает значение признака TBIF = 0 (сброс запроса периодического
прерывания);
- COPE и COPC — управляют работой блока контроля функционирования COP.
Многофункциональный таймер MFT используется в качестве таймерного модуля в микроконтроллерах 68HC705KJ1, J1A.
Он содержит 15-разрядный счетчик, восемь младших разрядов которого представлены в виде программно-доступного
регистра-таймера TCR (адрес $09), а семь старших разрядов используются как делитель частоты при формировании
периодических прерываний, и регистр управления-состояния TSCR (рис. 8).
Рис. 8. Формат содержимого регистра управления-состояния TSCR (адрес $08)
Счетчик переключается с частотой Fc = Ft/4. При изменении состояния регистра TCR с $FF на $00 устанавливается
значение признака переполнения TOF = 1. Если при этом значение бита разрешения прерывания переполнения TOIE = 1,
то выполняется прерывание процессора. Таким образом, данное прерывание может реализоваться через каждые 210 = 1024
периодов тактовых импульсов Tt. Признак периодического прерывания RTIF = 1 устанавливается через промежутки времени,
длительность которых Tp определяется значениями битов RT1-0 в регистре TSCR: Tp = 214Tt при RT1-0 = 00, 215Tt при 01,
216Tt при 10, 217Tt при 11. Если значение бита разрешения периодического прерывания RTIE = 1, то реализуется
прерывание процессора. После установки значения признаков TOF и RTIF = 1 могут быть сброшены в состояние “0”
только путем записи “1” в соответствующие биты сброса TOFR и RTIFR регистра TSCR (рис. 8).
Таким образом, MFT может использоваться только для реализации прерываний через заданные промежутки времени.
Широтно-импульсные модуляторы (ШИМ), формирующие выходные импульсы заданной скважности, имеются в составе
микроконтроллеров 68HC705B16. Микроконтроллеры содержат два модулятора — PLMA и PLMB, которые имеют отдельные
выходы ШИМ-импульсов и регистры управления, задающие скважность этих импульсов. Период следования Tr импульсов
на выходе каждого ШИМ определяется значением специальных битов (SFA или SFB) в регистре режима (адрес $0С):
Tr = 256Tc при SFA(B) = 0 (быстрый режим), Tr = 4096Tc при SFA(B) = 1 (медленный режим), где Tc = Tt/4 — период
переключения счетчика в таймерном блоке. Содержимое q 8-разрядных регистров PLMA (адрес $0A), PLMB (адрес $0B)
задает для соответствующего ШИМ длительность выходного импульса Tp = (q/256)Tr, которая может составлять от
Tr/256 до 255Tr/256. Таким образом, эти ШИМ обеспечивают достаточно широкий диапазон значений скважности
формируемых импульсов, тогда как их частота имеет только два возможных значения: Fr = Ft/256 или Fr = Ft/4096.
4. Блоки контроля функционирования
Все микроконтроллеры семейства 68HС705 содержат блок контроля функционирования COP (computer operating properly).
Наиболее широкие возможности имеет COP, входящий в состав микроконтроллеров 68HC705C8A, C9A, который осуществляет
контроль выполнения программы и частоты тактовых импульсов. Управление COP производится путем записи в регистр
COPCR содержимого, биты которого имеют следующее назначение (рис. 9):
- COPF — признак, который принимает значение “1”, когда происходит сброс микроконтроллера в начальное состояние
по сигналу COP; установка значения COPF = 0 происходит при чтении содержимого регистра COPCR;
- PCOPE — определяет вид контроля выполнения программы: программируемый контроль при PCOPE = 1,
непрограммируемый — при PCOPE = 1;
- CME — разрешает (при CME = 1) или запрещает (при CME = 0) контроль частоты тактовых импульсов;
- COPE — разрешает (при COPE = 1) или запрещает (при COPE = 0) контроль выполнения программы c помощью
сторожевого таймера WDT (watchdog timer);
- CM1–0 — определяют длительность интервалов времени Tw при контроле выполнения программы: Tw = 215Tt при
CM1–0 = 00, 217Tt при 01, 219Tt при 10, 221Tt при 11.
Рис. 9. Формат содержимого регистра управления COPCR (адрес $1E)
Значения битов COPE и CM1–0 могут быть установлены только один раз в процессе запуска микроконтроллера (процедура RESET),
затем они могут только считываться. Значение бита CME может считываться и устанавливаться в процессе работы
микроконтроллера.
Программируемый контроль выполнения программы c помощью таймера WDT осуществляется при значениях битов
COPE = PCOPE = 1. Таймер WDT с периодом времени Tw вырабатывает сигнал, который прекращает выполнение программы
и производит повторный запуск микроконтроллера (процедура RESET — сброс в начальное состояние). Чтобы избежать этого,
необходимо сбрасывать WDT в нулевое состояние до наступления времени Tw. Сброс WDT выполняется путем периодической
записи в 8-разрядный регистр COPR (адрес $1D) числа $55, а затем $AA. Промежуток времени между записью этих чисел
не должен превышать Tw, значение которого определяется битами CM1–0 в регистре COPCR. Если за это время запись не
выполнена, то формируется выходной сигнал сброса RESET# = 0, и микроконтроллер сбрасывается в начальное состояние.
Таким образом, в текст выполняемой программы должны быть введены команды, обеспечивающие периодическую запись
чисел $55 и $AA. Прекращение или сбой выполнения программы, нарушающие периодичность записи этих чисел, вызовут
сброс, указывающий на нарушение работы микроконтроллера.
Непрограммируемый контроль выполнения программы реализуется при установке значения специального бита NCOPE = 1 в
регистре режима MOR2 (адрес $1FF1). В этом случае время контроля имеет фиксированное значение Tw = 217Tt, а сброс
таймера WDT производится путем записи “0” в младший разряд регистра режима MOR1 (адрес $1FF0), который содержит
контрольный бит COPC.
Блок COP в микроконтроллерах 68HC705C8A, C9A содержит схему контроля частоты тактовых импульсов, которая формирует
выходной сигнал RESET# = 0 и производит перезапуск микроконтроллера (процедура RESET), если в течении времени Tx от
ГТИ не поступил тактовый импульс. Эта схема включается при установке значения бита CME = 1 в регистре COPCR. Значение
Tx составляет от 5 до 100 мкс. Таким образом, сброс производится при частоте тактовых импульсов Ft < 200 кГц.
Поэтому данную схему следует отключать установкой значения CME = 0, если предполагается работа микроконтроллера
на частотах менее 200 кГц.
Блок контроля других моделей семейства 68HC705 реализует различные варианты вышеописанной процедуры
непрограммируемого контроля. В этих микроконтроллерах отсутствуют регистры COPR и COPCR, а процедура контроля
обеспечивается записью соответст-вующего значения контрольного бита COPC в один из регистров режима. Так, в
68HC705P6A процеду-ра контроля полностью аналогична выполняемой в 68HC705C8A, C9A. В 68HC705B16 для разрешения
работы COP следует записать “1” в бит 3 (RWAT — бит, разрешающий работу WDT после процедуры RESET) регистра режима
MOR (адрес $3DFE). После этого сброс WDT выполняется записью “1” в младший разряд регистра режима, размещенного
по адресу $0C. В 68HC705L16 сброс WDT осуществляется путем установки в “1” контрольного бита COPC в младшем
разряде регистра управления TBCR2 (рис. 7б), а разрешение работы COP производится установкой в “1” бита COPE,
расположенного в этом регистре. Время контроля Tw определяется значениями битов TBR1-0 в том же регистре:
Tw = 215Tt при TBR1–0 = 00, 220Tt при 01, 221Tt при 10, 222Tt при 11. В микроконтроллерах 68HC705KJ1, J1A
сброс WDT осуществляется записью “0” в младший разряд регистра COPR (адрес $07F0), а время Tw = 7Tp, где
Tp — период выполнения периодических прерываний, выполняемых таймером MFT.
5. Аналого-цифровые преобразователи
В состав микроконтроллеров 68HC705P6A, B16 входят 8-разрядные аналого-цифровые преобразователи (АЦП),
обеспечивающие ввод двоичных значений потенциалов, поступающих на входы аналоговых сигналов.
АЦП содержит входной мультиплексер, выбирающий один из входов аналоговых сигналов, набор емкостных делителей
заряда, аналоговый компаратор, регистр по-следовательной аппроксимации и блок управления, в котором имеются
регистр управления и состояния ADSC (рис. 10) и 8-разрядный регистр результата ADC. В микроконтроллере 68HC705P6A
имеется четыре аналоговых входа AD3–0, совмещенных с выводами PC3–6 порта C, в 68HC705B16 — восемь входов AD7–0,
совмещенных с выводами PD7–0 порта D.
Для функционирования АЦП необходимо опорное напряжение, которое в микроконтроллере 68HC705B16 подключается к
отдельным выводам Vrh и Vrl. Типовые значения потенциалов, подаваемых на эти выводы, Vrh = 5 В и Vrl = 0 В. В
68HC705P6A потенциал Vrh подключается к выводу PC7 порта C, а в качестве Vrl используется Vss — потенциал на выводе
“земля”. При разности потенциалов (Vrh – Vrl) = 5 В разрешающая способность АЦП состав-ляет около 20 мВ, а
погрешность преобразования — 10 мА.
Рис. 10. Формат содержимого регистра ADSC (адрес $1E для 68HC705P6A, $09
для 68HC706B16)
Питание аналоговой части АЦП осуществляется от импульсного преобразователя, использующего импульсы, поступающие
от ГТИ или внутреннего RC-генератора. Если частота тактовых импульсов Ft < 1 МГц, то зарядовый преобразователь не
обеспечивает необходимое напряжение питания, и точность преобразования снижается. В этом случае следует включить
внутренний RC-генератор, для чего необходимо установить в регистре ADSC значение бита ADRC = 1.
Регистр ADSC содержит следующие управляющие биты и признаки (рис. 10):
- CH3–0 — осуществляют выбор аналогового входа в соответствии с табл. 4 (бит CH3 используется только в
68HC705B16); измерение потенциалов Vrh, Vrl и 0,5(Vrh – Vrl) производится при тестировании микроконтроллера;
- ADON — разрешает при установке ADON = 1 работу АЦП;
- ADRC — включает при установке значения ADRC = 1 внутренний RC-генератор для питания АЦП;
- CC — признак завершения преобразования — принимает значение CC = 1 после его выполнения; значение CC = 0
устанавливается при записи в регистр ADSC нового содержимого.
Запуск АЦП производится при установке в регистре ADSC значения бита ADON = 1. В процессе работы АЦП принимает
потенциал, установленный на выбранном входе AD7–0 (или AD3–0), и формирует 8-разрядное число, соответствующее
величине этого потенциала, которое записывается в регистр результата ADC (адрес $1D для 68HC705P6A, $08 для 68HC705B16).
Считывание результата в регистр A или X для последующей обработки производится командой LDA или LDX. Поступающий на
вход потенциал Vвх должен находиться в диапазоне Vrh > Vвх > Vrl. Общее время одного преобразования составляет 32Tt,
из которых 12Tt — время выборки, 20Tt — время формирования результата.
Таблица 4. Выбор аналоговых входов АЦП
68HC705B16 |
68HC705P6A |
CH3-0 |
Аналоговый вход |
CH2-0 |
Аналоговый вход |
0000 |
AD0 (PD0) |
000 |
AD0 (PC6) |
0001 |
AD1 (PD1) |
001 |
AD1 (PC5) |
0010 |
AD2 (PD2) |
010 |
AD2 (PC4) |
0011 |
AD3 (PD#0 |
011 |
AD3 (PC3) |
0100 |
AD4 (PD4) |
100 |
Vrh (PC7) |
0101 |
AD5 (PD5) |
101 |
(Vrh + Vrh)/2 |
0110 |
AD6 (PD6) |
110 |
Vrl=VSS |
0111 |
AD7 (PD7) |
111 |
- |
1000 |
Vrh |
|
|
1001 |
(Vrh + Vrt)/2 |
|
|
1010-1111 |
Vrt |
|
|
Следует отметить, что АЦП не вырабатывает запрос прерывания. Поэтому необходимо организовать считывание регистра
результата ADC, анализируя значение признака CC в регистре ADSC, обращение к которому реализуется программно или
с помощью периодиче-ского прерывания.
6. Контроллер ЖКИ
Отличительной особенностью микроконтроллеров 68HC705L16 является наличие контроллера ЖКИ, который
формирует выходные сигналы для изображения знаков в четырех позициях, каждая из которых может иметь до 39
отдельных сегментов. Сигналы управления сегментами ЖКИ поступают на 27 специальных выходов микроконтроллера
FP26–0 и на выходы портов D, E, если они запрограммированы на обслуживание жидкокристаллических индикаторов.
Включение соответствующей знаковой позиции производится сигналами BP3–0, поступающими на выходы PD3–0 порта
D при работе контроллера ЖКИ. Для обеспечения необходимых промежуточных уровней сигналов управления ЖКИ используются
дополнительные входы Vlcd1, Vlcd2 и Vlcd3, на которые подаются постоянные потенциалы 0, Vdd, Vdd/2, Vdd/3 и 2Vdd/3,
комбинация которых зависит от числа используемых знаковых позиций (значение Vdd соответствует подключенному
напряжению питания 5, 3,3 или 2,7 В).
Рис. 11. Формат содержимого регистра управления LCDCR контроллера ЖКИ
Режим работы контроллера ЖКИ задается путем записи соответствующего содержимого в регистр управления LCDCR (адрес $20),
биты которого имеют следующее назначение (рис. 11):
- LCDE — разрешает при установке значения LCDE = 1 выдачу сигналов управления ЖКИ на соответствующие
выходы микроконтроллера;
- DUTY1–0 — определяет число знаковых позиций, обслуживаемых контроллером: 4 при DUTY1–0 = 00 (формируются
сигналы BP3–0), 3 при 11 (сигналы BP2–0), 2 при 10 (сигналы BP1–0), 1 при 01 (сигнал BP0);
- PEH и PEL — при установке в “0” разрешают выдачу сигналов FP27–30 и FP31–34 для управления ЖКИ на выводы
PE7–4 и PE3–0 порта E, соответственно;
- PDH — при установке значения PDH = 0 разрешает выдачу сигналов FP35–38 для управления ЖКИ на выводы PD7–4 порта D.
При установке значений PEH, PEL, PDH = 1 соответствующие выводы будут использоваться для вывода данных,
поступающих в соответствующие порты. В этом случае управление состоянием сегментов обеспечивают только выводы
FP26–0 контроллера.
Контроллер ЖКИ обеспечивает выдачу необходимой последовательности импульсных сигналов на выходы BP3-0, управляющие
состоянием 4 знаковых позиций (back-plane), и FP38–0, управляющие состоянием 39 сегментов (front-plane) на каждой
из позиций. Таким образом, контроллер может обеспечить воспроизведение изображений, содержащих до 156 сегментов.
Частота этих сигналов задается соответствующим программированием базового таймера (раздел 3). Включенное или
выключенное состояние сегментов определяется записью “1” или “0” в соответствующих битах 20 регистров данных
LCDDR1–LCDDR20 (адреса $21–$34) контроллера ЖКИ. Каждый из этих 8-разрядных регистров определяет состояние двух
сегментов для каждой из четырех знаковых позиций. Всего в регистрах данных используется 156 бит, начиная с FP0-0,
FP0-1, FP0-2 и FP0-3 в битах 0–3 регистра LCDDR1, определяющих состояние 1-го сег-мента FP0 в знаковых позициях BP0,
BP1, BP2 и BP3, соответственно, и кончая FP38-0, FP38-1, FP38-2 и FP38-3 в битах 0–3 регистра LCDDR20, определяющих
состояние 39-го сегмента FP38 в этих знаковых позициях (в регистре LCDDR20 не используются четыре старших бита).
Таким образом, микроконтроллеры семейства 68HC705 содержат достаточно широкий набор периферийных устройств, что
позволяет разработчикам с минимальными затратами реализовать на их основе разнообразную аппаратуру различного
назначения.
Более подробную информацию о микроконтроллерах семейства 68HC05 можно получить с помощью сети Internet по адресу
http://sps.motorola.com/csic.
Литература
- Шагурин И.И. Архитектура и функционирование микроконтроллеров семейства Motorola 68HC705// Chip News. —
1999. — № 3. — С. 2–9.
|