So,
in Sachen Read funktionierts so:
Code:
Declare Function Read_eeprom(byval Adress As Byte) As Byte
'...
Lesen = Read_eeprom(addres)
'...
Sub Write_eeprom(byval Addres As Byte , Byval Wert As Byte)
I2cstart 'start condition
I2cwbyte &HA0 ' Bausteinadresse
I2cwbyte Addres ' Adresse im IC
I2cwbyte Wert ' Byte schreiben
I2cstop ' Stopbedingung
End Sub
Function Read_eeprom(byval Adress As Byte )
I2cstart 'Start I2C
I2cwbyte &HA0 'sende Slave Adresse
I2cwbyte Adress 'sende Speicheradresse
I2cstart 'Start I2C
I2cwbyte &HA1 'sende Slave Adresse +1 für lesen
I2crbyte Read_eeprom , Nack 'lese Adresse vom EEprom
I2cstop 'Stop I2C
End Function Read_eeprom
Auch auf die I2C-Slaveadresse achten, ob die zu der Einstellung des 2416 passt.
Nach dem schreiben eines Wertes, ist das EEprom für ein paar ms nicht erreichbar weil es das Byte erst ins EEprom schreibt, hierfür erstmal ins DB schauen wie lange das ist, können ca. 5ms sein.
Das bedeuted, wenn man sofort nachdem man einen Wert ans EEprom übergeben hat gleich wieder etwas davon lesen will, muss man erst warten. Macht man sowieso was anderes, was länger dauert als diese Zeit, braucht man natürlich nicht extra zu warten.
Lesezeichen