Dass du da nur 256 Adressen kriegst, ist bei dem Programm normal, da du als High-Address immer 1 sendest.
Wenn du bei nem grossen Speicher (z.B: 24ST512) alle Adressen ansprechen willst, dann müsste deine Schreibroutine z.B. so aussehen:
Code:
For Y_Hi = 0 To 255
For Y_Lo = 0 To 255 ' Maximal nur 255!!
I2cstart ' IC2 Start
I2cwbyte &HA0 ' Geräteadresse für EEprom senden
I2cwbyte Y_Hi ' High Speicheradresse senden
I2cwbyte Y_Lo ' Low Speicheradresse Senden
I2cwbyte Y1 ' Epprom mit 255 überschreiben ( löschen)
I2cstop
Next Y_Lo
Next Y_Hi
Der schreibt dir dann hier alle Adresse von 0 - 65535 mit dem Wert Y1 voll.
Noch als Tip: Wenn du sequentiell schreiben willst, muss du nicht jedes Mal IC2_Start, Adresse Senden etc. machen.
Es reicht, wenn du die Startadresse schickst und danach die Bytes, die du speichern willst. Geht schneller als so.
Mach ich z.B. beim "formatieren" solcher EEPROMs.
Beim Lesen genau so: wenn du nach dem aktuellen noch ein Byte willst, mit ACK bestätigen; wird das letzte geholt, dann NACK.
Lesezeichen