AVR: TWI abort/reset wärend ich im read bin

OP #3054491
Lesenswert?

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
Angehängte Dateien:
Gast #3054613
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren