Распродажа

Электронные компоненты со склада по низким ценам, подробнее >>>

Содержание ChipNews

2003: 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
2002: 
1, 5, 6, 7, 8, 9
2001: 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
2000: 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
1999: 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Новости электроники

Мне нравится

Комментарии

дима пишет в теме Параметры биполярных транзисторов серии КТ827:

люди куплю транзистар кт 827А 0688759652

тамара плохова пишет в теме Журнал Радио 9 номер 1971 год. :

как молоды мы были и как быстро пробежали годы кулотино самое счастливое мое время

Ивашка пишет в теме Параметры отечественных излучающих диодов ИК диапазона:

Светодиод - это диод который излучает свет. А если диод имеет ИК излучение, то это ИК диод, а не "ИК светодиод" и "Светодиод инфракрасный", как указано на сайте.

Владимир пишет в теме 2Т963А-2 (RUS) со склада в Москве. Транзистор биполярный отечественный:

Подскажите 2т963а-2 гарантийный срок

Владимир II пишет... пишет в теме Параметры биполярных транзисторов серии КТ372:

Спасибо!

И. Шагурин

Периферийные устройства микроконтроллеров семейства 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 имеют следующее назначение:

    При включении передатчика или приемника выводы PD1 и PD0 подключаются, соответственно, к выходу передатчика TDO или входу приемника RDI и не могут служить в качестве входов данных порта D. При записи бита SBK = 0 передатчик посылает 10 или 11 нулей на выход TDO, а затем устанавливает на выходе уровень "1" и начинает передачу символа, если в регистр SCDR загружены данные.
    Регистр состояния SCSR (рис. 2в), при обращении к которому производится только считывание, содержит семь признаков, устанавливаемых в процессе приема или передачи данных:

    Признаки 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:

    Остальные управляющие биты и признаки, устанавливаемые в регистрах 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), обеспечивающих последовательный обмен. Данные выводы имеют следующее назначение:

    Включение выводов ведущего и ведомого 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, подключаемые к выводам PB57 порта 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 (адрес $1819), дополнительный счетчик ACNTR (адрес $1A1B), регистр захвата ICR (адрес $1415) и регистр сравнения OCR (адрес $1617).
    Запуск счетчика 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 (адрес $1C1D) и сравнения OCR2 (адрес $1E1F), а также дополнительные управляющие биты в регистр 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а):

    В регистре состояния 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. Формат содержимого регистров управления базового таймера

    Многофункциональный таймер 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):

Рис. 9. Формат содержимого регистра управления COPCR (адрес $1E)

    Значения битов COPE и CM10 могут быть установлены только один раз в процессе запуска микроконтроллера (процедура RESET), затем они могут только считываться. Значение бита CME может считываться и устанавливаться в процессе работы микроконтроллера.
    Программируемый контроль выполнения программы c помощью таймера WDT осуществляется при значениях битов COPE = PCOPE = 1. Таймер WDT с периодом времени Tw вырабатывает сигнал, который прекращает выполнение программы и производит повторный запуск микроконтроллера (процедура RESET сброс в начальное состояние). Чтобы избежать этого, необходимо сбрасывать WDT в нулевое состояние до наступления времени Tw. Сброс WDT выполняется путем периодической записи в 8-разрядный регистр COPR (адрес $1D) числа $55, а затем $AA. Промежуток времени между записью этих чисел не должен превышать Tw, значение которого определяется битами CM10 в регистре 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 при TBR10 = 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 имеется четыре аналоговых входа AD30, совмещенных с выводами PC36 порта C, в 68HC705B16 восемь входов AD70, совмещенных с выводами PD70 порта 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):

    Запуск АЦП производится при установке в регистре ADSC значения бита ADON = 1. В процессе работы АЦП принимает потенциал, установленный на выбранном входе AD70 (или AD30), и формирует 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 специальных выходов микроконтроллера FP260 и на выходы портов D, E, если они запрограммированы на обслуживание жидкокристаллических индикаторов. Включение соответствующей знаковой позиции производится сигналами BP30, поступающими на выходы PD30 порта D при работе контроллера ЖКИ. Для обеспечения необходимых промежуточных уровней сигналов управления ЖКИ используются дополнительные входы Vlcd1, Vlcd2 и Vlcd3, на которые подаются постоянные потенциалы 0, Vdd, Vdd/2, Vdd/3 и 2Vdd/3, комбинация которых зависит от числа используемых знаковых позиций (значение Vdd соответствует подключенному напряжению питания 5, 3,3 или 2,7 В).

Рис. 11. Формат содержимого регистра управления LCDCR контроллера ЖКИ

    Режим работы контроллера ЖКИ задается путем записи соответствующего содержимого в регистр управления LCDCR (адрес $20), биты которого имеют следующее назначение (рис. 11):

    При установке значений PEH, PEL, PDH = 1 соответствующие выводы будут использоваться для вывода данных, поступающих в соответствующие порты. В этом случае управление состоянием сегментов обеспечивают только выводы FP260 контроллера.
    Контроллер ЖКИ обеспечивает выдачу необходимой последовательности импульсных сигналов на выходы BP3-0, управляющие состоянием 4 знаковых позиций (back-plane), и FP380, управляющие состоянием 39 сегментов (front-plane) на каждой из позиций. Таким образом, контроллер может обеспечить воспроизведение изображений, содержащих до 156 сегментов. Частота этих сигналов задается соответствующим программированием базового таймера (раздел 3). Включенное или выключенное состояние сегментов определяется записью "1" или "0" в соответствующих битах 20 регистров данных LCDDR1LCDDR20 (адреса $21$34) контроллера ЖКИ. Каждый из этих 8-разрядных регистров определяет состояние двух сегментов для каждой из четырех знаковых позиций. Всего в регистрах данных используется 156 бит, начиная с FP0-0, FP0-1, FP0-2 и FP0-3 в битах 03 регистра LCDDR1, определяющих состояние 1-го сег-мента FP0 в знаковых позициях BP0, BP1, BP2 и BP3, соответственно, и кончая FP38-0, FP38-1, FP38-2 и FP38-3 в битах 03 регистра LCDDR20, определяющих состояние 39-го сегмента FP38 в этих знаковых позициях (в регистре LCDDR20 не используются четыре старших бита).
    Таким образом, микроконтроллеры семейства 68HC705 содержат достаточно широкий набор периферийных устройств, что позволяет разработчикам с минимальными затратами реализовать на их основе разнообразную аппаратуру различного назначения.
    Более подробную информацию о микроконтроллерах семейства 68HC05 можно получить с помощью сети Internet по адресу http://sps.motorola.com/csic.

    Литература