Hallo, ich habe ein Problem mit der Kommunikation von einem Atmega1284 über I²C zu PCF8574 als Eingang. Ich sende die Adresse, bekomme ein ACK, und empfange den Eingangszustand des PCF8574, dann das STOP-Bit. Jedoch bleibt der SDA-Pegel auf LOW und mein Controller hängt sich auf. Lasse ich das Stop-Bit am Ende der Kommunikation weg (war Zufall, hatte ich vergessen), so hängt sich der Controller nicht auf. Ich kann weiter kommunizieren, jedoch bleiben bis zur nächsten Kommunikation und danach die SDA und SCL Pegel auf LOW. Zweites wäre kein Problem, weil die Kommunikation funktioniert. Aber ich bin auf den INT von dem PCF8574 angewiesen (Eingänge/Port-Zustand ändert sich), welche nur funktioniert wenn die Pegel wieder auf HIGH sind. Damit der Controller gleich reagieren kann. Ich benutze die Library für I²C von Peter Fleury. Screenshot tek00010 zeigt die Kommunikation mit STOP-Bit Screenshot tek00011 zeigt die Kommunikation ohne STOP-Bit Die Eingänge de PCF8574 liegen auf LOW. Weshalb im Datenbyte nichts zu sehen ist. Woran liegt das das die Pegel von SDA & SCL nicht mehr auf HIGH gehen?
Sendest Du eine Write-Adresse oder eine Read-Adresse?
Ich sende read-addr., also "addr-byte | 0x01"
Dann darfst Du beim Lesen des letzten Bytes kein ACK anfordern.
Bruce schrieb: > Screenshot tek00011 zeigt die Kommunikation ohne STOP-Bit Da fehlt auch START-Bit, wie soll das funktionieren ?
Vielen Herzlichen Dank! :-) Es funktioniert. Einen schönen Tag wünsche ich noch!
@Wilhelm: War das ACK am Ende des Datenbytes. Ohne ACK funktioniert es jetzt. Vielen Dank Wilhelm.
Prima! Die (eindeutigen) Lösungen sind immer wichtig für Leute, die danach suchen ;-)
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.