![]() ![]() ![]() ![]() ![]()
Раздел: Документация
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 |