-
-
PIC18F45K20: Problem mit I²C-Bus
Hi leute, ich möchte das MSSP-Mudul nutzen um über einen I²C-Bus einen Seriellen EEprom zu steuern.
Mein Problem dabei: Start-Condition geht. Ich kann Daten Senden und bekomme auch ACK vom EEprom nach jedem byte, dass ich sende. Dass die ACKs vom EEprom kommen, weiß ich, weil kein ACK mehr kommt, wenn ich den Identifier ändere.
nur kann ich keine Daten empfangen. Ich empfange nur "1-worte" also 0xff.
So in etwa sieht mein Flowchart aus:
Fürs schreiben:
- Start-Condition
- Deviceselect-byte senden (R/W=0)
--- empfange ACK
- Address High-byte senden
--- empfange ACK
- Address Low-byte senden
--- empfange ACK
- Data-byte senden
--- empfange ACK
- Stop-Condition
Fürs lesen:
- Start-Condition
- Deviceselect-byte senden (R/W=0)
--- empfange NOACK !!!!!
- Start-Condition
- Deviceselect-byte senden (R/W=0)
--- empfange ACK
- Address High-byte senden
--- empfange ACK
- Address Low-byte senden
--- empfange ACK
- ReStart-Condition
- Deviceselect-byte senden (R/W=1)
- Data-byte empfangen
--- NOACK senden
- Stop-Condition
ich schreibe b'11110000' und lese b'11111111'. Dazwischen habe ich eine Warteschleife von ca 30msec.
Der verwendete EEprom ist ein M24C32
http://www.datasheetcatalog.org/data...cs/mXrrswv.pdf
Hat jemand eine idee was daran falsch sein kann? danke für die Mühe des lesens..
Gruß Jango1987
-
Hä ?
Was für ein Byte sendest Du an erster Stelle ???
Beim Lesen und Schreiben das gleiche ?
-
ich verstehe die frage nicht ganz...
lesen tu ich wie folgt: ich führe einen sog. "dummy-write" aus um die addresse zu selectieren, von der ich später lesen will.. das Deviceselect-byte ist natürlich das selbe.. bzw. R/W ist anders
aber eigentlich hatts sichs erledigt. War ein Hardwareproblem.. Der tread ist somit geschlossen schätze ich.
trotzdem danke für deine antwort..
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen