8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 146 147 148 149 150 151 152 ... 195

(продолжение)

Действия программы

1

Состояние шины и модуля TWI

Чтение/запись в регистр TWDR

Запись в регистр TWCR

Следующее действие, выполняемое модулем TWI

Код ста!

й

STO

TWINT

TWEA

$98

Устройство уже адресовано (общий вызов): был принят байт данных и послано неподтверждение (NACK)

Считать данные

1

0

1

1

Переключение в режим неадресованного ведомого; разрешено распознавание SLA с собственным адресом; разрешено распознавание общих вызовов, если TWGCE = 1; после освобождения шины будет сформировано состояние СТАРТ

Нет действий

0

0

1

0

Переключение в режим неадресованного ведомого; распознавание любых вызовов отключено

Было обнаружено

Нет действий

0

0

1

1

Переключение в режим неадресованного ведомого; разрешено распознавание SLA с собственным адресом; разрешено распознавание общих вызовов, если TWGCE = 1

$А0

состояние СТАРТ или ПОВСТАРТ в то время, когда устройство было адресовано в качестве ведомого

Нет действий

1

0

1

0

Переключение в режим неадресованного ведомого; распознавание любых вызовов запрещено; после освобождения шины будет сформировано состояние СТАРТ

Нет действий

1

0

1

1

Переключение в режим неадресованного ведомого; разрешено распознавание SLA с собственным адресом; разрешено распознавание общих вызовов, если TWGCE = 1; после освобождения шины будет сформировано состояние СТАРТ

Чтобы прервать поток данных, следует сбросить бит TWEA регистра TWCR в 0 (это можно сделать и во время обмена, т. е. при сброшенном флаге TWINT). В результате после передачи следующего байта на линию SDA будет выдан сигнал неподтверждения, сигнализирующий ведущему о том,


что ведомый не может больше осуществлять прием данных. Обработка адресных пакетов при сброшенном бите TWEA прекращается, но может быть возобновлена в любой момент времени повторной установкой этого бита.

Если адресация устройства произойдет при нахождении микроконтроллера в «спящем» режиме и бит TWEA будет при этом установлен, то модуль TWI переведет микроконтроллер в рабочий режим. При этом до сброса флага TWINT на линии SCL будет удерживаться НИЗКИЙ уровень.

Все возможные состояния модуля TWI в режиме «Ведомый-приемник» приведены на Рис. 11.18.

Прием своего адреса и одного или нескольких байтов данных Все посылки подтверждены

Последний принятый байт не подтвержден

Потеря приоритета в режиме ведущего и адресация в качестве ведомого

Прием адреса общего вызова и одного или нескольких байтов данных

Последний принятый байт не подтвержден

Потеря приоритета в режиме ведущего и адресация в качестве ведомого

DATA

А

DATA

Р 1ЛИ~

($80)

($80) ($А0)

А

РилиЭ

Общ ив р

DA А

A DATA

А

РилиЗ

S—состояние СТАРТ

Rs— состояние ПОВСТАРТ

Р— состояние СТОП

R—запрос на чтение (1)

W—запрос на запись(0)

А— бит подтверждения (0)

А"— бит неподтверждения (1)

SLA— адрес ведомого устройства

DATA

От ведущего к ведомому

От ведомого к ведущему

Один или несколько байтов данных

с соответствующими битами подтверждения

- момент установки флага TWINT, п — код статуса в регистре TWSR

Рис. 11.18. Состояния модуля TWI в режиме «Ведомый-приемник»


11.5.4. Режим «Ведомый-передатчик»

В режиме «Ведомый-передатчик» устройство осуществляет передачу данных ведущему, который в этом случае является приемником. Перед тем как переключить модуль в этот режим, следует занести в старшие биты регистра TWAR адрес устройства и, в соответствии с логикой работы программы, установить или сбросить младший бит регистра (TWGCE). Затем необходимо записать в регистр TWCR следующее значение:

TWINT

TWEA

TWSTA

TWSTO

TWWC

TWEN

- TWIE

0

1

0

0

0

1

0

X

1-Разрешить работу модуля TWI

-Разрешить подтверждение

После инициализации регистров TWAR и TWCR модуль будет ожидать адресного пакета с адресом, указанным в регистре TWAR, или общего вызова (если его распознавание разрешено). Значение следующего за адресом бита направления определит режим, в который переключится модуль. Если этот бит будет установлен в 1 (чтение), модуль TWI переключится в режим «Ведомый-передатчик». В противном случае модуль переключится в режим «Ведомый-приемник». Следует помнить, что устройство также может автоматически переключиться в режим «Ведомый-приемник» из режима ведущего при потере приоритета (см. описание кода статуса $В0 в Табл. 11.11).

После приема пакета SLA+R установится флаг TWINT, и состояние обмена можно будет, как обычно, определить по коду статуса. Возможные действия со стороны программы, соответствующие тому или иному коду статуса, указаны в Табл. 11.11.

Таблица 11.11. Коды статуса для режима «Ведомый-передатчик»

Действия программы

Код статуса

Состояние шины и модуля TWI

Чтение/запись в регистр TWDR

Запись в регистр TWCR

Следующее действие, выполняемое модулем TWI

й

STO

TWINT

TWEA

$А8

Был принят SLA+Wc собственным адресом и послано подтверждение (АСК)

Загрузить данные

X

0

1

0

Будет передан последний байт данных, должно быть получено неподтверждение (NACK)

Загрузить данные

X

0

1

1

Будет передан очередной байт данных, должно быть получено подтверждение (АСК)



0 ... 146 147 148 149 150 151 152 ... 195