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.