Цитата(_Артём_ @ Jun 5 2013, 18:24)

Что именно портится? Каким образом меняете TWCR?
Через регистр TWCR происходит передача команд в аппаратный блок (в зависимости от значения TWSR в TWCR кладутся разные значения для обеспечения обмена). Таким образом, меняя значение TWCR в процессе обмена не ясно, что именно будет передано в линию: команда из только что обработанного прерывания I2C либо данные, обновленные в приведенной процедуре. Если TWINT=1 то, понятно, проблем нет - машина состояния ждет действий от приложения, а вот если TWINT=0 и штука обменивается данными - тогда не понятно. Например, я ведущий и посылаю стоп, а после этого делаю отключение прерывания указанным способом, то стоп дойдёт до ведомого или же потеряется?