Подсистема портов ввода/вывода

Порты, порты и ещё раз порты. Без их детального изучения в микроконтроллерной технике не обойтись. Порты в 8-битных МК содержат по 8 линий (выводов, разрядов, битов). Но это не догма. В разных семействах МК порты могут логически объединяться в группы по 4, 16 или 32 линии.

Различают две системы нумерации портов — цифровую и буквенную.

Цифровая нумерация берёт начало от прародителя MCS-51 и содержит следующие элементы: букву «Р» (англ. «Port»), затем цифру номера порта 0...3, разделительную точку, цифру номера текущей линии 0...7.

Пример. «Р3.4» — пятая линия четвёртого по счёту порта. Цифра «3» обманчива, как майский снег. По ней нельзя судить об истинном количестве портов в МК. К примеру, 20-выводная микросхема Atmel АТ89С4051 физически имеет всего лишь два порта, но для совместимости программного обеспечения с MCS-51 один из портов называется Р1 (а не РО), а другой РЗ (а не Р1).

Разновидности цифровой нумерации:

  • отсутствует разделительная точка между цифрами (Р25, РЗЗ);
  • добавление к букве «Р» одной или нескольких других букв (ВР10, GPI024);
  • цифра номера порта больше, чем 3 (Р9.1, Р5.5);
  • номер текущей линии больше, чем 7 (Р0.31, Р2.14).

Буквенная нумерация появилась позже цифровой. В её основе лежит здравая идея замены цифры порта порядковой буквой латинского алфавита. Новая система обозначений содержит следующие элементы: букву «Р», номер порта «A...Z», номер текущей линии 0...7.

Пример. «РА2» — третья по счёту линия порта «А». Почему «третья»? Потому что программисты начинают счёт не с единицы, как обычные люди, а с нуля.

Разновидности буквенной нумерации:

  • замена буквы «Р» другой буквой (RA2);
  • добавление к букве «Р» одной или нескольких других букв (GPIOA2, РТВЗ);
  • номер текущей линии больше, чем 7 (РА25, PF15).

Подсистема портов ввода/вывода

Порт для удобства понимания можно представить в виде морской гавани (Рис. 2.24). В неё заходят корабли (вводятся электрические сигналы), и оттуда они отправляются в плавание (выходят электрические сигналы). Линии порта — это отдельные судоходные каналы или, по-морскому, фарватеры, ограниченные бакенами (буями). Направление движения в канале в любой момент времени может быть изменено на противоположное. Некоторые каналы имеют особый статус. К примеру, две линии портов РС5, РС6 на Рис. 2.24 физически отсутствуют или же они спрятаны внутри и доступны на чтение только для ЦПУ, как в MCS-51.

Количество портов зависит в первую очередь от размера корпуса. Общая тенденция — чем больше выводов имеет микросхема, тем больше в ней линий портов, тем больше выполняемых функций, но тем дороже она продаётся.

Классификация портов

По типу сигналов различают:

  • цифровые порты, использующие на входе и на выходе дискретные логические уровни ВЫСОКИЙ/НИЗКИЙ;
  • аналоговые порты, использующие плавно весь диапазон входных/выходных напряжений О...Ксс. В редких случаях, например, в микроконвертерах Analog Devices, допускаются двухполярные входные аналоговые сигналы;
  • смешанные порты, которые в процессе работы могут оперативно изменить режим и перейти с «цифры» на «аналог», и наоборот.

Смешанный вариант сам по себе уникален, ведь совмещение цифровых и аналоговых функций под крышей одного вывода — это поистине микроконтроллерное «ноу-хау». В микропроцессорах серии i8080 такого ещё не было.

Несмотря на формальное преимущество смешанных портов, тем не менее, если корпус МК большой, то аналоговые выводы стараются физически отделить от цифровой части и подвести к ним «своё» питание и «землю». Данный приём встречается в 32-битных МК, что позволяет уменьшить перекрёстные помехи.

По направлению передани сигнала различают:

  • входные порты, предназначенные только для ввода информации;
  • выходные порты, предназначенные только для вывода информации;
  • двунаправленные порты, режим работы которых изменяется с входа на выход в зависимости от инструкций программы;
  • порты с переключаемой альтернативной функцией, например, цифровой порт, совмещённый с АЦП, с входом таймера, с UART, ШИМ и т.д.

Подсистема портов ввода/вывода

Монофункциональные порты первого и второго типов сейчас встречаются крайне редко. Слишком уж расточительно такое «барство» для малоразмерных МК. Чистые двунаправленные порты третьего типа тоже теряют свои позиции. В настоящее время самыми распространёнными являются порты четвёртого типа. Более того, наблюдается чёткая тенденция к увеличению числа альтернативных функций, «навешанных» на одну линию.

В условном обозначении МК альтернативные функции принято перечислять через дробь. Однако, если дробей много, то ухудшается читаемость схемы.

Пример надписи: GP4/T1G/OSC2/CLKOUT. Именно так в даташите на микросхему Microchip PIC12F629 указываются три дополнительные функции для одной цифровой линии порта GP4.

Модной тенденцией последнего времени стало динамичное распределение альтернативных функций портов. Имеется в виду, что каждому выводу микросхемы может быть оперативно назначена своя функция. Например, нулевой канал АЦП на выбор можно подключить или к линии РАО, или к линии РА5 и т.д. В даташитах приводятся переводные таблицы режимов, которые переключаются регистрами из области SFR. Так сделано, например, в М К семейства Atmel ATXmega.

Жизнь показывает, что в реальных программах линии портов чаще всего выполняют какую-то одну задачу, например, цифровой логический выход, генератор сигналов ШИМ, вход АЦП, выход ЦАП. Режимы работы задаются в начале программы при инициализации регистров и в дальнейшем не изменяются.

Быстрое переключение свойств выводов МК встречается редко, ведь для этого требуются определённые программные навыки и нетрадиционные схемные решения. Следовательно, на первый план выходит умение разбираться в тонкостях подключения одиночных линий входных и выходных портов первого и второго типов. Уяснив их работу, в дальнейшем будет нетрудно перейти к анализу смешанных портов третьего и четвёртого типов.

Итак, рассмотрению подлежат: цифровые входы, аналоговые входы, цифровые выходы, аналоговые выходы, двунаправленные входы/выходы.

Цифровые входы

Входную цепь МК в цифровом режиме проще всего представить в виде логического КМОП-элемента, который по параметрам примерно соответствует стандартным сериям микросхем 74НС, 74АС, К561. «Примерно», потому, что есть разница в электрических характеристиках продукции разных фирм, изготавливающих МК.

В отличие от микросхем обычной логики, на входе МК находится подтягивающий резистор RUP и программно управляемый ключ 5|N (Рис. 2.25). Если ключ разомкнут, то входное сопротивление М К очень велико. В некоторых семействах резистор присутствует постоянно или же он «притягивается» к общему проводу через отдельный ключ (Рис. 2.26, а...г).

Подсистема портов ввода/вывода

Подсистема портов ввода/вывода

Логический элемент DDI, что на Рис. 2.25, выполняется по технологии КМОП и имеет характеристику триггера Шмитта (КМОП-Ш, Рис. 2.27). Это повышает помехоустойчивость. Той же цели служит линия задержки А1, которая отсекает короткие импульсные помехи.

Резисторы RuР, /?DOwn> как и в П°Д~ системе сброса, изготавливаются на основе интегральных полевых транзисторов, поэтому прозвонить их омметром нельзя. Большой технологический разброс определяет широкие допуски, вплоть до ±50% от номинала, например, 30...100 кОм.

Редко, но встречаются МК с индивидуальной настройкой сопротивления входных резисторов. Например, для Texas Instruments MSP430xl 1х (версия с MaskROM) обеспечивается выбор 10 градаций сопротивлений в диапазоне 2.1...506 кОм путем пережигания плавких перемычек в заводских условиях.

Резисторы имеют англоязычные названия: «pull-up» («тянуть вверх»), «pulldown» («тянуть вниз»). Если для коммутации резисторов применяется ключ («switch»), то используются похожие термины «switched pull-up», «switched pulldown». Почему вверх и вниз? Потому что на электрических схемах принято рисовать общий провод внизу, а вывод питания вверху.

Диоды VD1, VD2защитные, антистатические. Они присутствуют в МК так же, как и в обычных микросхемах КМОП-логики. При входном напряжении выше уровня Vcc открывается диод VD1. При уменьшении входного напряжения ниже уровня GND открывается диод VD2.

Насколько большими в абсолютных числах могут быть скачки напряжения? Для большинства М К по даташитам допускается не более +0.3/—0.3 В, как например, в Microchip PIC12/16/18/24. Встречается повышенная устойчивость входов к перенапряжениям +0.5/—0.5 В (Atmel AYR, Analog Devices Blackfin).

Подсистема портов ввода/вывода

Подсистема портов ввода/вывода

 

Бывают несимметричные уровни +0.5/—0.3 В (Maxim/Dallas DS89C430) или +0.5/-1.0 В (Atmel AT90S).

В даташитах можно найти параметр «Input/Output clamp current» или «DC injection current». Для МК фирмы Microchip его значение составляет +20/—20 мА, что хорошо согласуется с рекомендациями международной ассоциации JEDEC для микросхем КМОП-логики (Рис. 2.28) . Что же означает этот параметр? Имеется в виду максимальное значение прямого тока, которое выдерживают защитные диоды VD1 и VD2 при выходе напряжения за нормальные пределы. Это стрессовый параметр аварийного режима, на который нельзя ориентироваться при разработках.

Но в некоторых даташитах указываются гарантированные прямые токи, после воздействия которых микросхема возвращается в исходное состояние без повреждения полупроводниковых структур. Например, TMS320F фирмы Texas Instruments официально допускает длительное протекание тока через защитные диоды +2/—2 мА, а в MC9S08 фирмы Freescale Semiconductor указан суммарный ток через все защитные диоды не более 5 мА. Рекордные токи гарантируются в семействе STR71 фирмы STMicroelectronics: +5/—5 мА длительно для одного диода, но не более 25 мА суммарно по всем диодам.

Схемные разновидности цифровых входов показаны на Рис. 2.29, а...в. Сокращение ТТЛ-КМОП означает логический элемент, выполненный по технологии КМОП, но имеющий входные уровни, совместимые с ТТЛ (+0.4/+2.4 В). Примером может служить серия микросхем 74НСТ (ТТЛ-КМОП), которая отличается по входным характеристикам от аналогичной серии 74НС (КМОП, КМОП-LU).

Элементы ТТЛ-КМОП, показанные на Рис. 2.29, а, встречаются в семействе Microchip PIC 16, причем вперемежку с КМОП. С одной строны это хорошо, т.к. можно напрямую подключать к входам МК микросхемы ТТЛ-логики, но с другой стороны доставляет хлопоты, поскольку надо запоминать, какой вывод микросхемы какой характеристикой обладает — ТТЛ или КМОП. В дальнейшем фирма Microchip отказалась от специализации и в своих новых семействах PIC18/24 сделала их единообразными КМОП-Ш. На фирме STMicroelectronics пошли по другому пути и ввели в семейство STR71 программно переключаемые входы. Хочешь, на выбор, КМОП-Ш или ТТЛ-КМОП.

Схема, показанная на Рис. 2.29, б, относится к классу многофункциональных цифровых портов. Такое встречается, например, в Microchip PIC16F684 и выделяется дробью в обозначении вывода — RA5/T1CKI. Входной сигнал разделяется на два потока: цифровой вход с логическим элементом DDI (ТТЛ-КМОП) и вход таймера прерывания с логическим элементом DD2 (КМОП-Ш). Оба элемента имеют разные пороги срабатывания по напряжению, поэтому может возникнуть курьёзный случай, когда МК в режиме обычного цифрового входа работает нормально, а при обслуживании запросов прерывания INT даёт сбои.

Схема, показанная на Рис. 2.29, в, тоже является многофункциональной, но в правой и левой частях стоят одинаковые логические элементы. Альтернативными каналами могут быть UART и SPI, синхронные и асинхронные входы обработки прерываний. Параллельное включение двух элементов DDI, DD2 не влияет на суммарное входное сопротивление МК, слишком уж оно велико у полевых транзисторов. Цифровые каналы также могут разделяться не возле входа, а после общего буферного элемента, т.е. вход элемента DD2 соединяется с выходом DDL

Важный практический нюанс, общий для всех входных цифровых схем. Если линии портов настроены как входы без внутренних «pull-up» резисторов и к ним ничего извне не подключается, то потребляемый МК ток увеличивается чуть ли не на четверть. Парадокса здесь нет, просто «парящие в воздухе» высокоомные КМОП-входы находятся в неустойчивом состоянии (то ли «нуль», то ли «единица») и любая внешняя наводка приводит к «дребезгу». Это заставляет хаотично работать логические элементы внутри МК, что приводит к увеличению динамических потерь и повышению энергопотребления. Рекомендация — все неиспользуемые в схеме входы надо снаружи или изнутри нагружать на резисторы сопротивлением 10... 100 кОм или же переводить линии в режим цифровых выходов.

Подведение итогов. Базовой для идеализированного МК предлагается выбрать схему, приведенную на Рис. 2.25. Входы с альтернативными цифровыми функциями будут замещаться схемой, изображенной на Рис. 2.29, в, которая содержит однотипные элементы КМОП-Ш.

Аналоговые входы

Аналоговый режим отличается от цифрового, в первую очередь, уровнями подаваемых на вход сигналов. Для цифрового режима — это стандартные двоичные перепады напряжения НИЗКИЙ/ВЫСОКИЙ. Для аналогового режима допускаются сигналы любой формы в диапазоне 0... Ксс.

Подсистема портов ввода/вывода

Изолированные аналоговые входы в М К встречаются редко. В целях экономии места их совмещают с цифровыми линиями и используют как альтернативную функцию порта. В условном изображении МК такие выводы легко идентифицируются по аббревиатуре, начинающейся с первой буквы латинского алфавита: «AN», «ADC4», «AIN» и т.д. Пример — линия RA0/AN0 в микросхеме Microchip PIC16F628A или PC1/ADC1/PCINT9 в микросхеме Atmel ATmegal68.

Аналоговые входы МК отождествляются с аналоговым компаратором и АЦП.

Принцип работы аналогового компаратора (Рис. 2.30) заключается в сравнении между собой сигналов на положительном («+», AIN0) и отрицательном («—», AIN1) входах. Если на «положительном» входе напряжение станет хотя бы на несколько милливольт больше, чем на «отрицательном», то выходной сигнал компаратора DA1 станет ВЫСОКИМ, и наоборот. Результат сравнения помещается в один из регистров из области SFR. В некоторых МК сигнал AIN физически выводится наружу, что показано на схеме пунктиром. Программно управляемый переключатель S1 служит для подачи на вход компаратора сигнала от внутреннего источника опорного напряжения (ИОН) или от внешнего вывода AIN0. В некоторых семействах М К переключатель S1 многопозиционный и обеспечивает не два, а несколько дополнительных вариантов коммутации.

Диоды VD1...VD4 и логические элементы DDI, DD2 относятся к цифровому порту (никуда от них не денешься!), но они имеют очень высокое сопротивление и на точность работы компаратора не влияют. Важно только проследить, чтобы цифровые «pull-up» резисторы были программно отключены, иначе пострадают показания абсолютных уровней сигналов.

Главное достоинство аналогового компаратора заключается в высоком быстродействии, иначе его уже давно бы заменили узлом АЦП. Только время покажет, устоит ли аналоговый компаратор перед технологическими достижениями и останется ли он в будущих моделях МК.

Принцип работы многоканального АЦП в МК заключается в измерении абсолютного уровня входного сигнала методом последовательных приближений (чаще) или дельта-сигма-преобразованием (реже). Основным параметром АЦП считается разрядность.

Подсистема портов ввода/вывода

 

Обычно она составляет 8... 12 битов при максимальной частоте выборок 0.1...2 МГц. Для справки, 8-битный АЦП обеспечивает точность измерения входных напряжений около 0.4%, а 10-битный АЦП — около 0.1%, чего вполне достаточно для любительских конструкций.

На Рис. 2.31 в качестве примера показана структурная схема модуля АЦП, применяемого в МК Atmel ATmegal6-l6PU [2-8]. С незначительными изменениями её можно распространить и на все остальные AYR-контроллеры.

Преобразование «аналог-цифра» осуществляется в 10-битном АЦП последовательного приближения. Для его нормальной работы требуются три сигнала: входной V]N, тактовый Fmn, образцовый ^REF.

Сигнал Уш поступает от мультиплексора, коммутирующего восемь аналоговых каналов с линий РА0...РА7 и два тестовых напряжения 0 и +1.22 В. Выбор источников сигнала осуществляется программным способом через регистр ADMUX. Этот и другие задействованные регистры входят в область SFR.

Сигнал Faцп получается из тактового сигнала FCLK путем деления на коэффициент 2... 128, программно задаваемый регистром ADCSRA. Внутри блока АЦП частота FAцп делится ещё раз на 13 или 14 в зависимости от однократного или непрерывного режима измерений. Это и будет истинным значением частоты дискретизации сигнала F^. Для справки, второе деление производится потому, что используется АЦП последовательного приближения, а ему для вычисления результата необходимы 13 или 14 машинных тактов.

Пример. Пусть Fclk = 8 МГц, коэффициент деления установлен 16, следовательно, Faцп = 500 кГц, F^ = 38.5 кГц (13 тактов) или F^ = 35.7 кГц (14 тактов).

Сигнал ^REF может поступать из трёх направлений: от входной линии AREF, от внутреннего ИОН +2.56 В, от источника питания AYCC. Переключение направлений осуществляется электронным ключом, который управляется регистром ADMUX. Вывод AREF имеет непосредственную электрическую связь с модулем АЦП, поэтому, для уменьшения наводок, его обычно шунтируют керамическим конденсатором ёмкостью 0.1 мкФ. Температурная стабильность ИОН в Atmel ATmegal6 оставляет желать лучшего, поэтому для повышения инструментальной точности рекомендуется использовать внешнюю микросхему ИОН с нормированными параметрами и выходным напряжением не более Усс.

Результат каждого измерения помещается в регистры ADCH (старшие 2 бита) и ADCL (младшие 8 битов). Итого в двух регистрах образуется число в диапазоне 0... 1023. Цена одного деления — ^REF/1024. Это справедливо для «чистого» режима 10 бит. В ATmegal6 имеется ещё один режим, условно называемый 8/10 бит. В нём измерение проводится с точностью 10 битов, но индицируются всего лишь 8 старших битов, т.е. диапазон составляет 0...255, цена одного деления VREF/256.

При работе АЦП надо в начале программы отключать входные «pull-up» резисторы, поскольку линии ADC0...ADC7 по совместительству служат ещё и цифровыми входами РА0...РА7. На структурной схеме Рис. 2.31 для простоты не показаны защитные диоды на линиях ADC0...ADC7, хотя реально они существуют. Диоды ограничивают сверху и снизу измеряемое напряжение Уш. Всё, что выходит за пределы 0...КСС, не обрабатывается и приравнивается снизу к AGND, а сверху к Vcc.

Цифровые выходы

Основная функция цифровых выходов в МК заключается в формировании НИЗКИХ и ВЫСОКИХ логических уровней. Выходную цепь в цифровом режиме можно представить КМОП-элементом, который имеет «закрытый» или «открытый» выход со стандартной или повышенной нагрузочной способностью. Прототипы подобных элементов широко представлены в сериях микросхем 74НС, 74AC, КР1561, ICP1554.

Различают четыре основных варианта организации выходов в МК:

  • двухтактный каскад с выходными уровнями, близкими к 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. Встречается в МК с двунаправленными портами;
  • логический элемент с открытым стоком, дополненный внутренним нагрузочным резистором /?ир (Рис. 2.35 а, б). Сокращённое название «квазидвунаправленный», встречается в МК с ядром MCS-51.

Для облегчения понимания физики процессов, в функциональные схемы вводятся эквивалентные переключатели 5оит. Они замещают реальные электронные ключи, выполненные на полевых транзисторах. В верхнем положении переключателя 5оитформируется ВЫСОКИЙ, а в нижнем — НИЗКИЙ логический уровень. В тех схемах, где переключатель 50ит является двухполюсником, его разомкнутое состояние эквивалентно «выходу в обрыве» (Рис. 2.33, а, Рис. 2.34, а) или выходу с высокоомным «pull-up» резистором /?ир (Рис. 2.35, а).

Подсистема портов ввода/вывода

Подсистема портов ввода/вывода

Подсистема портов ввода/вывода

Подсистема портов ввода/вывода

Таблица 2.6. Классификация выходных КМОП-каскадов в МК

Тйп выхода Обозначение 1н [мА] Подключаемая нагрузка
Слабый «Week» 1...8 Маломощные транзисторные ключи, светодиоды без ограничительных резисторов, КМОП-логика
Стандартный «Standard» 20...25 Любые транзисторные ключи, светодиоды с ограничительными резисторами, логические элементы
Мощный «Power» 100...200 Реле, небольшие двигатели, лампы, нагреватели

Управляются переключатели 5оит записью «нуля» или «единицы» в один из битов регистра из области SFR. Например, в линейках микросхем Atmel AVR и Microchip PIC регистры называются PORTx, где «х» — порядковая буква латинского алфавита номера порта МК.

Диоды VD1, VD2 — это антистатические диоды, аналогичные тем, которые рассматривались ранее в схемах организации цифровых входов на Рис. 2.25, Рис. 2.26, а...г. Они являются частью конструкции микросхемы и никуда не исчезают при смене направления с входа на выход. Это своеобразная «плата» за двунаправленность цифровых портов.

Резистор RUP для «квазидвунаправленного» выхода имеет в статическом состоянии такое же большое сопротивление, как и его «тёзка», применяемый на Рис. 2.26, а. Основное отличие заключается в том, что на этапе перехода с НИЗКОГО уровня в ВЫСОКИЙ сопротивление данного резистора на короткое время становится очень малым, формируя тем самым крутой нарастающий фронт сигнала. Эта особенность является фирменной меткой всех МК, совместимых с ядром MCS-51 [2-9].

Низкоомные резисторы и R0L представляют собой сопротивления открытых каналов соответственно /?-МОП и я-МОП транзисторов выходного каскада. В числовом выражении это единицы-десятки ом в зависимости от технологии изготовления и нагрузочной способности потоку (Табл. 2.6).

В двухтактных схемах («push-pull») токовая нагрузка при НИЗКОМ и ВЫСОКОМ уровнях может быть разной. «Заковыка» заключается в мощности рассеяния транзисторов, входящих в комплементарную пару выходного каскада. Например, в семействе Atmel AT90S верхний по схеме транзистор «слабый», ток нагрузки /|Н = 1.5...3 мА, а нижний — «стандартный», ток нагрузки /0L= 10...20 мА.

Бывает, что во всех портах оба выходных транзистора «слабые» (Philips LPC2104) или оба «стандартные» (Atmel AVR, Microchip PIC). А вот всех линий с «мощными» каскадами в одной микросхеме не бывает. Они применяются, как правило, в 16- и 32-битных МК, но в единичном количестве, и служат полезным дополнением к уже имеющимся выходам.

Наиболее толерантным к типам выходных каскадов оказалось семейство Atmel AT91S, в котором мирно уживаются все три градации, перечисленные в Табл. 2.6.

Самые востребованные и ходовые — это симметричные выходные каскады «Standard» с примерно одинаковой нагрузочной способностью при НИЗКОМ и ВЫСОКОМ уровне. Для разработчика такая ситуация очень удобна, поскольку не надо мучительно долго вспоминать, на какую шину (к питанию или к «массе») допускается присоединять нагрузку. Именно этот вариант и предлагается выбрать в качестве основного для цифровых выходов идеализированного МК.

Подсистема портов ввода/вывода

Подсистема портов ввода/вывода

На Рис. 2.36, а, б показаны усреднённые вольт-амперные характеристики (ВАХ) выходного транзисторного каскада «Standard».

Чтобы сравнивать между собой графики, приведенные в даташитах для конкретных типов МК, следует чётко ориентироваться в терминологии:

  • /,н = 20...25 мА, /0L= 20...25 мА — это максимальные токи нагрузки через резисторы R]H, Rql, при которых ещё гарантируются выходные логические КМОП-уровни от 0 до (0.1 ...0.2) Усс и от (0.6...0.8) Усс до Усс;
  • 'max = 35...45 мА — это предельный ток нагрузки на одну линию порта, длительное превышение которого может привести (хотя и не обязательно) к отказу МК;
  • /кз= 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 служит буфером, снижающим выходное сопротивление и уменьшающим влияние нагрузки на точность уровней ЦАП. Иногда ставят усилитель с программируемым коэффициентом передачи, что позволяет оперативно масштабировать выходное напряжение. Задача сглаживания формы выходного сигнала решается внешними /?С-фильтрами или активными ФНЧ. Чем выше разрядность ЦАП (обычно 8... 14 бит), тем проще устройство выходного фильтра.

Для изготовления микроконтроллерного ЦАП требуется гибридная технология, позволяющая объединить на одной кремниевой пластине цифровые и аналоговые узлы, в частности, логические элементы и прецизионные резисторы. Если наличие ЦАП чрезмерно повышает стоимость микросхемы, то в качестве альтернативы можно использовать обычный МК с каналом ШИМ и внешним фильтром. Этот метод хорошо отработан как на аппаратном, так и на программном уровне.

Слабым подобием узла ЦАП также можно считать внутренний программно управляемый ИОН, имеющийся, например, в Microchip PIC16F628A. Если настроить линию VREF в режим выхода и программно изменять опорное напряжение согласно его градациям, то результирующий сигнал будет иметь чёткие ступеньки, как в ЦАП. Недостаток такого решения заключается в малом количестве самих ступенек и низкой точности абсолютных значений напряжения.

В идеализированном М К отдельный модуль ЦАП пока «не смотрится», поскольку на нынешнем этапе развития он, скорее, заморская диковинка, чем реальная вещь.

Двунаправленные порты ввода/вывода

МК, как и любое другое уважающее себя электронное устройство, не может в одночасье работать и на ввод, и на вывод. Только последовательно во времени, сначала ввод, затем вывод, или наоборот. Однако оперативно переключать режимы «Вход/Выход» МК может, чем широко пользуются программисты.

Электрическая схема совмещённого порта ввода/вывода показана на Рис. 2.38. Она получается как суперпозиция схем, изображённых на Рис. 2.25 и Рис. 2.32. а.

Таблица 2.7. Управление режимами в AYR- и Р1С-контроллерах

Функция, выполняемая двунаправленным портом МК Ядро Atmel AVR ЯдрЪ Microchip PIC 16/18
PORTx (S0UT) DDRx (S1N) PORTx (SOUT) TRISx (SIN)
Выходе ВЫСОКИМ уровнем 1 1 1 0
Выходе НИЗКИМ уровнем 0 1 0 0
Вход без «pull-up» резистора /?иР 0 0 0 1
Входе «pull-up» резистором Rul, 1 0 1 1

Переключатель £оит имеет две взаимосвязанные группы контактов. Он отвечает за коммутацию НИЗКОГО и ВЫСОКОГО уровней, а также за подключение и отключение резистора /?иР. Переключатель 5,N выбирает режим ввода (верхнее по схеме положение) или режим вывода данных (нижнее по схеме положение).

Переключатель S]N действует независимо от ^0ит- Оба переключателя управляются двумя программно-доступными регистрами из области SFR. В разных семействах МК они имеют разные названия (Табл. 2.7). Здесь регистр PORTx эквивалентен переключателю S0l}T, а регистры DDRx, TRISx — переключателю S]N. Изменение битов в регистрах вызывает соответствующее замыкание контактов.

Если сравнивать AVR- и PIC-контроллеры, то заметна большая разница в сочетаниях битов, переключающих направление «Вход/Выход» и уровни «ВЫСОКИЙ/НИЗКИЙ». Стандартизация, к сожалению, отсутствует, что следует учитывать при переходе от одного семейства МК к другому.

Наличие совмещённых портов ввода/вывода является большим достоинством МК, т.к. позволяет конструировать гибкие по функциональным возможностям изделия. Изредка встречаются МК, у которых часть выводов жёстко настроена только на приём или только на передачу информации, например, Zilog Z86L33, но их меньшинство.

Идеализированный М К должен иметь усреднённые характеристики, поэтому базовой для него предлагается схема, приведенная на Рис. 2.38. Программной настройкой управляющих регистров контроллер может перестроиться в режимы, аналогичные Рис. 2.32, а, Рис. 2.34, а, Рис. 2.35, а. В последнем случае НИЗКИЙ уровень формируется «нулевым» напряжением на выходе, а ВЫСОКИЙ — переводом МК в режим входа с «pull-up» резистором.

Важное замечание. При начальном включении питания или подаче сигнала сброса все линии портов обычного МК независимо от желания программиста переходят в «оборванное» высокоимпедансное Z-состояние, что эквивалентно режиму входа без «pull-up» резистора (Рис. 2.34, а). Исключение из правила составляют МК, совместимые с MCS-51, у которых при сбросе резистор не отключается (Рис. 2.35, а).

Данный момент надо учитывать при разработке реальных схем. В частности, если нагрузкой выходной линии М К служит транзисторный ключ, то, чтобы его база или затвор при сбросе не «висели в воздухе», в AVR- и Р1С-контроллерах ставят дополнительные внешние резисторы сопротивлением 10...100 кОм на общий провод или на цепь питания. Для МК с ядром MCS-51 этого делать не надо из-за постоянного присутствия на выходе внутреннего резистора RVP.

Источник: Рюмик С.М. 1000 и одна микроконтроллерная схема. (Выпуск 1)

3 2391 Микроконтроллеры
порт микроконтроллер
cashback