Цитата(Д_М @ Oct 25 2017, 13:00)
(1) Разъясните, пожалуйста, про Repeated Start. . . .
(2) . . . Потому у меня и не работало, пока не вставил паузы между Stop и Start.
(1) Любой пакет, передаваемый master, должен начинаться Start(S) и заканчиваться Stop(P). Между ними моежт присутствовать RS.
Сам по себе пакет никаких прерываний не вызывает, только при требуемой настройке.
Обычно RS используется при передаче сложных команд, когда в первой фазе надо передать адрес слейва+RW, и 1-2...N
байт команды (режим Write), а затем считать (Read) ответ слейва. Этот режим аналогичен тому, что вместо RS использовать отдельные
Start(S) и Stop(P).
(2) Приемопередатчик I2C / TWI нельзя "дергать" пока он не закончил работу с шиной. Если Вы, в момент передачи или приема
дергаете его следующей командой из программы, то "все пропало". Поэтому возможно, и помогла пауза.
Курите описание узла I2C, - флаги состояния-статуса, настраивайте работу в режиме прерываний.