Ich kämpfe nun seit drei Tagen mit dem Lesen und Schreiben auf einen 24c64.
Bin nun soweit das ich ein Byte geziehlt schreiben und lesen kann, allerdings würde ich viel lieber ein Word geziehlt schreiben und lesen.
Mit den Prog kann ich auf Tastendruck ein Wert (Word) an den 24C64 senden,
allerdings beim lesen geht es nur mit Werten bis 255 (also Byte)
Was muss ich noch ändern?
Code:$regfile = "m8def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portb.5 , Rs = Portb.4
Config Lcd = 16 * 2
Cursor Off
Config Scl = Portc.5 'PIN für I2C Bus
Config Sda = Portc.4
Config Pinc.3 = Input
Config Pinc.1 = Input
Config Portc.2 = Output
Config Portc.0 = Output
Portc.3 = 1 'Pullup ein
Portc.1 = 1 'Pullup aus
Dim X As Word
Dim A As Byte
Dim B As Byte
Dim Lesen As Word
Cls
Main:
Do
X = X + 5
A = 1
B = 1
If Pinc.3 = 0 Then
Portc.2 = 1
Gosub Eschreiben
End If
If Pinc.3 = 1 Then
Portc.2 = 0
End If
If Pinc.1 = 0 Then
Portc.0 = 1
Gosub Elesen
End If
If Pinc.1 = 1 Then
Portc.0 = 0
End If
Loop
Eschreiben: '---- schreibe in EEprom ----
I2cstart 'Start I2C
I2cwbyte &HA0 'Sende Slave Adresse
I2cwbyte A 'Sende Speicheradresse High
I2cwbyte B 'Sende Speicheradresse LOw
I2cwbyte X 'Sende Wert
I2cstop 'Stop I2C
Waitms 10 'warte 10ms
Locate 1 , 1
Lcd "ins EE= " ; X ; " " ' Ausgabe der geschriebenen Werte am LCD
Waitms 500
Return
Elesen: '--- lesen vom EEprom ----
I2cstart 'Start I2C
I2cwbyte &HA0 'sende Slave Adresse
I2cwbyte A 'sende Speicheradresse High
I2cwbyte B 'sende Speicheradresse Low
I2cstart 'Start I2C
I2cwbyte &HA1 'sende Slave Adresse +1 für Lesen
I2crbyte Lesen , Nack 'lese Adresse vom EEprom
I2cstop 'Stop I2C 'Stop I2C
Locate 2 , 1
Lcd "Lese EE= " ; Lesen ; " " 'Ausgabe der EEprom Werte
Waitms 500
Return
End