14:58 Порты ввода-вывода AVR | |
Порты ввода-вывода являются основным средством связи микроконтроллеров AVR с окружающим миром. Упрощенная схема порта ввода-вывода показана на рисунке
На каждой ножке МК стоят защитные диоды. Они рассчитаны на ток 1 мА, на них не надейтесь. Ножка МК способна пропустить через себя ток не больше 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 ничего не дает.
Если ножка МК не используется, тогда рекомендуется обеспечить на ней определенный уровень. Это нужно чтобы уменьшить энергопотребление микроконтроллера из-за наводок возникающих на выводах. Самый простой способ обеспечить уровень - включить подтягивающий резистор. Подключать неиспользуемые ножки непосредственно к шине питания или к земляной шине не рекомендуется. Так как это может привести к чрезмерному току, если вывод настроен на выход.
| |
|
Всего комментариев: 0 | |