Hallo,
ich möchte Werte aus einer WordVariable im extenen I²C EEProm speichern. (Habe ein 24C512N)

Als Byte funktioniert es wunderbar. Nun habe ich versucht das Word in 2 Bytes zu trennen:

Wert1 = High(wert)
Wert2 = Low(wert)

und hinterher beim lesen zusammenzufügen:
Lesen = Makeint(lesenhigh , Lesenlow)

aber irgendetwas mache ich da falsch, weil nicht die gespeicherten Werte herauskommen.......

könnt ihr mir weiterhelfen?

Code:
$regfile = "m8def.dat"                                      'MEGA8-Deklarationen

$hwstack = 32
$swstack = 8
$framesize = 24


$crystal = 8000000                                          'intern 8MHz
$baud = 9600                                                'Baudrate definieren
'-------------------------------------------------------------------------------
'Ein / Ausgänge definieren:
'Ddrb = &B00111100                                           '0=Eingang
'Ddrc = &B1111111
Ddrd = &B01100011                                           '0=Eingang


'PullUps setzen:
'Portb = &B00000000                                          '1 = PullUp AKTIV
'Portc = &B0000000                                           '1 = PullUp AKTIV
'Portd = &B00000000                                          '1 = PullUp AKTIV

'-------------------------------------------------------------------------------
'Alias
Taster1 Alias Pind.2
Taster2 Alias Pind.3
Taster3 Alias Pind.4
Led1 Alias Portd.5
Led2 Alias Portd.6




'-------------------------------------------------------------------------------
'Variablen


'-------------------------------------------------------------------------------
'Timer
'Timer1 = 2x / sec bei 8MHz
'Config Timer1 = Timer , Prescale = 256                      'Teiler
'Const Timervorgabe = 49910
'Enable Timer1
'Enable Interrupts

'-------------------------------------------------------------------------------
Dim Wert As Word
Dim Wert1 As Byte
Dim Wert2 As Byte


Dim Lesen As Word
Dim Lesenlow As Byte
Dim Lesenhigh As Byte

Dim Adresse As Word At $160                                 'Die Adresse als Word-Variable
Dim Low_adresse As Byte At $160 Overlay                     'Zeiger auf das erste Byte
Dim High_adresse As Byte At $161 Overlay                    'Zeiger auf das zweite Byte



'SDA und SCL definieren
Config Sda = Portc.4                                        ' I2C-Port festlegen
Config Scl = Portc.5                                        ' I2C-Port festlegen


Const Ext_eeprom = 162                                      'I2C Geräteadresse ggf. anpassen
Wert = 12345


'-------------------------------------------------------------------------------
'Für RS232:
'On Urxc Onrxd                                               'Interrupt-Routine setzen
'Enable Urxc                                                 'Interrupt URXC einschalten
Enable Interrupts                                           'Interrupts global zulassen


'---------------------------------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------------------------
Do

If Taster1 = 1 Then
'----schreiben----
For Adresse = 250 To 260                                    'Adresse geht über die Byte-Grenze
Incr Wert                                                   '1 bis Überlauf


Gosub Eeprom_schreiben

Print "schreiben ->Adres.=" ; Adresse ; "Wert=" ; Wert ; "  "       'Anzeige vom schreiben
Waitms 500
Next Adresse
End If


If Taster2 = 1 Then
'---lesen----
For Adresse = 250 To 260

Gosub Eeprom_lesen


Lesen = Makeint(lesenhigh , Lesenlow)


Print "lesen <-Adres.=" ; Adresse ; "Wert=" ; Lesen ; "  "  'Anzeige vom lesen
Waitms 500
Next Adresse
End If





Loop





'------------------------------------------------------
'- Byte (wert) auf EEprom Adresse (address) speichern -
'------------------------------------------------------
Eeprom_schreiben:
Wert1 = High(wert)
Wert2 = Low(wert)
I2cstart                                                    'Start
I2cwbyte &HA0                                               'Sende Slavadresse
I2cwbyte High_adresse                                       'Sende Speicheradresse High
I2cwbyte Low_adresse                                        'Sende Speicheradresse  LOW
I2cwbyte Wert1                                              'Sende Wert
I2cwbyte Wert2                                              'Sende Wert
I2cstop                                                     'stop
Waitms 10
Return



'-----------------------------------------------------------------
'---  Byte (wert) von EEprom Adresse (address) lesen           ---
'-----------------------------------------------------------------
Eeprom_lesen:
I2cstart                                                    'Start
I2cwbyte &HA0                                               'Sende Slavadresse +1 für Schreiben
I2cwbyte High_adresse                                       'Sende Speicheradresse High
I2cwbyte Low_adresse                                        'Sende Speicheradresse Low

I2cstart                                                    'Start
I2cwbyte &HA1                                               'Sende Slavadresse +1 für Lesen
I2crbyte Lesenhigh , Lesenlow                               'Lese Adresse vom EEprom
I2cstop                                                     'Stop
Return
Danke, Tobias