dl1akp
21.09.2007, 09:56
Hallo Leute,
möchte o.g. EEPROM zur Speicherung von Daten verwenden.
Habe es mit dem unteren Code auch schon für den 24C16 hinbekommen.
Nun bin ich etwas ratlos, wie das mit dem 24C512 gehen soll. Speziell die ADressierung und dann die Adresse auswählen bei diesem Teil.
Hat da jemand eine Idee, oder vielleicht schon mal gemacht - und kann mir mit Codeschnipseln helfen??
Hier mein Code für den 24C16, habe ich glaube auch dem Robonetz...
im Adresse As Word 'Die Adresse als Word-Variable (0...65535); hier nur 0...2048 nötig
Dim Slave As Byte 'siehe Text
'****************************Unterprogramm Schreiben
'---- schreibe in EEprom ----
Schreiben:
For X = 1 To 6
Select Case Adresse 'Erklärung siehe Datei "Adressierung des 24C16"
Case 0 To 255 : Slave = &HA0
Case 256 To 512 : Slave = &HA2
Case 513 To 768 : Slave = &HA4
Case 769 To 1024 : Slave = &HA6
Case 1025 To 1280 : Slave = &HA8
Case 1281 To 1536 : Slave = &HAA
Case 1537 To 1792 : Slave = &HAC
Case 1793 To 2048 : Slave = &HAE
End Select
I2cstart 'Start I2C
I2cwbyte Slave 'Sende Slave Adresse
I2cwbyte Adresse 'Sende Speicheradresse High
I2cwbyte Buffer(x) 'Sende Wert
I2cstop 'Stop I2C
Waitms 10 'warte 10ms
Incr Adresse 'nächste Speicheradresse
Next
Return
'****************************Ende Unterprogramm
'***************************Unterprogramm Lesen
'--- lesen vom EEprom ----
Lesen:
'Adresse = Adresse - 6 'von aktueller Adresse wieder 6 Adressen rückwärts
For X = 1 To 6
Select Case Adresse
Case 256 To 512 : Slave = &HA2
Case 513 To 768 : Slave = &HA4
Case 769 To 1024 : Slave = &HA6
Case 1025 To 1280 : Slave = &HA8
Case 1281 To 1536 : Slave = &HAA
Case 1537 To 1792 : Slave = &HAC
Case 1793 To 2048 : Slave = &HAE
End Select
I2cstart 'Start I2C
I2cwbyte Slave 'sende Slave Adresse
I2cwbyte Adresse 'Sende Speicheradresse High
I2cstart 'Start I2C
I2cwbyte &HA1 'sende Slave Adresse +1 für lesen
I2crbyte Buffer_ee(x) , Nack 'lese Adresse vom EEprom
I2cstop 'Stop I2C
Waitms 10
Incr Adresse
Next
Adresse = Adresse + 6 'Adresse wieder auf ursprünglichen Wert setzen
Return
'*************************** Ende Unterprogramm
Vielen Dank im Voraus.
Andreas
möchte o.g. EEPROM zur Speicherung von Daten verwenden.
Habe es mit dem unteren Code auch schon für den 24C16 hinbekommen.
Nun bin ich etwas ratlos, wie das mit dem 24C512 gehen soll. Speziell die ADressierung und dann die Adresse auswählen bei diesem Teil.
Hat da jemand eine Idee, oder vielleicht schon mal gemacht - und kann mir mit Codeschnipseln helfen??
Hier mein Code für den 24C16, habe ich glaube auch dem Robonetz...
im Adresse As Word 'Die Adresse als Word-Variable (0...65535); hier nur 0...2048 nötig
Dim Slave As Byte 'siehe Text
'****************************Unterprogramm Schreiben
'---- schreibe in EEprom ----
Schreiben:
For X = 1 To 6
Select Case Adresse 'Erklärung siehe Datei "Adressierung des 24C16"
Case 0 To 255 : Slave = &HA0
Case 256 To 512 : Slave = &HA2
Case 513 To 768 : Slave = &HA4
Case 769 To 1024 : Slave = &HA6
Case 1025 To 1280 : Slave = &HA8
Case 1281 To 1536 : Slave = &HAA
Case 1537 To 1792 : Slave = &HAC
Case 1793 To 2048 : Slave = &HAE
End Select
I2cstart 'Start I2C
I2cwbyte Slave 'Sende Slave Adresse
I2cwbyte Adresse 'Sende Speicheradresse High
I2cwbyte Buffer(x) 'Sende Wert
I2cstop 'Stop I2C
Waitms 10 'warte 10ms
Incr Adresse 'nächste Speicheradresse
Next
Return
'****************************Ende Unterprogramm
'***************************Unterprogramm Lesen
'--- lesen vom EEprom ----
Lesen:
'Adresse = Adresse - 6 'von aktueller Adresse wieder 6 Adressen rückwärts
For X = 1 To 6
Select Case Adresse
Case 256 To 512 : Slave = &HA2
Case 513 To 768 : Slave = &HA4
Case 769 To 1024 : Slave = &HA6
Case 1025 To 1280 : Slave = &HA8
Case 1281 To 1536 : Slave = &HAA
Case 1537 To 1792 : Slave = &HAC
Case 1793 To 2048 : Slave = &HAE
End Select
I2cstart 'Start I2C
I2cwbyte Slave 'sende Slave Adresse
I2cwbyte Adresse 'Sende Speicheradresse High
I2cstart 'Start I2C
I2cwbyte &HA1 'sende Slave Adresse +1 für lesen
I2crbyte Buffer_ee(x) , Nack 'lese Adresse vom EEprom
I2cstop 'Stop I2C
Waitms 10
Incr Adresse
Next
Adresse = Adresse + 6 'Adresse wieder auf ursprünglichen Wert setzen
Return
'*************************** Ende Unterprogramm
Vielen Dank im Voraus.
Andreas