Раздел: Документация
0 ... 149 150 151 152 153 154 155 ... 195 (продолжение)
SCL tSU.STA high SDA fHD.STAHD DAT Z j f1 f$U, DAT tsu STO fBUF Puc. 11.22. Временные диаграммы сигналов шины TWI глава 12 Универсальный последовательный интерфейс USI 12.1. Общие сведения Модуль универсального последовательного интерфейса (Universal Serial Interface — USI) реализован только в моделях ATmega 165х и ATmega325x/3250x/645x/6450x. Этот модуль является своего рода «полуфабрикатом», предоставляющим базовые аппаратные ресурсы, необходимые для осуществления обмена по последовательному каналу. Используя данный модуль, можно достичь гораздо большей скорости передачи и получить более компактный код, нежели при чисто программной реализации различных протоколов обмена. Обращаю ваше внимание на то, что в данной главе мы будем рассматривать собственно модуль USI. Принципы обмена по трехпроводной (SPI) и двухпроводной (TWI) шинам были подробно рассмотрены в двух предыдущих главах. Упрощенная структурная схема модуля USI приведена на Рис. 12.1. В общей сложности модуль USI задействует три линии ввода/вывода микроконтроллера: •РЕ6 — выход данных (DO). Используется в трехпроводном режиме (SPI); •РЕ5 — вход данных (01)/линия данных (SDA); •РЕ4 — вход/выход тактового сигнала (ШСК)/линия тактового сигнала (SCL). В 8-битном сдвиговом регистре содержатся входящие и исходящие данные. Старший бит сдвигового регистра подключается, в зависимости от режима работы, к одной из двух линий данных модуля. Входящие биты всегда считываются с вывода DI, независимо от конфигурации модуля. Четырехбитный счетчик, показанный на Рис. 12.1, доступен как для чтения, так и для записи. Кроме того, при его переполнении может генерироваться прерывание. Поскольку сдвиговый регистр и счетчик используют один и тот же тактовый сигнал, счетчик может считать число переданных или принятых битов и сгенерировать прерывание по окончании процесса обмена. Обратите внимание, что при использовании внешнего тактового сигнала изменение состояния счетчика происходит по каждому фронту сигнала, т. е. счетчик считает количество фронтов, а не битов. Тактовый DI/SDA (Вход/Открытый сток) ш ш (Л Э
USICR USCK/SCL (Выход/Открытый сток) Удержание SCL Рис. 12.1. Структурная схема модуля USI сигнал может сниматься с входа USCK, с выхода блока сравнения таймера/счетчика ТО или формироваться программно. Блок управления тактовым сигналом используется в двухпроводном режиме и может генерировать прерывание при обнаружении на шине состояния СТАРТ. Кроме того, он может формировать на шине циклы ожидания, удерживая на линии SCL НИЗКИЙ уровень после обнаружения состояния СТАРТ или после переполнения счетчика. 12.2. Использование модуля USI Взаимодействие с модулем USI осуществляется посредством трех регистров ввода/вывода: регистра данных USIDR, расположенного по адресу ($ВА), регистра состояния USISR, расположенного по адресу ($В9), и регистра управления USICR, расположенного по адресу ($В8). При обращении к регистру данных USIDR осуществляется доступ непосредственно к сдвиговому регистру модуля. Тактовый сигнал, используемый для тактирования сдвигового регистра, определяется состоянием битов USICS1:0 регистра USICR. Старший бит регистра данных подключается к используемому выходному контакту модуля (DO или SDA) через триггер-защелку. При использовании внешнего тактового сигнала (USICS1 = 1) защелка открыта в первом полупериоде тактового сигнала, а 0 ... 149 150 151 152 153 154 155 ... 195
|