I2C на dsPIC30xxxx

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Hi, All !

   Если при передаче данных от слейва к мастеру слейв по каким-либо причинам не
получит необходимое количество clock'ов (мастер перезапустили по reset'у,
помеха на шине и т.д.), то шина может оказаться в "странном состоянии" - слейв
держит данные в нулевом уровне и ждёт clock. При этом мастер не может выдать ни
start condition ни что-либо ещё, что вывело бы шину из "странного состояния".

   Сейчас дял решения проблемы применяю перевод пинов SCL, SDA в режим PIO и
"вручную" генерирую start condition и 9 clock'ов, после чего снова активирую
модуль I2C.

   Есть странное чувство, что данное решение, хм... "через задницу" что-ль...

   Как данная проблема _правильно_ решается на dsPIC30хххх програмным путём ?



P.S.: В качестве слейва - DS1307

                Hе прощаюсь, Alexander Gribanov.

Site Timeline