Цитата(Pechka @ Jun 5 2013, 18:40)

Таким образом, меняя значение TWCR в процессе обмена не ясно, что именно будет передано в линию: команда из только что обработанного прерывания I2C либо данные, обновленные в приведенной процедуре.
Запись в регистр TWCR запускает генерацию START, STOP и тп. Для запуска нужного действия нужно в соответствующий бит записать
1.
Запись
0 никаких действий не вызывает.
Цитата(Pechka @ Jun 5 2013, 18:40)

если TWINT=0 и штука обменивается данными - тогда не понятно. Например, я ведущий и посылаю стоп, а после этого делаю отключение прерывания указанным способом, то стоп дойдёт до ведомого или же потеряется?
Вроде нет указаний что STOP не дойдёт, но тут надо проверять.
Цитата(Pechka @ Jun 5 2013, 18:40)

после этого делаю отключение прерывания указанным способом, то стоп дойдёт до ведомого или же потеряется?
Нельзя одновременно запретить прерывание и запустить нужное действие?
Код
void TwiSendStop()
{
TWCR=0
| (1<<TWEN)
| (1<<TWEA)
| (0<<TWIE)
| (1<<TWSTO)
| (1<<TWINT)
;
}