Frage zu I2C Startbedingung
Moin,
ich habe ein Problem mit dem I2C-Protokoll. Es gibt eine "unangenehme" Situation bei diesem Protokoll, zu dem ich keine Lösung gefunden habe. --Auch google hats nicht d'rauf. :-k
Nehmen wir an, die Kommunikation ist so weit gediehen, dass der Master fortwährend Daten vom Slave einlesen kann. Er empfängt 8 Bits und sendet danach ein ACK oder NACK je nachdem, ob weitere Daten übertragen werden sollen. Bei ACK "gehört" dem Slave die SDA-Leitung und er belegt sie mit dem ersten Bit, des nächsten Bytes. Wenn dies 0 ist, legt er SDA aktiv auf low.
Wenn nun die Kommunikation aus irgendwelchen Gründen unterbrochen wird, d.h. es kommen erst einnal keine weiteren Clock-Signale, hat der Master keine Chance, die Startsequenz einzuleiten (SDA: high -> low, bei SCL: high), weil SDA vom Slave auf low gahlten wird. Was muss der Master in einem solchen Fall tun?
Ich werde mich zunächst damit behelfen, solange Clock-Signale zu geben, bis SDA auf low geht. Aber ist das normgerecht?
vg
Red Baron