( bucko | 2019. 09. 10., k – 08:49 )

Gondolom az I2C EEPROM írásnál is komolyan elnyújtott órajelek vannak. Szerintem kevés olyan slave van, ami csettintésre megcsinál mindent.

Teljes sebességgel lehet írni és olvasni - a hivatkozott M24512 1MHz-es eszköz. Viszont bármilyen flash eszköz írásakor időbe telik az írás, - itt 128B lap írás - konkrétan max. 5ms, amely időtartam alatt nem válaszol. Ez egy nem szabványos busz ciklus: start - cím - nincs válasz, és ez nem azonos a "nincs ack" helyzettel. Tehát a stop helyett loop kell az adatlap szerint. Persze csak akkor, ha tudod, hogy írtál.

Tehát kilépve az ardunio világból, a többi eszköz nem használja az opcionális clock strectching funkciót. Mégpedig azért nem, mert a feladatnak megfelelő hardver áll a protokoll mögött. Pl. a bus collision detektálását is hardver + interrupt végzi, így nem kell pollingolni.

A clock stretching az ack előtt is opcionális. Az Arduino Arduinoval kommunikál olyan eset lehet, amikor a két szerkezet megbeszélte (a lib írója önmagával), hogy így fognak kommunikálni. Normál esetben nincs ilyenre szükség, mert az interrupt és az adat kezelése gyorsan elvégezhető. Ha én írom. ;) Tehát ilyen funkció van egy pic-en is, de külön engedélyezni kell.