Ich habe hier einen 24C08 (meine ersten Gehversuche mit I2C) und irgendwie funktioniert das nicht ich bekomme einfach kein Byte ausgelesen, Wire.available() ist offenbar immer false.
Adresse sollte laut Datenblatt 1010 + die drei Pins die auf GND und somit 0 sind = 1010000 (binär) = 80 (dezimal) sein. Ist in den meisten Anleitungen im Netz und in meinem schlauen Arduino Buch auch so, zwar mit einem anderen Chip (24LC..) aber die scheinen ja kompatibel zu sein, oder? Abgesehen davon hab' ich auch alle Addressen von 0..255 ausprobiert, ging auch nicht.
sui:
... - Adresse sollte laut Datenblatt 1010 + die drei Pins die auf GND und somit 0 sind = 1010000 (binär) = 80 (dezimal) sein. Ist in den meisten Anleitungen im Netz und in meinem schlauen Arduino Buch auch so, zwar mit einem anderen Chip (24LC..) aber die scheinen ja kompatibel zu sein, oder? Abgesehen davon hab' ich auch alle Addressen von 0..255 ausprobiert, ging auch nicht.
Zuerst mal sind die Adressen der I2C Bausteine 7 Bit lang nicht 8 Bit.
101 0000 ist nicht 0x80 sondern 0x50 (hex); Außerdem sind nicht alle 3 Adressleitungen nur für die I2C-Adresse da, sondern das EEprom 24C08 ist in 4 Blöcke mit jeweils eigenen I2C Adressen eingeteilt, also 0x50, 0x51, 0x52 und 0x53 also jeweils 256 Bytes. (falls Du die vollen 1kByte verwenden willst).
Aber ich verstehe den Code aus den gängigen Beispielen (die so bei mir nicht funktionieren) nicht. Kann mir jemand die Zeilen 2+3 im folgenden Snippet erklären?
Die zeile 2 und 3 sind lediglich zwei arten einen EPROM anzusteuern: MSB ist most significant bit, LSB steht für least significant bit. in einer Binärzahl ist das MSB immer die erste stelle, das LSB die letzte Stelle - MSB und LSB stellt einfach die Reihenfolge dar, von deraus gezählt bzw gesendet wird.
Ok, ich habe also 4 Geräte 80, 81, 82, 83 mit jeweils 256 Adressen 0..255 und kann da jeweils ein Byte schreiben/lesen.
Ja genau; diese Art von EEprom macht das so; größere Eproms haben dann eine 2 Byte Adresse für die Speicherzelle, die Du über I2C überträgst.
Grüße Uwe