Timm T. schrieb:
> Also wenn ich einen Software-Master programmiere:
>
> SCL high
> SDA / ACK lesen
> Delay 5µsec
> SCL low
Besser so:
SCL high/open
wait while SCL not high
read SDA
.
.
Das Warten bis SCL wirklich high ist, erledigt lame Pullups, kapazitive
Buslasten und Clock-Stretching.
Der Ablauf ist ja so: Der Slave erkennt, daß SCL low geworden ist und
hält es jetzt selbst auf low, legt seine Daten auf SDA und läßt SCL los.
D.h. SDA ist immer etwas früher als SCL. Und solange SCL und SDA nicht
beliebig elektrisch unterschiedlich aufgebaut sind, hat sich SDA
eingeschwungen, bevor SCL high geworden ist. Ist der Slave wesentlich
schneller als deine 5µs, bekommst du das garnicht mit. Du hälst ja in
dieser Zeit SCL selbst auf low.
MfG Klaus