War tatsächlich I2C.
Lief auch soweit, allerdings hatte ich das Problem das mein EEPROM nicht
mitmachen wollte.
Die Befehle hat es soweit angenommen (und mit ACK bestätigt sofern sie
korrekt waren) das Problem ist jedoch dass vor dem Auslesen ein Dummy
Write gemacht werden muss, und selbiges lief überhaupt nicht.
Ich kann mal kurz die Vorgehensweise dafür schildern:
1 Start Condition
2 Device Address incl. Write Bit
3 EEPROM sendet ACK
4 Erste 8bit der Adresse werden übertragen
5 EEPROM sendet ACK
6 Zweite 8bit der Adresse werden übertragen
7 EEPROM sendet ACK
8 Dummy Daten werden übertragen
9 EEPROM sendet ACK
10 Start Condition
11 Device Address incl. Read Bit
12 EEPROM sendet ACK (auch bei falscher DEVADDR)
13 EEPROM sollte die Daten übertragen
Leider tut es das aber nicht.
Es könnte an 2 Dingen liegen:
Nach dem Schreiben der Daten (natürlich NICHT der Dummy Daten) wird die
Stop Condition falsch verstanden.
Ich nehme mal an dass wen die nicht folgt die Daten nicht geschrieben
werden.
Desweiteren habe ich beobachtet dass bei Schritt 11 das EEPROM auch ein
ACK sendet wenn die Device Adresse falsch ist, bei allen anderen
Abfragen funktioniert es jedoch normal.
Hat jmd von euch eine Idee?
Das er eine falsche Dev-Adresse akzeptiert verblüfft mich einfach..
Vllt hab ich auch einfach das Datenblatt falsch verstanden..
Das Ganze ist eine reine Software Lösung und ich verarbeite nur Bits,
deswegen ist der Code etwas unübersichtlich und lang, ich könnte ihn
aber auch mal posten..
EEPROM ist das 24C128 und SDA bzw. SCL liegen auf PORTA eines AT90S8515
Vllt fällt den alten Hasen hier mal was ein :)
Gruß und Danke!