Hi, All !
Если при передаче данных от слейва к мастеру слейв по каким-либо причинам не получит необходимое количество clock'ов (мастер перезапустили по reset'у, помеха на шине и т.д.), то шина может оказаться в "странном состоянии" - слейв держит данные в нулевом уровне и ждёт clock. При этом мастер не может выдать ни start condition ни что-либо ещё, что вывело бы шину из "странного состояния".
Сейчас дял решения проблемы применяю перевод пинов SCL, SDA в режим PIO и "вручную" генерирую start condition и 9 clock'ов, после чего снова активирую модуль I2C.
Есть странное чувство, что данное решение, хм... "через задницу" что-ль...
Как данная проблема _правильно_ решается на dsPIC30хххх програмным путём ?
P.S.: В качестве слейва - DS1307
Hе прощаюсь, Alexander Gribanov.