Раздел: Документация
0 ... 143 144 145 146 147 148 149 ... 195 (продолжение)
После формирования на шине состояния ПОВСТАРТ (код статуса $ 10) ведущий может адресовать того же или другого ведомого, не формируя состояния СТОП. Другими словами, использование состояния ПОВСТАРТ позволяет осуществлять смену ведомых устройств, а также переключаться между режимами «Ведущий-передатчик» и «Ведущий-приемник» без потери контроля над шиной. Все возможные состояния модуля TWI в режиме «Ведущий-передатчик» приведены на Рис. 11.16. Ведущий-передатчик Успешная передача ведомому-приемнику /$08j След передача начинается с формирования состояния ПОВСТАРТ Нет подтверждения от адресуемого ведомого Нет подтверждения после передачи байта данных Потеря приоритета во время передачи адреса или данных Потеря приоритета устройство адресовано другим ведущим SLA DATA Продолжает другой ведущий Продолжает другой ведущий $68Y$78Y$B0> SLA Ведущий-приемник Продолжает другой ведущий К соответствующим состояниям в режиме ведомого S— состояние СТАРТ Rs— состояние ПОВСТАРТ Р— состояние СТОП R— запрос на чтение (1) W— запрос на запись (0) А— бит подтверждения (0) А"— бит неподтверждения (1) SLA— адрес ведомого устройства О От ведущего к ведомому От ведомого к ведущему Один или несколько байтов данных с соответствующими битами подтверждения — момент установки флага TWINT, п — код статуса в регистре TWSR Рис. 11.16. Состояния модуля TWI в режиме «Ведущий-передатчик» 11.5.2. Режим «Ведущий-приемник» В режиме «Ведущий-приемник» ведущий осуществляет прием данных от ведомого устройства. Как обычно, для переключения устройства в режим ведущего модуль TWI должен сформировать на шине состояние СТАРТ. Формат адресного пакета, передаваемого следом, определяет, в каком из режимов будет работать ведущий. При передаче пакета SLA+W модуль переходит в режим «Ведущий-передатчик», а при передаче пакета SLA+R — в режим «Ведущий-приемник». Формирование состояния СТАРТ начинается после записи в регистр TWCR следующего значения:
t--Разрешить работу модуля TWI -Сформировать состояние СТАРТ -Сбросить флаг TWINT В результате записи указанного значения модуль TWI начнет контролировать состояние шины и сформирует состояние СТАРТ сразу же, как только она станет свободной. По окончании формирования состояния СТАРТ устанавливается флаг TWINT; код статуса должен при этом иметь значение, равное $08 (Табл. 11.9). Для переключения модуля в режим «Ведущий-передатчик» необходимо передать по шине пакет SLA+R. Для этого содержимое пакета загружается в регистр TWDR, а в регистр TWCR заносится следующее значение:
i--Разрешить работу модуля TWI -Сбросить флаг TWINT После передачи адресного пакета и приема бита подтверждения флаг TWINT снова устанавливается в 1. Код статуса на этом этапе может иметь одно из следующих значений: $38, $40 или $48. Какие действия необходимо предпринять при обнаружении того или иного кода, подробно рассмотрено в Табл. 11.9. Полученный от ведомого устройства байт данных можно будет затем считать из регистра TWDR после последующей установки фла -га TWINT. Описанная процедура используется для приема всех пакетов данных. После приема последнего байта данных ведущий должен проинформиро- 0 ... 143 144 145 146 147 148 149 ... 195
|