Hallo
Hier mal der Minimalcode:
	Code:
	$regfile = "m8def.dat"
$crystal = 10000000
$hwstack = 250
$swstack = 250
$framesize = 250
'################## Config Port's ##############################################
'-----config Port D
Config Portd = 255
'##################### Config für LCD ####################################################
Config Lcd = 40 * 2
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , Rs = Portb.4 , E = Portb.5
Config Lcdbus = 4
Config Lcdmode = Port
Cursor On
Cls
'############################ Config ADC #######################################
Config Adc = Single , Prescaler = Auto
Start Adc
'############################ Config I2C Bus ###################################
Config Scl = Portd.6                                        ' I2C-Port festlegen
Config Sda = Portd.7                                        ' I2C-Port festlegen
'################## Variablen ##################################################                                             '
Dim I As Word                                               ' zum rechnen
Dim X As Word
Dim Koordinate As Long At $113
Dim Koordinate_teil1 As Byte At $113 Overlay
Dim Koordinate_teil2 As Byte At $114 Overlay
Dim Koordinate_teil3 As Byte At $115 Overlay
Dim Koordinate_teil4 As Byte At $116 Overlay
Dim Adresse As Word At $100
Dim Low_adresse As Byte At $100 Overlay
Dim High_adresse As Byte At $101 Overlay
'---------------------------------------------
Do
    For I = 1 To 10
       Adresse = I
       Koordinate = Koordinate + 10
      Gosub Eeprom_schreiben
      Locate 1 , 1
      Lcd "I=" ; Adresse ; " "
      Locate 1 , 5
      Lcd "K=" ; Koordinate ; " "
      Locate 1 , 14
      Lcd "A=" ; Koordinate_teil1 ; " "
      Locate 1 , 21
      Lcd "B=" ; Koordinate_teil2 ; " "
      Locate 1 , 28
      Lcd "C=" ; Koordinate_teil3 ; " "
      Locate 1 , 35
      Lcd "D=" ; Koordinate_teil4 ; " "
      Waitms 500
     Next I
     For I = 1 To 10
      Adresse = I
      Gosub Eeprom_lesen
      Locate 2 , 1
      Lcd "I=" ; Adresse ; " "
      Locate 2 , 5
      Lcd "K=" ; Koordinate ; " "
      Locate 2 , 14
      Lcd "A=" ; Koordinate_teil1 ; " "
      Locate 2 , 21
      Lcd "B=" ; Koordinate_teil2 ; " "
      Locate 2 , 28
      Lcd "C=" ; Koordinate_teil3 ; " "
      Locate 2 , 35
      Lcd "D=" ; Koordinate_teil4 ; " "
    Waitms 500
     Do
     X = Getadc(3)
    Waitms 100
     Loop Until X > 600
    Next I
     Wait 2
Loop
End
Eeprom_schreiben:
'----schreiben----
I2cstart                                                    'Start
I2cwbyte &B10100010                                         'Sende Slavadresse
I2cwbyte High_adresse                                       'Sende Speicheradresse High
I2cwbyte Low_adresse                                        'Sende Speicheradresse LOW
I2cwbyte Koordinate_teil1                                   'Sende Wert
I2cwbyte Koordinate_teil2                                   'Sende Wert
I2cwbyte Koordinate_teil3                                   'Sende Wert
I2cwbyte Koordinate_teil4                                   'Sende Wert
I2cstop                                                     'stop
Waitms 10
Return
'--------------------------------
Eeprom_lesen:
'---lesen----
I2cstart                                                    'Start
I2cwbyte &B10100010                                         'Sende Slavadresse
I2cwbyte High_adresse                                       'Sende Speicheradresse High
I2cwbyte Low_adresse                                        'Sende Speicheradresse Low
I2cstart                                                    'Start
I2cwbyte &B10100011                                         'Sende Slavadresse +1 für Schreiben
I2crbyte Koordinate_teil1 , Ack                             'Lese Adresse vom EEprom
I2crbyte Koordinate_teil2 , Ack                             'Lese Adresse vom EEprom
I2crbyte Koordinate_teil3 , Ack                             'Lese Adresse vom EEprom
I2crbyte Koordinate_teil4 , Nack                            'Lese Adresse vom EEprom
I2cstop                                                     'Stop
Return
'----------------------------------
 Beim Auslesen  kommt dann:
I=1    K=67305985..               A=10      B=20     C=30     D=40
I=2    K=84148994..               A=20      B=30     C=40     D=50
I=3    K=10099200...             A=30      B=40     C=50     D=60
.
u.s.w.
 
 
Ps.:
Wenn ich bis 12 lese, kommen dann Bei B-D die Nullen nach.
Es scheint so, als würde er da nur immer ein Byte reinschreiben?!
(Statt 4 Byte hintereinader)
l.G.
						
					
Lesezeichen