Входную цепь МК в цифровом режиме проще всего представить в виде логического КМОП-элемента, который по параметрам примерно соответствует стандартным
сериям микросхем 74HC, 74AC, К561. «Примерно», потому, что есть разница в электрических характеристиках продукции разных фирм, изготавливающих МК.
В отличие от микросхем обычной логики, на входе МК находится подтягивающий резистор и программно управляемый ключ SIN (Рис. 2.25). Если ключ разомкнут, то входное сопротивление МК очень велико. В некоторых семействах резистор присутствует постоянно или же он «притягивается» к общему проводу через отдельный ключ (Рис. 2.26, а...г).
Рис. 2.29. Варианты включения логического элемента DD1 в схеме на Рис. 2.25:
а) вход ТТЛ, выход КМОП;
б) параллельное соединение элементов ТТЛ-КМОП и КМОП-Ш;
в) параллельное соединение двух одинаковых элементов КМОП-Ш.
ром может служить серия микросхем 74HCT (ТТЛ-КМОП), которая отличается по входным характеристикам от аналогичной серии 74HC (КМОП, КМОП-Ш).
Элементы ТТЛ-КМОП, показанные на Рис. 2.29, а, встречаются в семействе Microchip PIC16, причем вперемежку с КМОП. С одной строны это хорошо, т.к. можно напрямую подключать к входам МК микросхемы ТТЛ-логики, но с другой стороны доставляет хлопоты, поскольку надо запоминать, какой вывод микросхемы какой характеристикой обладает — ТТЛ или КМОП. В дальнейшем фирма Microchip отказалась от специализации и в своих новых семействах PIC18/24 сделала их единообразными КМОП-Ш. На фирме STMicroelectronics пошли по другому пути и ввели в семейство STR71 программно переключаемые входы. Хочешь, на выбор, КМОП-Ш или ТТЛ-КМОП.
Схема, показанная на Рис. 2.29, б, относится к классу многофункциональных цифровых портов. Такое встречается, например, в Microchip PIC16F684 и выделяется дробью в обозначении вывода — RA5/T1CKI. Входной сигнал разделяется на два потока: цифровой вход с логическим элементом DD1 (ТТЛ-КМОП) и вход таймера прерывания с логическим элементом DD2 (КМОП-Ш). Оба элемента имеют разные пороги срабатывания по напряжению, поэтому может возникнуть курьёзный случай, когда МК в режиме обычного цифрового входа работает нормально, а при обслуживании запросов прерывания INT даёт сбои.
Схема, показанная на Рис. 2.29, в, тоже является многофункциональной, но в правой и левой частях стоят одинаковые логические элементы. Альтернативными каналами могут быть UART и SPI, синхронные и асинхронные входы обработки прерываний. Параллельное включение двух элементов DD1, DD2 не влияет на суммарное входное сопротивление МК, слишком уж оно велико у полевых транзисторов. Цифровые каналы также могут разделяться не возле входа, а после общего буферного элемента, т.е. вход элемента DD2 соединяется с выходом DD1.
Важный практический нюанс, общий для всех входных цифровых схем. Если линии портов настроены как входы без внутренних «pull-up» резисторов и к ним ничего извне не подключается, то потребляемый МК ток увеличивается чуть ли не на четверть. Парадокса здесь нет, просто «парящие в воздухе» высокоомные КМОП-входы находятся в неустойчивом состоянии (то ли «нуль», то ли «единица») и любая внешняя наводка приводит к «дребезгу». Это заставляет хаотично работать логические элементы внутри МК, что приводит к увеличению динамических потерь и повышению энергопотребления. Рекомендация — все неиспользуемые в схеме входы надо снаружи или изнутри нагружать на резисторы сопротивлением 10...100 кОм или же переводить линии в режим цифровых выходов.
Подведение итогов. Базовой для идеализированного МК предлагается выбрать схему, приведенную на Рис. 2.25. Входы с альтернативными цифровыми функциями будут замещаться схемой, изображенной на Рис. 2.29, в, которая содержит однотипные элементы КМОП-Ш.
Аналоговые входы
Аналоговый режим отличается от цифрового, в первую очередь, уровнями подаваемых на вход сигналов. Для цифрового режима — это стандартные двоичные перепады напряжения НИЗКИЙ/ВЫСОКИЙ. Для аналогового режима допускаются сигналы любой формы в диапазоне 0. VCC.
Изолированные аналоговые входы в МК встречаются редко. В целях экономии места их совмещают с цифровыми линиями и используют как альтернативную функцию порта. В условном изображении МК такие выводы легко идентифицируются по аббревиатуре, начинающейся с первой буквы латинского алфавита: «AN», «ADC4», «AIN» и т.д. Пример — линия RA0/AN0 в микросхеме Microchip PIC16F628A или PC1/ADC1/PCINT9 в микросхеме Atmel ATmega168.
Аналоговые входы МК отождествляются с аналоговым компаратором и АЦП.
Принцип работы аналогового компаратора (Рис. 2.30) заключается в сравнении между собой сигналов на положительном («+», AIN0) и отрицательном («—», AIN1) входах. Если на «положительном» входе напряжение станет хотя бы на несколько милливольт больше, чем на «отрицательном», то выходной сигнал компаратора DA1 станет ВЫСОКИМ, и наоборот. Результат сравнения помещается в один из регистров из области SFR. В некоторых МК сигнал AIN физически выводится наружу, что показано на схеме пунктиром. Программно управляемый переключатель S1 служит для подачи на вход компаратора сигнала от внутреннего источника опорного напряжения (ИОН) или от внешнего вывода AIN0. В некоторых семействах МК переключатель S1 многопозиционный и обеспечивает не два, а несколько дополнительных вариантов коммутации.
Рис. 2.30. Структурная схема узла аналогового компаратора.
Диоды VD1...VD4 и логические элементы DD1, DD2 относятся к цифровому порту (никуда от них не денешься!), но они имеют очень высокое сопротивление и на точность работы компаратора не влияют. Важно только проследить, чтобы цифровые «pull-up» резисторы были программно отключены, иначе пострадают показания абсолютных уровней сигналов.
Главное достоинство аналогового компаратора заключается в высоком быстродействии, иначе его уже давно бы заменили узлом АЦП. Только время покажет, устоит ли аналоговый компаратор перед технологическими достижениями и останется ли он в будущих моделях МК.
Принцип работы многоканального АЦП в МК заключается в измерении абсолютного уровня входного сигнала методом последовательных приближений (чаще) или дельта-сигма-преобразованием (реже). Основным параметром АЦП
считается разрядность. Обычно она составляет 8...12 битов при максимальной частоте выборок 0.1...2 МГц. Для справки, 8-битный АЦП обеспечивает точность измерения входных напряжений около 0.4%, а 10-битный АЦП — около 0.1%, чего вполне достаточно для любительских конструкций.
На Рис. 2.31 в качестве примера показана структурная схема модуля АЦП, применяемого в МК Atmel ATmega16-16PU [2-8]. С незначительными изменениями её можно распространить и на все остальные AVR-контроллеры.
Рис. 2.31. Структурная схема модуля АЦП в МК Atmel ATmega16.
Преобразование «аналог-цифра» осуществляется в 10-битном АЦП последовательного приближения. Для его нормальной работы требуются три сигнала: входной VIN, тактовый ^АцП, образцовый VREF.
Сигнал VIN поступает от мультиплексора, коммутирующего восемь аналоговых каналов с линий PA0...PA7 и два тестовых напряжения 0 и +1.22 В. Выбор источников сигнала осуществляется программным способом через регистр ADMUX. Этот и другие задействованные регистры входят в область SFR.
Сигнал ^АцП получается из тактового сигнала FCLK путем деления на коэффициент 2.128, программно задаваемый регистром ADCSRA. Внутри блока АЦП частота ^ацп делится ещё раз на 13 или 14 в зависимости от однократного или непрерывного режима измерений. Это и будет истинным значением частоты дискретизации сигнала /д. Для справки, второе деление производится потому, что используется АЦП последовательного приближения, а ему для вычисления результата необходимы 13 или 14 машинных тактов.
Пример. Пусть FCLK = 8 МГц, коэффициент деления установлен 16, следовательно, ^Ацл = 500 кГц, i-д = 38.5 кГц (13 тактов) или i-д = 35.7 кГц (14 тактов).
Сигнал VREF может поступать из трёх направлений: от входной линии AREF, от внутреннего ИОН +2.56 В, от источника питания AVCC. Переключение направлений осуществляется электронным ключом, который управляется регистром ADMUX. Вывод AREF имеет непосредственную электрическую связь с модулем АЦП, поэтому, для уменьшения наводок, его обычно шунтируют керамическим
конденсатором ёмкостью 0.1 мкФ. Температурная стабильность ИОН в Atmel ATmega16 оставляет желать лучшего, поэтому для повышения инструментальной точности рекомендуется использовать внешнюю микросхему ИОН с нормированными параметрами и выходным напряжением не более Vcc.
Результат каждого измерения помещается в регистры ADCH (старшие 2 бита) и ADCL (младшие 8 битов). Итого в двух регистрах образуется число в диапазоне 0...1023. Цена одного деления — VREF /1024. Это справедливо для «чистого» режима 10 бит. В ATmega16 имеется ещё один режим, условно называемый 8/10 бит. В нём измерение проводится с точностью 10 битов, но индицируются всего лишь 8 старших битов, т.е. диапазон составляет 0...255, цена одного деления VREF /256.
При работе АЦП надо в начале программы отключать входные «pull-up» резисторы, поскольку линии ADC0.ADC7 по совместительству служат ещё и цифровыми входами PA0...PA7. На структурной схеме Рис. 2.31 для простоты не показаны защитные диоды на линиях ADC0.ADC7, хотя реально они существуют. Диоды ограничивают сверху и снизу измеряемое напряжение VIN. Всё, что выходит за пределы 0. VCC, не обрабатывается и приравнивается снизу к AGND, а сверху к VCC.
Цифровые выходы
Основная функция цифровых выходов в МК заключается в формировании НИЗКИХ и ВЫСОКИХ логических уровней. Выходную цепь в цифровом режиме можно представить КМОП-элементом, который имеет «закрытый» или «открытый» выход со стандартной или повышенной нагрузочной способностью. Прототипы подобных элементов широко представлены в сериях микросхем 74HC, 74AC, КР1561, КР1554.
Различают четыре основных варианта организации выходов в МК:
• двухтактный каскад с выходными уровнями, близкими к VCC и GND (Рис. 2.32, а, б). Сокращённое название «push-pull». Встречается практически во всех микроконтроллерных семействах;
• логический элемент с «истинно» открытым стоком или на сленге с «открытым коллектором» (Рис. 2.33, а, б). Сокращённое название «open drain» или «true open drain». Встречается в семействах Microchip PIC12/16, STMicroelectronics STR71xF, в МК с ядром MCS-51;
• логический элемент с квазиоткрытым стоком (Рис. 2.34, а, б). Сокращённое название «false open drain» из-за присутствия ограничительного диода VD1. Встречается в МК с двунаправленными портами;
• логический элемент с открытым стоком, дополненный внутренним нагрузочным резистором RUP (Рис. 2.35 а, б). Сокращённое название «квазидвунаправленный», встречается в МК с ядром MCS-51.
Для облегчения понимания физики процессов, в функциональные схемы вводятся эквивалентные переключатели SOUT. Они замещают реальные электронные ключи, выполненные на полевых транзисторах. В верхнем положении переключателя SOUT формируется ВЫСОКИЙ, а в нижнем — НИЗКИЙ логический уровень. В тех схемах, где переключатель SOUT является двухполюсником, его разомкнутое состояние эквивалентно «выходу в обрыве» (Рис. 2.33, а, Рис. 2.34, а) или выходу с высокоомным «pull-up» резистором RUP (Рис. 2.35, а).
Управляются переключатели SOUT записью «нуля» или «единицы» в один из битов регистра из области SFR. Например, в линейках микросхем Atmel AVR и Microchip PIC регистры называются PORTx, где «x» — порядковая буква латинского алфавита номера порта МК.
Диоды VD1, VD2 — это антистатические диоды, аналогичные тем, которые рассматривались ранее в схемах организации цифровых входов на Рис. 2.25, Рис. 2.26, а...г. Они являются частью конструкции микросхемы и никуда не исчезают при смене направления с входа на выход. Это своеобразная «плата» за двунаправленность цифровых портов.
Резистор RUP для «квазидвунаправленного» выхода имеет в статическом состоянии такое же большое сопротивление, как и его «тёзка», применяемый на Рис. 2.26, а. Основное отличие заключается в том, что на этапе перехода с НИЗКОГО уровня в ВЫСОКИЙ сопротивление данного резистора на короткое время становится очень малым, формируя тем самым крутой нарастающий фронт сигнала. Эта особенность является фирменной меткой всех МК, совместимых с
ядром MCS-51 [2-9].
Низкоомные резисторы R1H и R0L представляют собой сопротивления открытых каналов соответственно ^-МОП и и-МОП транзисторов выходного каскада. В числовом выражении это единицы-десятки ом в зависимости от технологии изготовления и нагрузочной способности по току (Табл. 2.6).
Таблица 2.6. Классификация выходных КМОП-каскадов в МК
Тип выхода | Обозначение | Ih [мА] | Подключаемая нагрузка |
Слабый | «Week» | 1...8 | Маломощные транзисторные ключи, светодиоды без ограничительных резисторов, КМОП-логика |
Стандартный | «Standard» | 20...25 | Любые транзисторные ключи, светодиоды с ограничительными резисторами, логические элементы |
Мощный | «Power» | 100...200 | Реле, небольшие двигатели, лампы, нагреватели |
В двухтактных схемах («push-pull») токовая нагрузка при НИЗКОМ и ВЫСОКОМ уровнях может быть разной. «Заковыка» заключается в мощности рассеяния транзисторов, входящих в комплементарную пару выходного каскада. Например, в семействе Atmel AT90S верхний по схеме транзистор «слабый», ток нагрузки I1H = 1.5...3 мА, а нижний — «стандартный», ток нагрузки I0L = 10...20 мА.
Бывает, что во всех портах оба выходных транзистора «слабые» (Philips LPC2104) или оба «стандартные» (Atmel AVR, Microchip PIC). А вот всех линий с «мощными» каскадами в одной микросхеме не бывает. Они применяются, как правило, в 16- и 32-битных МК, но в единичном количестве, и служат полезным дополнением к уже имеющимся выходам.
Наиболее толерантным к типам выходных каскадов оказалось семейство Atmel AT91S, в котором мирно уживаются все три градации, перечисленные в Табл. 2.6.
Самые востребованные и ходовые — это симметричные выходные каскады «Standard» с примерно одинаковой нагрузочной способностью при НИЗКОМ и ВЫСОКОМ уровне. Для разработчика такая ситуация очень удобна, поскольку не надо мучительно долго вспоминать, на какую шину (к питанию или к «массе») допускается присоединять нагрузку. Именно этот вариант и предлагается выбрать в качестве основного для цифровых выходов идеализированного МК.
На Рис. 2.36, а, б показаны усреднённые вольт-амперные характеристики (ВАХ) выходного транзисторного каскада «Standard».
Рис. 2.36. Усреднённые ВАХ цифровых выходов идеализированного МК: а) вытекающий ток I1H при ВЫСОКОМ уровне; б) втекающий ток I0L при НИЗКОМ уровне.
Чтобы сравнивать между собой графики, приведенные в даташитах для конкретных типов МК, следует чётко ориентироваться в терминологии:
• I1H = 20...25 мА, I0L = 20...25 мА — это максимальные токи нагрузки через резисторы R1H, R0L, при которых ещё гарантируются выходные логические КМОП-уровни от 0 до (0.1...0.2) VCC и от (0.6...0.8) VCC до VCC;
• IMAX = 35.. .45 мА — это предельный ток нагрузки на одну линию порта, длительное превышение которого может привести (хотя и не обязательно) к отказу МК;
• 1КЗ = 100...150 мА — это ток короткого замыкания линии порта на общий провод или на шину питания. Если не снять замыкание в течение первых 10.15 с, то температурный перегрев транзисторов выходного каскада с большой долей вероятности приведёт к фатальным последствиям.
Аналоговые выходы
Считается, что «истинно» аналоговые выходы имеются только в канале ЦАП (англ. DAC — Digital-to-Analog Converter), поскольку широтно-импульсный модулятор, с помощью которого тоже получают аналоговые сигналы, теоретически относится к классу цифровых устройств.
Линии ЦАП при малейшей возможности стараются физически удалять от цифровых портов для уменьшения перекрёстных помех. Их выполняют в виде автономных узлов с обособленной группой выводов. И только при нехватке линий портов производят совмещение функций, как, например, в Atmel ATXmega.
На Рис. 2.37 показана структурная схема 12-битного ЦАП, применяе-
мого в микроконверторах семейства ADuC812 фирмы Analog Devices. Выходной сигнал DAC0 имеет характерные ступеньки напряжений и формируется по классической схеме на коммутируемой матрице резисторов «R-2R». Резисторы здесь настоящие, прозваниваемые, причём достаточно высокой точности.
Цифровой код, соответствующий выходному напряжению, записывается в регистры из области SFR. Для адресации 12 бит требуются два 8-разрядных регистра. Блок переключателей содержит электронные ключи, которые электрически соединяют выводы резисторов «2R» с общим проводом или с ИОН. В качестве последнего может на выбор использоваться или внутренний источник, или внешний эталон.
Усилитель DA1 служит буфером, снижающим выходное сопротивление и уменьшающим влияние нагрузки на точность уровней ЦАП. Иногда ставят усилитель с программируемым коэффициентом передачи, что позволяет оперативно масштабировать выходное напряжение. Задача сглаживания формы выходного сигнала решается внешними RC-фильтрами или активными ФНЧ. Чем выше разрядность ЦАП (обычно 8...14 бит), тем проще устройство выходного фильтра.
Для изготовления микроконтроллерного ЦАП требуется гибридная технология, позволяющая объединить на одной кремниевой пластине цифровые и аналоговые узлы, в частности, логические элементы и прецизионные резисторы. Если наличие ЦАП чрезмерно повышает стоимость микросхемы, то в качестве альтернативы можно использовать обычный МК с каналом ШИМ и внешним фильтром. Этот метод хорошо отработан как на аппаратном, так и на программном уровне.
Слабым подобием узла ЦАП также можно считать внутренний программно управляемый ИОН, имеющийся, например, в Microchip PIC16F628A. Если настроить линию VREF в режим выхода и программно изменять опорное напряжение согласно его градациям, то результирующий сигнал будет иметь чёткие ступеньки, как в ЦАП. Недостаток такого решения заключается в малом количестве самих ступенек и низкой точности абсолютных значений напряжения.
В идеализированном МК отдельный модуль ЦАП пока «не смотрится», поскольку на нынешнем этапе развития он, скорее, заморская диковинка, чем реальная вещь.
Двунаправленные порты ввода/вывода
МК, как и любое другое уважающее себя электронное устройство, не может в одночасье работать и на ввод, и на вывод. Только последовательно во времени, сначала ввод, затем вывод, или наоборот. Однако оперативно переключать режимы «Вход/Выход» МК может, чем широко пользуются программисты.
Электрическая схема совмещённого порта ввода/вывода показана на Рис. 2.38. Она получается как суперпозиция схем, изображённых на Рис. 2.25 и Рис. 2.32, а.
Переключатель SOUT имеет две взаимосвязанные группы контактов. Он отвечает за коммутацию НИЗКОГО и ВЫСОКОГО уровней, а также за подключение и отключение резистора RUP. Переключатель SIN выбирает режим ввода (верхнее по схеме положение) или режим вывода данных (нижнее по схеме положение).
Переключатель SIN действует независимо от SOUT. Оба переключателя управляются двумя программно-доступными регистрами из области SFR. В разных семействах МК они имеют разные названия (Табл. 2.7). Здесь регистр PORTx эквивалентен переключателю SOUT, а регистры DDRx, TRISx — переключателю SIN. Изменение битов в регистрах вызывает соответствующее замыкание контактов.
Таблица 2.7. Управление режимами в AVR- и PIC-контроллерах
Если сравнивать AVR- и PIC-контроллеры, то заметна большая разница в сочетаниях битов, переключающих направление «Вход/Выход» и уровни «ВЫСОКИЙ/НИЗКИЙ». Стандартизация, к сожалению, отсутствует, что следует учитывать при переходе от одного семейства МК к другому.
Наличие совмещённых портов ввода/вывода является большим достоинством МК, т.к. позволяет конструировать гибкие по функциональным возможностям изделия. Изредка встречаются МК, у которых часть выводов жёстко настроена только на приём или только на передачу информации, например, Zilog Z86L33, но их меньшинство.
Идеализированный МК должен иметь усреднённые характеристики, поэтому базовой для него предлагается схема, приведенная на Рис. 2.38. Программной настройкой управляющих регистров контроллер может перестроиться в режимы, аналогичные Рис. 2.32, а, Рис. 2.34, а, Рис. 2.35, а. В последнем случае НИЗКИЙ уровень формируется «нулевым» напряжением на выходе, а ВЫСОКИЙ — переводом МК в режим входа с «pull-up» резистором.
Важное замечание. При начальном включении питания или подаче сигнала сброса все линии портов обычного МК независимо от желания программиста переходят в «оборванное» высокоимпедансное Z-состояние, что эквивалентно режиму входа без «pull-up» резистора (Рис. 2.34, а). Исключение из правила составляют МК, совместимые с MCS-51, у которых при сбросе резистор не отключается (Рис. 2.35, а).
Данный момент надо учитывать при разработке реальных схем. В частности, если нагрузкой выходной линии МК служит транзисторный ключ, то, чтобы его база или затвор при сбросе не «висели в воздухе», в AVR- и PIC-контроллерах ставят дополнительные внешние резисторы сопротивлением 10.100 кОм на общий провод или на цепь питания. Для МК с ядром MCS-51 этого делать не надо из-за постоянного присутствия на выходе внутреннего резистора RUP.