Подсистема портов ввода/вывода
Порты, порты и ещё раз порты. Без их детального изучения в микроконтроллерной технике не обойтись. Порты в 8-битных МК содержат по 8 линий (выводов, разрядов, битов). Но это не догма. В разных семействах МК порты могут логически объединяться в группы по 4, 16 или 32 линии.
Различают две системы нумерации портов — цифровую и буквенную.
Цифровая нумерация берёт начало от прародителя MCS-51 и содержит следующие элементы: букву «Р» (англ. «Port»), затем цифру номера порта 0...3, разделительную точку, цифру номера текущей линии 0...7.
Пример. «Р3.4» — пятая линия четвёртого по счёту порта. Цифра «3» обманчива, как майский снег. По ней нельзя судить об истинном количестве портов в МК. К примеру, 20-выводная микросхема Atmel AT89C4051 физически имеет всего лишь два порта, но для совместимости программного обеспечения с MCS-51 один из портов называется Р1 (а не Р0), а другой Р3 (а не Р1).
Разновидности цифровой нумерации:
• отсутствует разделительная точка между цифрами (Р25, Р33);
• добавление к букве «Р» одной или нескольких других букв (BP10, GPIO24);
• цифра номера порта больше, чем 3 (Р9.1, Р5.5);
• номер текущей линии больше, чем 7 (Р0.31, Р2.14).
Буквенная нумерация появилась позже цифровой. В её основе лежит здравая идея замены цифры порта порядковой буквой латинского алфавита. Новая система обозначений содержит следующие элементы: букву «Р», номер порта «A...Z», номер текущей линии 0.7.
Пример. «РА2» — третья по счёту линия порта «А». Почему «третья»? Потому что программисты начинают счёт не с единицы, как обычные люди, а с нуля.
Разновидности буквенной нумерации:
• замена буквы «Р» другой буквой (RA2);
• добавление к букве «Р» одной или нескольких других букв (GPIOA2, PTB3);
• номер текущей линии больше, чем 7 ^A25, РБ15).
Порт для удобства понимания можно представить в виде морской гавани (Рис. 2.24). В неё заходят корабли (вводятся электрические сигналы), и оттуда они отправляются в плавание (выходят электрические сигналы). Линии порта — это отдельные судоходные каналы или, по-морскому, фарватеры, ограниченные бакенами (буями). Направление движения в канале в любой момент времени может быть изменено на противоположное. Некоторые каналы имеют особый статус. К примеру, две линии портов PC5, PC6 на Рис. 2.24 физически отсутствуют или же они спрятаны внутри и доступны на чтение только для ЦПУ, как в MCS-51.
Количество портов зависит в первую очередь от размера корпуса. Общая тенденция — чем больше выводов имеет микросхема, тем больше в ней линий портов, тем больше выполняемых функций, но тем дороже она продаётся.
Классификация портов
По типу сигналов различают:
• цифровые порты, использующие на входе и на выходе дискретные логические уровни ВЫСОКИЙ/НИЗКИЙ;
• аналоговые порты, использующие плавно весь диапазон входных/выходных напряжений 0...FCC . В редких случаях, например, в микроконвертерах Analog Devices, допускаются двухполярные входные аналоговые сигналы;
• смешанные порты, которые в процессе работы могут оперативно изменить режим и перейти с «цифры» на «аналог», и наоборот.
Смешанный вариант сам по себе уникален, ведь совмещение цифровых и аналоговых функций под крышей одного вывода — это поистине микроконтроллерное «ноу-хау». В микропроцессорах серии i8080 такого ещё не было.
Несмотря на формальное преимущество смешанных портов, тем не менее, если корпус МК большой, то аналоговые выводы стараются физически отделить от цифровой части и подвести к ним «своё» питание и «землю». Данный приём встречается в 32-битных МК, что позволяет уменьшить перекрёстные помехи.
По направлению передачи сигнала различают:
• входные порты, предназначенные только для ввода информации;
• выходные порты, предназначенные только для вывода информации;
• двунаправленные порты, режим работы которых изменяется с входа на выход в зависимости от инструкций программы;
• порты с переключаемой альтернативной функцией, например, цифровой порт, совмещённый с АЦП, с входом таймера, с UART, ШИМ и т.д.
Монофункциональные порты первого и второго типов сейчас встречаются крайне редко. Слишком уж расточительно такое «барство» для малоразмерных МК. Чистые двунаправленные порты третьего типа тоже теряют свои позиции. В настоящее время самыми распространёнными являются порты четвёртого типа. Более того, наблюдается чёткая тенденция к увеличению числа альтернативных функций, «навешанных» на одну линию.
В условном обозначении МК альтернативные функции принято перечислять через дробь. Однако, если дробей много, то ухудшается читаемость схемы.
Пример надписи: GP4/T1G/OSC2/CLKOUT. Именно так в даташите на микросхему Microchip PIC12F629 указываются три дополнительные функции для одной цифровой линии порта GP4.
Модной тенденцией последнего времени стало динамичное распределение альтернативных функций портов. Имеется в виду, что каждому выводу микросхемы может быть оперативно назначена своя функция. Например, нулевой канал АЦП на выбор можно подключить или к линии PA0, или к линии PA5 и т.д. В даташитах приводятся переводные таблицы режимов, которые переключаются регистрами из области SFR. Так сделано, например, в МК семейства Atmel ATXmega.
Жизнь показывает, что в реальных программах линии портов чаще всего выполняют какую-то одну задачу, например, цифровой логический выход, генератор сигналов ШИМ, вход АЦП, выход ЦАП. Режимы работы задаются в начале программы при инициализации регистров и в дальнейшем не изменяются.
Быстрое переключение свойств выводов МК встречается редко, ведь для этого требуются определённые программные навыки и нетрадиционные схемные решения. Следовательно, на первый план выходит умение разбираться в тонкостях подключения одиночных линий входных и выходных портов первого и второго типов. Уяснив их работу, в дальнейшем будет нетрудно перейти к анализу смешанных портов третьего и четвёртого типов.
Итак, рассмотрению подлежат: цифровые входы, аналоговые входы, цифровые выходы, аналоговые выходы, двунаправленные входы/выходы.