PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC18F45K20: Problem mit I²C-Bus



Jango1987
07.11.2009, 15:51
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/datasheet/SGSThomsonMicroelectronics/mXrrswv.pdf

Hat jemand eine idee was daran falsch sein kann? danke für die Mühe des lesens..

Gruß Jango1987

BigWumpus
09.11.2009, 23:18
Hä ?
Was für ein Byte sendest Du an erster Stelle ???
Beim Lesen und Schreiben das gleiche ?

Jango1987
10.11.2009, 19:47
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..