Цитата(esaulenka @ Nov 6 2012, 16:14)

Стандартное решение: дать ему "выговориться" :-)
Выдать на SCL 9 импульсов (до 8 данных и 1 ack), но не подтверждать приём. После этого NAK'а слейв должен отпустить шину.
Одна проблема - я не знаю контроллеров, которые могут сделать подобный манёвр без передачи START.
Думал над эти уже...
Но что-то как-то через одно место получается...
Да и насильно его (SCL) садить на землю боязно как-то...
Может кто знает, при подаче питанния на Slave, если до отключения питания он не закончил передачу, он сразу начинает пихать байты, или ждет старта от Mastera ?
Любопытно, почему при подключении логического анализатора зачастую все Ок...
Цитата(_Артём_ @ Nov 6 2012, 16:28)

Видимо нужно проделывать процедуру с отключённым I2C.
А насколько необходима такая процедура? Или это перестраховка?
Поясню более подробно ситуацию.
Я нахожусь в отладке (IAR), программа гоняется по кругу, идет опрос барометра, смотрю его показания, все ок. Решаю внести изменения в прошивку, жму Rebild, заливаю прошивку в контроллер. Если в момент перезагрузки работал Slave, то он не получил NACK от камня и пытается ему передать то, что не успел. Соответственно после прошивки не могу достучаться до slave, так как шина занята (SDA прижат на землю).
Ну или возьмем другую ситуацию, все работает оот батарейки. Батарейка села, поменяли, если в момен отключения контроллера slave ему что-то слал, то после замены батарейки до Slave уже не достучаться, потму что как только появиться питание, он тут же прижмет линию SDA.