Раздел: Документация
0 ... 142 143 144 145 146 147 148 ... 195 Состояние с кодом $F8 является промежуточным. Наличие этого кода означает отсутствие какой-либо информации в связи с тем, что флаг TWINT не установлен. Код статуса $00 сигнализирует об ошибке на шине. Такая ошибка возникает при формировании ведущим состояний СТАРТ или СТОП в неположенном месте, например во время передачи байта адреса, байта данных или бита подтверждения. Для выхода из таких ситуаций необходимо записать лог. 1 в биты TWSTO и TWINT. В результате модуль перейдет в режим неадресованного ведущего, освободит линии SDA и SCL и сбросит флаг TWSTO. Состояние СТОП в этой ситуации сформировано не будет. 11.5. Режимы работы модуля TWI Модуль TWI, реализованный в микроконтроллерах семейства Mega, может работать в следующих режимах: •ведущий-передатчик (Master Transmitter); •ведущий-приемник (Master Receiver); •ведомый-передатчик (Slave Transmitter); •ведомый-приемник (Slave Receiver). Выбор конкретного режима определяется логикой работы программы и соответственно выполняемыми действиями. 11.5.1. Режим «Ведущий-передатчик» В режиме «Ведущий-передатчик» (Master Transmitter) осуществляется передача данных от ведущего устройства к ведомому. Для переключения устройства в режим ведущего модуль TWI должен сформировать на шине состояние СТАРТ. Формат передаваемого затем адресного пакета определяет, в каком из режимов будет работать ведущий. При передаче пакета SLA+W модуль переходит в режим «Ведущий-передатчик», а при передаче пакета SLA+R — в режим «Ведущий-приемник». Формирование состояния СТАРТ начнется после записи в регистр TWCR следующего значения:
-Разрешить работу модуля TWI I-Сформировать состояние СТАРТ -Сбросить флаг TWINT В результате записи указанного значения модуль TWI начнет контролировать состояние шины и сформирует состояние СТАРТ сразу же, как только она станет свободной. По окончании формирования состояния СТАРТ устанавливается флаг TWINT; код статуса должен при этом иметь значение, равное $08 (см. Табл. 11.7). Для переключения модуля в режим «Ведущий-передатчик» необходимо передать по шине пакет SLA+W. Для этого содержимое пакета загружается в регистр TWDR, а в регистр TWCR заносится следующее значение:
-Разрешить работу модуля TWI -Сбросить флаг TWINT После передачи адресного пакета и приема бита подтверждения флаг TWINT снова устанавливается в 1. Код статуса на этом этапе может иметь одно из следующих значений: $18, $20 или $38. Какие действия необходимо предпринять при обнаружении того или иного кода, подробно рассмотрено в Табл. 11.8. После передачи адресного пакета должны быть переданы пакеты данных. Значение байта данных загружается в регистр TWDR. Передача пакета данных начинается после записи в регистр TWCR следующего значения:
T--Разрешить работу модуля TWI -Сбросить флаг TWINT Описанная процедура используется для передачи всех пакетов данных. После передачи последнего байта данных ведущий должен сформировать на шине состояние СТОП или ПОВСТАРТ. Формирование состояния СТОП начнется после записи в регистр TWCR следующего значения:
-Разрешить работу модуля TWI -Сформировать состояние СТОП -Сбросить флаг TWI NT А для формирования состояния ПОВСТАРТ в регистр TWCR необходимо занести значение:
Разрешить работу модуля TWI Сформировать состояние СТАРТ Сбросить флаг TWINT Таблица 11.8. Коды статуса для режима «Ведущий-передатчик»
0 ... 142 143 144 145 146 147 148 ... 195
|