Порты в качестве универсального цифрового ввода-вывода. Все порты являются двунаправленными портами ввода-вывода с опциональными подтягивающими резисторами

Настройка выводов. Режим и состояние для каждого вывода определяется значением соответствующих разрядов трех регистров: DDRxn, PORTxn и PINxn. Доступ к битам DDRxn возможен по адресу DDRx в пространстве ввода-вывода и, соответственно, к битам PORTxn по адресу PORTx, а к битам PINxn по адресу PINx.

Биты DDxn регистра DDRx определяют направленность линии ввода-вывода. Если DDxn=1, то Pxn конфигурируется на вывод. Если DDxn=0, то Pxn конфигурируется на ввод.

Если PORTxn=1 при конфигурации линии порта на ввод, то разрешается подключение подтягивающего резистора. Для выключения данного резистора необходимо записать в PORTxn 0 или настроить линию порта на вывод. Во время сброса все линии портов находятся в третьем (высокоимпедансном) состоянии, даже если не работает синхронизация.

Если PORTxn=1 при конфигурации линии порта на вывод, то состояние выхода будет определяться значением PORTxn.

Считывание состояние вывода. Независимо от значения бита направления данных DDxn состояние вывода порта может быть опрошено через регистровый бит PINxn.

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

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

Альтернативные функции порта. Большинство выводов поддерживают альтернативные функции в дополнение к универсальному цифровому вводу-выводу. В следующих подразделах коротко описываются альтернативные функции для каждого порта и связь отключающих сигналов с альтернативными функциями выводов (табл. 2.27).

Альтернативные функции порта A. Альтернативной функцией порта А является мультиплексированная младшая шина адреса/шина данных внешнего интерфейса памяти.

Таблица 2.27 . Альтернативные функции выводов порта А

Вывод порта Альтернативная функция
PA7,…, PA0 AD7 ,…, AD0 - биты шины адреса и шины данных внешнего интерфейса памяти

Альтернативные функции порта В. Выводы порта В с альтернативными функциями и описанием альтернативных функций выводов показаны в таблице 2.28.

Таблица 2.28. Альтернативные функции порта В

Вывод порта Альтернативная функция
PB7 OC2/OC1C(1) (выход компаратора и выход ШИМ таймера-счетчика 2 или выход С компаратора и ШИМ таймера-счетчика 1). OC2 – выход компаратора таймера-счетчика 2. Для выполнения данной функции вывод PB7 конфигурируется как выход (DDB7=1). Вывод OC2 также выполняет функцию выхода, когда таймер переводится в режим ШИМ. OC1C – выход компаратора С таймера-счетчика 1. Для выполнения данной функции вывод PB7 настраивается как выход (DDB7=1). Вывод OC1C также выполняет функцию выхода, когда таймер переведен в режим ШИМ.
PB6 OC1B (выход В компаратора и ШИМ таймера-счетчика 1). OC1B – выход компаратора B таймера-счетчика 1. Для выполнения данной функции вывод PB6 настраивается как выход (DDB6=1). Вывод OC1B также выполняет функцию выхода, когда таймер переведен в режим ШИМ.
PB5 OC1A (выход A компаратора и ШИМ таймера-счетчика 1). OC1A – выход компаратора A таймера-счетчика 1. Для выполнения данной функции вывод PB5 настраивается как выход (DDB5=1). Вывод OC1A также выполняет функцию выхода, когда таймер переведен в режим ШИМ.
PB4 OC0 (Выход компаратора и ШИМ таймера-счетчика 0). OC0 – выход компаратора таймера-счетчика 0. Для выполнения данной функции вывод PB4 настраивается как выход (DDB4 = 1). Вывод OC0 также выполняет функцию выхода, когда таймер переведен в режим ШИМ.
PB3 MISO (Ввод для ведущей/вывод для подчиненной шины SPI). MISO – ввод данных в режиме ведущего, вывод данных в режиме подчиненного интерфейса SPI. Если разрешена работа SPI как ведущего (мастера), то данный вывод настраивается на ввод независимо от состояния DDB3. Если работа SPI разрешена как подчиненного, то направление передачи данных задается DDB3. Если вывод принудительно настраивается на ввод, то подключение подтягивающего резистора останется под управлением бита PORTB3.
PB2 MOSI (Вывод для ведущей/ввод для подчиненной шины SPI). MOSI – вывод данных в режиме ведущего, ввод данных в режиме подчиненного интерфейса SPI. Если работа SPI разрешена как подчиненного, то данный вывод настраивается на ввод независимо от значения DDB2. Если работа SPI разрешена как ведущего (мастера), направление передачи данных определяется DDB2. Если вывод принудительно настраивается как вход, то подключение подтягивающего резистора останется под управлением PORTB2.
PB1 SCK (Синхронизация последовательной связи шины SPI). SCK – выход синхронизации в режиме ведущего, вход синхронизации в режиме подчиненного интерфейса SPI. Если работа SPI разрешена как подчиненного, то данный вывод настраивается как вход независимо от состояния DDB1. Если работа SPI разрешена как ведущего, то направление передачи данных управляется DDB1. Если вывод принудительно настроен на ввод, то управление подтягивающими резисторами осуществляется битом PORTB1.
PB0 SS (вход выбора подчиненного режима интерфейса SPI). SS - вход выбора подчиненного порта. Если работа SPI разрешена как подчиненного, то данный вывод настраивается на ввод независимо от установки DDB0. Работа SPI как подчиненного активизируется, если подать низкий уровень на этот вход. Если работа SPI разрешена как ведущего, то направление передачи данных на этом выводе задается DDB0. Если вывод принудительно настроить как вход, то подключение подтягивающего резистора управляется битом PORTB0.

Примечание. OC1C отсутствует в режиме совместимости с ATmega103.

Альтернативные функции порта C. В режиме совместимости с ATmega103 порт С работает только на вывод (табл. 2.29). Альтернативной функцией порта С является старшая шина адреса внешнего интерфейса памяти.

Таблица 2.29. Альтернативные функции выводов порта С

Вывод порта Альтернативная функция
PС7 A15 (Бит15 шины адреса внешнего интерфейса памяти)
PС6 A14 (Бит14 шины адреса внешнего интерфейса памяти)
PС5 A13 (Бит13 шины адреса внешнего интерфейса памяти)
PС4 A12 (Бит12 шины адреса внешнего интерфейса памяти)
PС3 A11 (Бит11 шины адреса внешнего интерфейса памяти)
PС2 A10 (Бит10 шины адреса внешнего интерфейса памяти)
PС1 A9 (Бит9 шины адреса внешнего интерфейса памяти)
PС0 A8 (Бит8 шины адреса внешнего интерфейса памяти)

Альтернативные функции порта D. Выводы порта D с альтернативными функциями представлены в таблице 2.30.

Таблица 2.30. Альтернативные функции выводов порта D

Вывод порта Альтернативная функция
PD7 T2 (вход синхронизации таймера-счетчика 2)
PD6 T1 (вход синхронизации таймера-счетчика 1)
PD5 XCK1(1) (вход/выход внешней синхронизации УСАПП1). XCK1 – внешняя синхронизация УСАПП1. Регистр направления данных (DDD4) задает, является ли синхронизация выходной (DDD4=1) или входной (DDD4=0). Вывод XCK1 активен только если УСАПП1 работает в синхронном режиме.
PD4 IC1 (вход триггера захвата фронта таймера-счетчика 1)
PD3 INT3/TXD1(вход внешнего прерывания 3 или выход передачи УАПП1). INT3 – источник внешнего прерывания 3. Вывод PD3 может использоваться как источник внешнего прерывания микроконтроллера. TXD1 – передача данных (вывод данных для УСАПП1). Если работа передатчика УСАПП1 разрешена, то данный вывод настраивается как выход независимо от значения DDD3.
PD2 INT2/RXD1 (вход внешнего прерывания 2 или вход приема УАПП1). INT2 – источник внешнего прерывания 2. Вывод PD2 может использоваться как источник внешнего прерывания микроконтроллера. RXD1 – прием данных (ввод данных для УСАПП1). Если работа приемника УСАПП1 разрешена, то данный вывод настраивается на ввод независимо от значения DDD2. После перевода УСАППом данного вывода на вход, управление подтягивающим резистором осуществляется битом PORTD2.
PD1 INT1/SDA (вход внешнего прерывания 1 или ввод/вывод последовательных данных TWI). INT1 – источник внешнего прерывания 1. Вывод PD1 может использоваться как источник внешнего прерывания микроконтроллера. SDA – ввод-вывод данных двухпроводного последовательного интерфейса TWI. После установки бита TWEN в регистре TWCR разрешается работа двухпроводного последовательного интерфейса, вывод PD1 отключается от порта и становится линией ввода-вывода последовательных данных двухпроводного последовательного интерфейса. В этом режиме на входе активизируется помехоподавляющий фильтр, который не реагирует на входные импульсы длительностью менее 50 нс, а передача организована драйвером с открытым стоком и ограниченной скоростью изменения сигнала.
PD0 INT0/SCL (вход внешнего прерывания 0 или синхронизация последовательной связи TWI). INT0 – источник внешнего прерывания 0. Вывод PD0 может использоваться как источник внешнего прерывания микроконтроллера. SCL – синхронизация двухпроводного последовательного интерфейса. Если установлен бит TWEN в регистре TWCR, то разрешается работа двухпроводного последовательного интерфейса, вывод PD0 отключается от порта и становится входом/выходом синхронизации последовательной связи двухпроводного последовательного интерфейса. В этом режиме на входе активизируется помехоподавляющий фильтр, который не реагирует на входные импульсы длительностью менее 50 нс, а передача организована драйвером с открытым стоком и ограниченной скоростью изменения сигнала.

Примечание. XCK1, TXD1, RXD1, SDA и SCL отсутствуют в режиме совместимости с ATmega103.

Альтернативные функции порта E. Альтернативные функции порта Е представлены в таблице 2.31.

Таблица 2.31. Альтернативные функции выводов порта Е

Вывод порта Альтернативная функция
PE7 INT7/IC3 (вход внешнего прерывания 7 или вход триггера захвата фронта таймера-счетчика 3)
PE6 INT6/ T3 (вход внешнего прерывания 6 или вход синхронизации таймера-счетчика 3)
PE5 INT5/OC3C (вход внешнего прерывания 5 или выход С компаратора и ШИМ таймера-счетчика 3)
PE4 INT4/OC3B (вход внешнего прерывания 4 или выход B компаратора и ШИМ таймера-счетчика 3)
PE3 AIN1/OC3A (инвертирующий вход аналогового компаратора или выход A компаратора и ШИМ таймера-счетчика 3). AIN1 – инвертирующий вход аналогового компаратора. Данный вывод непосредственно подключен к инвертирующему входу аналогового компаратора. OC3A – выход компаратора A таймера-счетчика 3. Для выполнения данной функции вывод должен быть настроен как выход (DDE3 =1). Вывод OC3A также выполняет функцию выхода, когда таймер переведен в режим ШИМ.
PE2 AIN0/XCK0 (неинвертирующий вход аналогового компаратора или вход/выход внешний синхронизации УСАПП0). AIN0 – неинвертирующий вход аналогового компаратора. Данный вывод непосредственно подключен к неинвертирующему входу аналогового компаратора. XCK0, USART0 – внешняя синхронизация. Регистр направления данных (DDE2) задает, является ли синхронизация выходной (DDE2=1) или входной (DDE2=0). Вывод XCK0 активен только тогда, когда УСАПП0 работает в синхронном режиме.
PE1 PDO/TXD0 (вывод программируемых данных или вывод передачи УАПП0). PDO – вывод последовательно программируемых через SPI данных. В процессе последовательного программирования данный вывод используется как линия вывода данных из ATmega128. TXD0 – вывод передачи УАПП0.
PE0 PDI/RXD0 (ввод программируемых данных или вывод приема УАПП0). PDI – ввод последовательно программируемых через SPI данных. В процессе последовательного программирования данный вывод используется как линия ввода данных в ATmega128. RXD0 – Вывод приема данных УСАПП0. Если разрешена работа приемника УСАПП0, то данный вывод настраивается как вход независимо от состояния DDRE0. После того, как УСАПП0 настроит данный вывод как вход, запись лог. 1 в PORTE0 включит подтягивающий резистор на данном выводе.

Примечание. IC3, T3, OC3C, OC3B, OC3B, OC3A и XCK0 отсутствуют в режиме совместимости с ATmega103.

Альтернативные функции порта F. Альтернативной функцией порта F является аналоговый вход АЦП (см. табл. 2.32).

Если некоторые выводы порта F используются как выходы, то необходимо следить, чтобы во время преобразования АЦП не происходило их переключение. Иначе, результат преобразования может быть некорректным. В режиме совместимости с ATmega103 порт F работает только на ввод. Если разрешена работа интерфейса JTAG, то подтягивающие резисторы на выводах PF7 (TDI), PF5 (TMS) и PF4 (TCK) остаются подключенными, даже если микроконтроллер переведен в состояние сброса.

Таблица 2.32. Альтернативные функции выводов порта F

Вывод порта Альтернативная функция
PF7 ADC7/TDI (Вход канала 7 АЦП или ввод данных при JTAG тестировании) ADC7 – Аналогово-цифровой преобразователь, канал 7. TDI – Ввод данных при JTAG-тестировании. Последовательный ввод данных происходит в регистр инструкций или регистр данных (сканируемые звенья). После разрешения работы JTAG-интерфейса данный вывод не может использоваться в качестве линии ввода-вывода.
PF6 ADC6/TDO (Вход канала 6 АЦП или вывод данных при JTAG тестировании). ADC6 – Аналогово-цифровой преобразователь, канал 6. TDO – вывод данных при JTAG-тестировании. Последовательный вывод данных из регистра инструкции или регистра данных. После разрешения работы JTAG-интерфейса данный вывод не может использоваться в качестве линии ввода-вывода. Вывод TDO становится тристабильным, если введено состояние TAP, при котором происходит сдвиг выводимых данных.
PF5 ADC5/TMS (Вход канала 5 АЦП или выбор режима JTAG тестирования). ADC5 – Аналогово-цифровой преобразователь, канал 5. TMS – Выбор режима JTAG тестирования. Данный вывод используется для управления цифровым автоматом TAP-контроллера. После разрешения работы JTAG-интерфейса данный вывод не может использоваться в качестве линии ввода-вывода.
PF4 ADC4/TCK (Вход канала 4 АЦП или синхронизация JTAG тестирования). ADC4 – Аналогово-цифровой преобразователь, канал 4. TCK – синхронизация JTAG-тестирования. Работа интерфейса JTAG синхронизирована с TCK. После разрешения работы JTAG-интерфейса данный вывод не может использоваться в качестве линии ввода-вывода.
PF3- PF0 ADC3 - ADC0 (Входы каналов 3-0 АЦП)

Альтернативные функции порта G. В режиме совместимости с ATmega103 могут использоваться только альтернативные функции порта G, а функция универсального цифрового ввода-вывода не доступна. В таблице 2.33 приведены альтернативные функции порта G.

Таблица 2.33. Альтернативные функции выводов порта G