Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЦУ_конспект_12.docx
Скачиваний:
68
Добавлен:
14.11.2019
Размер:
5.57 Mб
Скачать

2.2 Организация портов ввода/вывода

Операции ввода/вывода в микроконтроллерах производятся через универсальные порты, обычно обозначаемые буквами латинского алфавита (A, B, C, D …). Порты ввода-вывода – обязательный атрибут любого микроконтроллера. Их количество для каждой конкретной микросхемы разное. Число линий порта обычно соответствует разрядности шины данных, но в некоторых случаях отдельные разряды не используются. Это связано с ограниченным количеством выводов (ножек) у микросхемы. Количество доступных портов микроконтроллера (число контактов ввода/вывода I/O) – один из основных параметров микроконтроллера.

У одних портов используются все восемь линий. У других семь, шесть, даже три. Но для процессора порты остаются восьмиразрядными. Процессор всегда пишет в такие порты и читает из них полноценный байт информации. Неиспользуемые биты при записи просто теряются. При чтении байта из порта неиспользуемые разряды равны нулю.

Каждая линия порта через внутренние схемы управления может быть подключена к различным устройствам контроллера и программно может быть сконфигурирована как линия цифрового ввода или вывода (без/ или с подтягивающим резистором), аналогового ввода/ вывода, линия адаптера последовательного интерфейса, вывод таймера и т.д.

Обращение к портам производится через регистры ввода/вывода. Под каждый порт в адресном пространстве выделяется 3 адреса. По этим адресам размещаются три регистра:

  • регистр данных порта PORTx;

  • регистр направления порта DDRx;

  • "регистр" вывода порта PINx.

"Регистры" PINx на самом деле регистрами (физическими регистрами) не являются. По этим адресам производится доступ к физическим значениям сигналов на выводах порта. Эти "регистры" доступны только для чтения (регистры PORTx и DDRx доступны и для чтения и для записи). Существенный момент: порт PINх не снабжен триггерами, поэтому запись в этот порт не приводит к изменениям физических состояний схемы, однако такую виртуальную запись удобно использовать при отладке программы.

Рассмотрим работу порта ввода/вывода на примере функционирования линии РВ микроконтроллера AT90S2313; так как эта линия характеризуется простыми функциональными возможностями, и ее схема наиболее проста.

На рис. представлена функциональная схема, обеспечивающая работу линии порта РВ2.

Рис. Схема работы линии РВ2 порта ввода/вывода

Рис. – Эквивалентная электрическая схема вывода порта микроконтроллера

Рассматриваемая линия РВ2 связана с одной из линий внутренней шины микроконтроллера. Входные буферы портов построены по схеме триггера Шмита. Максимальная нагрузочная способность выходных буферов портов ввода/вывода – 20 мА. Это позволяет непосредственно подключать к портам светодиодные индикаторы и маломощные исполнительные устройства. Имеется возможность подключать внутренний подтягивающий резистор сопротивлением 30…120 кОм.

Запись в порт означает запись требуемого состояния для каждого вывода порта в соответствующий регистр данных порта PORTx. Чтение состояний порта выполняется чтением либо регистра данных PORTx, либо регистра выводов PINx. При чтении регистра PORTx происходит считывание данных из регистра – защелки порта, а при чтении регистра выводов PINx происходит считывание уровней сигналов на выводах портов.

Команда out PORTB,Rr вызывает запись в триггеры порта B содержимого регистра Rr (Rr – любой регистр общего назначения микроконтроллера). Для записи единицы в триггер PORTB2 хранящееся в регистре число должно иметь вид 0bxxxxxlxx, для записи нуля – 0bхххххОхх. Интерисующий нас второй разряд находится не на второй, а на третьей позиции, так как нумерация разрядов начинается с нуля. Здесь х – любое значение (оно не повлияет на запись в триггер PORTB2), 0b – признак двоичного представления числа.

Под действием положительного импульса "ЗАПИСЬ В ТРИГГЕРЫ PORT B" информация, установленная на внутренней шине данных МК, записывается в триггеры порта B, в том числе и в триггер PORTB2.

Под действием положительного импульса "ЗАПИСЬ В ТРИГГЕРЫ DDR B" информация, установленная на внутренней шине данных МК, записывается в триггеры DDR B. Записи в порт DDR B соответствует команда out DDR B,Rr.

Данные, хранящиеся в триггерах PORTB, могут быть считаны на шину данных через соответствующие буферы под действием положительного импульса "ЧТЕНИЕ ВЫХОДОВ PORTB". Этой операции соответствует команда in Rr,PORTB. Результат будет занесен в регистр Rr, состояние разряда №2 регистра (нумерация начинается с нулевого разряда) будет соответствовать информации, записанной в триггер PORTB2. Не обязательно помнить, какие данные записывались в PORTB или в DDRB, их всегда можно повторно считать из этих портов.

Буферы на функциональной схеме изображены в виде треугольников. Передача через соответствующий буфер происходит только при ВЫСОКОМ уровне на управляющей линии (линия, подведенная к треугольнику сверху или снизу).

Уровни, присутствующие на линиях РВ, в том числе и РВ2, считываются на шину данных через соответствующие буферы под действием положительного импульса "ЧТЕНИЕ PINB". Этой операции соответствует команда in Rr,PINB.

Любую линию порта можно сконфигурировать как вход или как выход:

1. Линия порта – вход, если в DDRBn (n – номер линии) установить НИЗКИЙ уровень (при НИЗКОМ уровне входное сопротивление PORTBn велико; при ВЫСОКОМ уровне в PORTBn вход соединяется через внутренний резистор с цепью питания микроконтроллера (подтягивающий резистор) и при отсутствии внешнего сигнала на контакте микроконтроллера РВn присутствует ВЫСОКИЙ уровень).

2. Линия порта – выход, если в DDRBn установить ВЫСОКИЙ уровень (при НИЗКОМ уровне в PORTBn на контакте микроконтроллера РВn присутствует НИЗКИЙ выходной уровень; при ВЫСОКОМ уровне в PORTBn возможен ввод внешних данных при подсоединении к выводу мощного внешнего источника сигнала).

Любую линию порта можно сконфигурировать программно. Однако некоторые периферийные устройства при активации самостоятельно переопределяют конфигурацию используемых ими выводов.

Все сказанное относится также и к другим линиям других портов микроконтроллера.

Аппаратное прерывание RESET обнуляет триггеры портов ввода/ вывода.

Tmx = +850C

Tmn = -400

Рис. – Выходные характеристики вывода порта микроконтроллера

Максимальный ток нагрузки – ток через нагрузку, при котором ещё гарантируются выходные КМОП логические уровни (20-25 мА).

Предельный ток нагрузки – ток длительное превышение которого может привести (не обязательно) к отказу микроконтроллера (35-45 мА).

Ток короткого замыкания – ток замыкания линии порта на общий провод или шину питания. Если не снять замыкание в течение примерно 15 с, то температурный перегрев выходного транзистора может привести к выходу его из строя (100-150 мА).

Часто ограничивается суммарный ток через все выводы контроллера на уровне 120-150 мА.