Раздел: Документация
0 ... 146 147 148 149 150 151 152 ... 195 (продолжение)
Чтобы прервать поток данных, следует сбросить бит TWEA регистра TWCR в 0 (это можно сделать и во время обмена, т. е. при сброшенном флаге TWINT). В результате после передачи следующего байта на линию SDA будет выдан сигнал неподтверждения, сигнализирующий ведущему о том, что ведомый не может больше осуществлять прием данных. Обработка адресных пакетов при сброшенном бите TWEA прекращается, но может быть возобновлена в любой момент времени повторной установкой этого бита. Если адресация устройства произойдет при нахождении микроконтроллера в «спящем» режиме и бит TWEA будет при этом установлен, то модуль TWI переведет микроконтроллер в рабочий режим. При этом до сброса флага TWINT на линии SCL будет удерживаться НИЗКИЙ уровень. Все возможные состояния модуля TWI в режиме «Ведомый-приемник» приведены на Рис. 11.18. Прием своего адреса и одного или нескольких байтов данных Все посылки подтверждены Последний принятый байт не подтвержден Потеря приоритета в режиме ведущего и адресация в качестве ведомого Прием адреса общего вызова и одного или нескольких байтов данных Последний принятый байт не подтвержден Потеря приоритета в режиме ведущего и адресация в качестве ведомого
Общ ив р DA А A DATA
S—состояние СТАРТ Rs— состояние ПОВСТАРТ Р— состояние СТОП R—запрос на чтение (1) W—запрос на запись(0) А— бит подтверждения (0) А"— бит неподтверждения (1) SLA— адрес ведомого устройства DATA От ведущего к ведомому От ведомого к ведущему Один или несколько байтов данных с соответствующими битами подтверждения - момент установки флага TWINT, п — код статуса в регистре TWSR Рис. 11.18. Состояния модуля TWI в режиме «Ведомый-приемник» 11.5.4. Режим «Ведомый-передатчик» В режиме «Ведомый-передатчик» устройство осуществляет передачу данных ведущему, который в этом случае является приемником. Перед тем как переключить модуль в этот режим, следует занести в старшие биты регистра TWAR адрес устройства и, в соответствии с логикой работы программы, установить или сбросить младший бит регистра (TWGCE). Затем необходимо записать в регистр TWCR следующее значение:
1-Разрешить работу модуля TWI -Разрешить подтверждение После инициализации регистров TWAR и TWCR модуль будет ожидать адресного пакета с адресом, указанным в регистре TWAR, или общего вызова (если его распознавание разрешено). Значение следующего за адресом бита направления определит режим, в который переключится модуль. Если этот бит будет установлен в 1 (чтение), модуль TWI переключится в режим «Ведомый-передатчик». В противном случае модуль переключится в режим «Ведомый-приемник». Следует помнить, что устройство также может автоматически переключиться в режим «Ведомый-приемник» из режима ведущего при потере приоритета (см. описание кода статуса $В0 в Табл. 11.11). После приема пакета SLA+R установится флаг TWINT, и состояние обмена можно будет, как обычно, определить по коду статуса. Возможные действия со стороны программы, соответствующие тому или иному коду статуса, указаны в Табл. 11.11. Таблица 11.11. Коды статуса для режима «Ведомый-передатчик»
0 ... 146 147 148 149 150 151 152 ... 195
|