Guten Tag,
komme nicht zum Erfolg. Nun bin ich langsam ans aufgeben.
Vermute ich verstehe Overlay nicht richtig oder der IC Eeprom (ST24c64) ist eigenwillig mit Adressierung der Speicherzuordnung.
Nochmals kurz meine Endvision. 6 Single-Variablen speichern dann nach nächster Aktion die nächsten 6 Single-Variablen anhängen usw. und dann auf Befehl kompletten Speicherbereich printen lassen.
Nur zum Verständnis vorab ein Printauszug dank Hilfe.
Gleichen String hintereinander speichern dann auslesen.
'ist Test Single-Variable
Four_byte_var_wr = 500.1
Siehe Code
Byte-Wert 205
Byte-Wert 12
Byte-Wert 250
Byte-Wert 67
geschrieben 500.10
gelesen 23.69E-39
gelesen 6.25E-36
Nun der Code.
Code:$regfile "m32def.dat" $crystal = 16000000 $hwstack = 32 $swstack = 32 $framesize = 40 $baud = 19200Code:'gibt den Erstellungszeitpunkt im europäischen Format DD-MM-YY hh:nn:ss 'und die Code-Version aus. Print " " Print "erstallt am : " ; Version(1) Print "Version Code : " ; Version(3) Print " " Waitms 100 $lib "i2c_TWI.lib" 'hardware I²C einbinden Config Twi = 100000 ' Takt 100kHz Const 24c64w = &B10100000 Const 24c64r = &B1010000 'Format für Single zwei Nachkommastellen Config Single = Scientific , Digits = 2 Dim Adresse As Word 'ist Adresszähler für Eeprom Dim Adresse_l As Byte At Adresse Overlay Dim Adresse_h As Byte At Adresse + 1 Overlay Dim I As Byte 'Laufvariable für for-next Schleife Dim Four_byte_var_wr As Single 'Single Variable für Write belegt vier Byte Dim Byte_var_write(4) As Byte At Four_byte_var_wr Overlay 'Array mit vier mal ein Byte liegt über der Write-Single Dim Four_byte_var_rd As Single 'Single Variable für Read belegt vier Byte Dim Byte_var_read(4) As Byte At Four_byte_var_rd Overlay 'Array mit vier mal ein Byte liegt über der Read-Single 'ist Test Single-Variable Four_byte_var_wr = 500.1 '&H1A2B3C4D 'dezimal = 439041101 (irgendeine Zahl) Do '********* schreiben ************** For Adresse = 1 To 8 Step 4 'Adressbereich festlegen I2cstart Adresse_h = High(adresse) Adresse_l = Low(adresse) I2cwbyte 24c64w I2cwbyte Adresse I2cwbyte Adresse_h I2cwbyte Adresse_l I2cstop I2cstart For I = 1 To 4 'die vier Bytes der Single Variablen zum EEPROM schreiben I2cwbyte Byte_var_write(i) ',(ack , Nack) Waitms 10 'etwas Zeit geben Print "Byte-Wert " ; Byte_var_write(i) 'Byte anzeigen ist OK Next I I2cstop '++++ ausgeben +++++++++ '!!dieses Print macht kein Sinn Variable ist vor Do schon festgelegt!! Print "geschrieben " ; Four_byte_var_wr '+++++++++++++++++++++++ Next Adresse Wait 2 ' nur für Test '********** lesen **************** For Adresse = 1 To 8 Step 4 'Adressbereich festlegen I2cstart Adresse_h = High(adresse) Adresse_l = Low(adresse) I2cwbyte 24c64w I2cwbyte Adresse_h I2cwbyte Adresse_l I2cstop I2cstart For I = 1 To 4 I2crbyte Byte_var_read(i) , Nack 'die vier Bytes der Single Variablen vom EEPROM lesen Waitms 10 'etwas Zeit geben Next I I2cstop '++++ ausgeben ++++ Print "gelesen " ; Four_byte_var_rd '++++++++++++++++++ Next Adresse Loop End
Danke an alle Helfer und besonders an Markus Fulde.
fredred







Zitieren

Lesezeichen