hab den code in dem von dir angeführten Artikel geändert:
Code:
Declare Sub Write_eeprom(byval Adresh As Byte , Byval Adresl As Byte , Byval Value As Byte)
Declare Sub Read_eeprom(byval Adresh As Byte , Byval Adresl As Byte , Value As Byte)
' Adresse erzeugen:
' Pin A0 und A1 sind intern mit Pulldowns versehen, sind also
' wenn extern nicht beschaltet 0
' Die Der Baustein halt serienmäßig die Adresse Binär:
' 1 0 1 0 0 A1 A0 R/W
' also, angenommen man möcht bei A0 = 0 und A1=0 schreiben:
' Adresse: 10100000 = 160
' Lesen Adresse: 10100001 = 161
'
' der 24c128 und 24c256 brauchen für die Adressierung 2 Byte
' Den High-Byte der Adresse und den Lowbyte der Adresse.
' Einfach, da die soviel Speicher habn :o)
Const Addressw = 160 'slave write address
Const Addressr = 161 'slave read address
Dim B1 As Byte
Dim Value As Byte 'dim byte
dim Adresse as word at &HA0 ' Der Speicherbereich ist dem jeweiligen Baustein anzupassen, muß aber den overlayvariablen gleich sein
Dim Adresh As Byte at &HA1 overlay 'Highbyte der Adresse
Dim Adresl As Byte at &HA0 overlay 'Lowbyte der Adresse
Dim A As Byte 'allgemeine Variable für Berechnungen
For Adresse = 1 To 5 ' die ersten 5 Byte schreiben
Value = Adresse + 100 'Beginnend mit Zahlenwert 105 um Verwechslungen zu vermeiden
Call Write_eeprom(1 , Adresse , Value) 'Daten schreiben
Next Adresse
For Adresse = 1 To 5 'die geschriebenen 5 Byte auslesen
Call Read_eeprom(1 , Adresse , Value) 'auslesen
Print Value 'Ausgabe an UART
Next Adresse
Sub Write_eeprom(byval Adresh As Byte , Adresl As Byte , Value As Byte)
I2cstart 'start condition
I2cwbyte Addressw 'slave address
I2cwbyte Adresh 'asdress H of EEPROM
I2cwbyte Adresl 'asdress L of EEPROM
I2cwbyte Value 'value to write
I2cstop 'stop condition
Waitms 10 'wait for 10 milliseconds
End Sub
Sub Read_eeprom(byval Adresh As Byte , Adresl As Byte , Value As Byte)
I2cstart 'generate start
I2cwbyte Addressw 'slave adsress
I2cwbyte Adresh 'asdress H of EEPROM
I2cwbyte Adresl 'asdress L of EEPROM
I2cstart 'repeated start
I2cwbyte Addressr 'slave address (read)
I2crbyte Value , Nack 'read byte
I2cstop 'generate stop
End Sub
overlayvariablen sind einfach variablen, die sich den speicherbereich teilen, sie greifen auf die gleichen sram-adressen zu
Lesezeichen