Порты ввода-вывода микроконтроллеров AVR

Просмотров: 21944Комментарии: 1
Электроника. СхемотехникаAVR.Начинающим

Порты ввода-вывода являются основным средством связи микроконтроллеров AVR с окружающим миром. Упрощенная схема порта ввода-вывода показана на рисунке
На каждой ножке МК стоят защитные диоды. На них сильно не рассчитывайте, если напряжение на входе превысит 5.5В, они наверняка не выдержат. Ножка МК способна пропустить через себя ток не больше 20mA. Каждый вход микроконтроллера обладает паразитной емкостью Сpin. Дальше идут, условно говоря, переключатели (в МК вместо переключателей стоят полевые транзисторы). Каждый переключатель замыкается при определенной конфигурации регистров управления портов ввода-вывода - DDRxn, PORTxn, PINxn и бита 2 (PUD) регистра SFIOR. x - имя порта (например "В"), n - номер бита порта (0-7). У разных микроконтроллеров разное количество портов. Например, рассмотрим цоколевку МК ATmega8
Из рисунка видно, что у МК mega8 3 порта ввода вывода. Два полных порта (по 8 бит) - "PB" и "PD" и один не полный (7 бит) - "PC". 

PINxn
Регистр чтения состояния порта. Из этого регистра можно только читать. Этот регистр содержит информацию о логическом уровне на выводах МК и это не зависит от настроек порта.
DDRxn - регистр направления порта.
PORTxn - регистр управления состоянием вывода.
Бит 2 SFIOR: PUD(pullup disable) - запрещает подтягивающий резистор, вне зависимости от того разрешен он регистром управления или нет ("0" - разрешен pullup, "1" - запрещен pullup).
Варианты установок битов регистров показаны в таблице 1
Выход (DDRxn = 1). Здесь если в PORTxn записать "1"- на выходе и будет логическая единица, если записать "0" - логический нуль.
Вход (DDRxn = 0). Если в PORTxn записать "0" - это будет режим высокоимпедансного входа (DDRxn=0, PORTxn=0 - включен по умолчанию). Если посмотреть на рисунок выше, этому режиму соответствует когда все переключатели разомкнуты, при этом входное сопротивление входа можно считать равным бесконечности. Если в PORTxn записать "1" - это будет режим с подтягивающим резистором.
Также каждая ножка МК имеет альтернативные функции. По умолчанию они отключены. Если альтернативная функция включена, то ножка управляется периферийным устройством и тогда запись в DDRxn и PORTxn ничего не дает.
Если ножка МК не используется, тогда рекомендуется обеспечить на ней определенный уровень. Это нужно чтобы уменьшить энергопотребление микроконтроллера из-за наводок возникающих на выводах. Самый простой способ обеспечить уровень - включить подтягивающий резистор. Подключать неиспользуемые ножки непосредственно к шине питания или к земляной шине не рекомендуется. Так как это может привести к чрезмерному току, если вывод случайно настроен на выход.

Комментариев: 1 RSS

1 Андрей 26-09-2011 16:34

На картинке опечатка: в первой колонке явно имеется ввиду DDRxn, а не DDxn.

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)