Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

Шаг 6. Осваиваем все возможности микроконтроллера ATtiny23 13 507 Режимы работы модуля USI, определяемые битами USIWM 1 — 0 Таблица 6.56 USIWM1 USIWM0 Описание 0 0 Выходные сигналы, система захвата синхросигнала и детектор стартового условия от ­ ключены. Соответствующие выводы микросхемы выполняют свои основные функции 0 1 Трехпроводный режим. Используются линии DO, DI и USCK. Для вывода микросхемы, соответствующего линии DO (выход данных), отменяется дей ­ ствие соответствующего бита регистра PORTB. Соответствующий бит регистра DDRB все еще управляет направлением передачи информации. Если контакт порта сконфи ­ гурирован на ввод, соответствующий бит регистра PORT управляет подключением вну ­ треннего резистора нагрузки. Еще два вывода того же порта приобретают альтернативные функции. Это вывод, со ­ ответствующий линии «Ввод данных» (DI), и вывод, соответствующий линии «Синхрони ­ зации» (USCK). Но активизация альтернативных функций в данном случае не отменяет основных. Если микросхема работает в качестве ведущего устройства, то необходимо предусмотреть программную генерацию тактовых импульсов путем переключения со ­ ответствующего разряда регистра PORTB. При этом данный вывод микросхемы должен быть сконфигурирован как выход. Для программной синхронизации также может ис ­ пользоваться бит USITC регистра USICR 1 0 Двухпроводный режим. Используются линии SDA (то же, что и DI) и SCL (то же, что и USCK). Примечание. Выводы DI и USCK переименованы соответственно в SDA и SCL для того, чтобы избежать путаницы при работе в разных режимах. Линия «Данные» (SDA) и линия «Тактовый сигнал» (SCL) — двунаправленные и исполь ­ зуют выходной каскад с открытым коллектором. Эти каскады включаются при установ ­ ке в единицу соответствующих битов в регистре DDRB. Если включен выходной каскад для линии SDA, то уровень напряжения на этой линии за ­ висит как от сигнала на выходе сдвигового регистра, так и от сигнала на соответствующем разряде регистра PORTB. Если хотя бы один из этих сигналов равен нулю, то на выходе SDA устанавливается низкий логический уровень. В противном случае линия SDA будет осво ­ бождена (напряжение на линии будет зависеть от других подключенных к ней устройств). Если включен выходной каскад для линии SCL, то уровень напряжения на этой линии зависит от соответствующего бита регистра PORTB и от сигнала на выходе детектора стартового условия. Если значение хотя бы одного из этих сигналов равно нулю, на линии устанавливает ­ ся низкий логический уровень. В противном случае линия SCL будет освобождена. На линии SCL удерживается низкий логический уровень в том случае, если обнаружено стартовое условие и вывод информации разрешен. Очистка флага стартового условия (USISIF) освобождает линию. При работе линий SDA и SCL в качестве входов выбор данного режима никакого влияния не оказывает. В двух ­ проводном режиме внутренние нагрузочные резисторы всегда отключены 1 1 Двухпроводный режим. Использует линии SDA и SCL. Этот режим является модификацией предыдущего. Отличие состоит в том, что на линии SCL низкий логический уровень появляется также и в случае переполнения 4-х разряд ­ ного счетчика и удерживается в этом состоянии до тех пор, пока не будет очищен флаг переполнения таймера (USIOIF) При USICS1:O = 00 включается режим программного формирования стробирующего импульса. В этом случае запись единицы в бит USICLK вызывает как срабатывание сдвигового регистра, так и итерацию счет ­ чика. Если выбран внешний источник тактового сигнала (USICS1 = 1), то бит USICLK больше не использует в качестве строба. Теперь он служит для выбора между внешней синхронизацией и программной синхрони ­ зацией с использованием в качестве строба бита USITC. В табл. 6.57 показаны варианты источников тактового сигнала для сдвигового регистра и 4-разрядного счетчика, выбираемые при помощи битов USICS1:O и бита USICLK.

RkJQdWJsaXNoZXIy MTExODQxMg==