Hallo! ich habe da das Problem dass ich unter bestimmten Randbedingungen eine schon gestartete TWI verbindung - ein read abbrechen muss. Sprich ich mache ein: * START * Write Addresse * Write Register * START * WRITE addresse|1 (=READ) und hier will ich abbrechen. Wenn ich dann einfach ein STOP sende, so geht mir nur SCL auf high. SDA bleibt low. Siehe auch Angefügtes Bild - SCL geht am Schluss auf high kurz nach dem STOP. Die einzige Möglichkeit, die ich gefunden habe, ist einen Read zu triggern - nur dann funktioniert es. Gibt es irgendeine bessere Möglichkeit SDA auf High zu bringen (TWI reset zu resetten oder ähnliches), denn der Fehlerfall (=Randbedingung) kann grundsätzlich auch bei einem Write auftreten. Danke, Martin
Hier zum Vergleich noch wenn ich vor dem STOP ein read triggere. Man sieht, dass SDA nach dem read beim Stop auch auf high geht...
Martin Sperl schrieb: > Gibt es irgendeine bessere Möglichkeit SDA auf High zu bringen (TWI > reset zu resetten oder ähnliches), denn der Fehlerfall (=Randbedingung) > kann grundsätzlich auch bei einem Write auftreten. Mit deinem Master kannst du alles machen, wenn aber der Slave SDA auf Low zieht, und das passiert nur bei einem Read, mußt du den Read zuende bringen und ihn mit NACK quitieren. Alternativ kann man ein HW-Reset oder ein Power-Cycle beim Slave erzeugen. MfG Klaus
Danke Klaus - das erklärt es. Dann bleibt mir nichts anderes übrig als mir den letzten Zustand (read/write) zu merken und dementsprechend mit einem read zu reagieren...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.