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

Документация

С внешним миром микроконтроллер общается через порты ввода вывода.

От превышенных и отрицательных значений напряжения порт защищён внутренними диодами. Эти диоды слабы и защищают порт от перепадов всего в 1-2 В. Большие перепады способны привести к выгоранию порта.

Нв рисунке показана цоколёвка микроконтроллера Atmega8 в корпусе PDIP28. Порты ввода/вывода обозначены следующим образом PXY, где X - имя порта, а Y - номер бита в этом порту (например вывод PD0 является нулевым битом порта D).

За настройку каждого порта отвечают 3 регистра конфигурации порта: PORTx, DDRx, PINx (x-имя порта)

DDRx - регистр направления порта.
Если DDRx.y=0, то бит y порта x работает в режиме входа, если DDRx.y=1, то бит y порта x работает в режиме выхода.

PORTx - управления состоянием вывода.

Когда ножка настроена на выход (DDRx.y=1) , то значение соответствующего бита y в регистре PORTx определяет состояние вывода. Если PORTx.y=1, то на выводе установится напряжение, соответсвующее логической единице; если PORTx.y=0, то на выводе установится логический ноль.

Когда ножка настроена на вход (DDRx.y=0), то в зависимости от значения PORTx.y возможны 2 варианта состояния:

1) Вход PullUp — вход с подтяжкой (PORTx.y=1)

При такой конфигурации замыкается ключ подтяжки и к линии подключается резистор 100кОм, что приводит к возникновению на выводе логической 1. Если этот вывод замкнуть на землю (например кнопкой), то слабый резистор не сможет удерживать напряжение на линии на уровне логической единицы и на выводе установится ноль.

Для неиспользуемых выводов рекоммендуется устанавливать этот режим (это приведёт к снижению энергопотребления и повышению надёжности)

P.S. бит PUD в регистре SFIOR запрещает включение подтяжки сразу для всех портов. По умолчанию он равен 0, то есть подтяжка разрешена

2) Вход Hi-Z — режим высокоимпендансного входа (PORTx.y=0).

При такой конфигурации вывод вообще никуда не подключен и ни на что не влияет. Но при этом он постоянно отправляет свое состояние в регистр PIN и всегда можно узнать что на этом входе — единица или ноль. Этот режим подходит для прослушивания какой либо шины данных, так как он не оказывает на неё никакого влияния. Если вывод никуда не подключён и просто "висит в воздухе", то напряжение на нём будет колебаться от действия внешних наводок, электромагнитных полей и т.д

Этот режим стоит по умолчанию.

PINх
Это регистр чтения. Из него можно только читать. В регистре PINx содержится информация о реальном текущем логическом уровне на выводах порта. Вне зависимости от настроек порта


Если у вас есть какие-то замечания по этому документу или что-то осталось непонятно, то вы можете оставить свой отзыв или вопрос

Комментарии (Ваш комментарий будет первым! :))

Анонимная отправка сообщений запрещена! Пожалуйста зарегистрируйтесь