Микропроцессоры и микроконтроллеры

 
 
 
«Модульность — фундаментальный аспект всех успешно работающих крупных систем.»
Bjarne Stroustrup
Русский | Українська


Микропроцессоры и микроконтроллеры :: RISC-микроконтроллеры семейства AVR :: Порты ввода-вывода

Порты ввода-вывода

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

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

Входные буферы всех выводов построены по схеме триггера Шмита. Для всех входов имеется возможность подключения внутреннего подтягивающего резистора между входом и шиной питания VCC.

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

Порядковый номер вывода порта соответствует порядковому номеру разряда регистров этого порта.

Разряд DDxn регистра DDx определяет направление передачи данных через контакт ввода-вывода. Если этот разряд установлен в «1», то n-й вывод порта является выходом, если же сброшен в «0» – входом.

Разряд PORTxn регистра PORTx выполняет двойную функцию. Если вывод функционирует как выход, этот разряд определяет состояние вывода порта. Если разряд установлен в «1» на выводе устанавливается напряжение высокого уровня. Если разряд сброшен в «0» на выводе устанавливается напряжение низкого уровня.

Если вывод функционирует как вход, разряд PORTxn определяет состояние внутреннего подтягивающего резистора для данного вывода. При установке разряда PORTxn в «1» подтягивающий резистор подключается между выводом микроконтроллера и шиной питания.

Управление подтягивающим резистором в моделях семейства Mega осуществляется на двух уровнях. Общее управление (для всех выводов портов) осуществляется разрядом PUD (2-й разряд регистра специальных функций SFIOR).

Если разряд PUD сброшен в «0», состояние подтягивающих резисторов будет определяться состоянием разрядов PORTxn для каждого входа порта. Если же разряд PUD установлен в «1», подтягивающие резисторы отключаются от всех выводов микроконтроллера.

Все возможные сочетания состояний управляющих разрядов и соответственно конфигурации выводов портов сведены в табл. 26.2.

Таблица 26.2.

Конфигурации выводов портов

DDxn

PORTxn

PUD*

(в SFIOR)

Функция

вывода

Резистор

Примечания

0

0

Х

Вход

Отключен

Третье состояние (Hi-Z)

0

1

0

Вход

Подключен

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

0

1

1

Вход

Отключен

Третье состояние (Hi-Z)

1

0

Х

Выход

Отключен

Вывод установлен в «0»

1

1

Х

Выход

Отключен

Вывод установлен в «1»

Состояние вывода микроконтроллера (независимо от установок разряда DDxn) может быть получено путем чтения разряда PINxn регистра PINx.

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




<< Предыдущая статья
«Регистры ввода-вывода»