Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
Шаг 6. Осваиваем все возможности микроконтроллера ATtiny23 13 395 ♦ бит PORTxn — это разряд номер п регистра PORTx; ♦ бит PINxn — это разряд номер п регистра PINx. Бит DDxn регистра DDRx выбирает направление передачи информа ции соответствующего разряда. Если в DDxn записана логическая еди ница, разряд Рхп работает как выход. Если в DDxn записан логический ноль, разряд Рхп работает как вход. Если разряд порта сконфигурирован как вход, установка бита PORTxn в единицу включает внутренний резистор нагрузки. Для отключения резистора нагрузки нужно в PORTxn записать логический ноль. Сразу после системного сброса все выводы всех портов переходят в третье (высокоимпендансное) состояние. Если разряд порта сконфигурирован как выход (установка бита PORTxn в единицу), то эта единица появится на выходе порта. Если в разряд PORTxn записан логический ноль, то и на выходе будет ноль. Переключение значения разряда порта Запись логической единицы в разряд PINxn переключает значение разряда PORTxn (с единицы на ноль и наоборот), независимо от значе ния разряда DDRxn. Обратите внимание, что команда SBI может исполь зоваться для переключения значения одного отдельного разряда любого порта. Переключение между выводом и вводом При переключении разряда порта между третьим состоянием (DDxn = О, PORTxn =0) и состоянием высокого уровня на выходе (DDxn = 1, PORTxn = 1) обязательно происходит через один из промежуточных уровней: ♦ через режим входа с включенным резистором нагрузки Д(ООхп - 0, PORTxn = 1); ♦ либо через состояние вывода низкого логического уровня (DDxn = 1, PORTxn = 0). Наиболее приемлемым является вариант входа с нагрузочным рези стором, поскольку для высокоимпендансной среды нет различия между полноценным сигналом высокого логического уровня и напряжением, созданным благодаря подключению нагрузочного резистора. Если же подключение резистора нежелательно, можно установить бит PUD регистра MCUCR в единичное состояние и тем самым отключить все нагрузочные резисторы для всех портов. Аналогичная ситуация возникает при переключении между режимом входа с включенной нагрузкой (DDxn = 0, PORTxn = 1) и состоянием вывода низкого логического уровня (DDxn = 1, PORTxn = 0). В этом случае промежуточным является:
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==