@hrei und @Rage_Empire
Ihr redet aneinander vorbei:
Der Waitbefehl wird nur für Write benötigt, ist also im Unterprogramm 'Routine zum lesen von Daten aus dem EEPROM' unnötig.
Da hoffst Du drauf, dass der Compiler auch zukünftig die Variablen im RAM nicht optimiertDim Address_low As Byte 'Address ist hier überlappend
Dim Address_high As Byte 'dimensioniert, um High- und Low-
Dim Address As Word At Address_low Overlay 'Byte einfach ansprechen zu können.![]()
Ich gehe immer diesen sicheren Weg (erzeugt die gleiche Codelänge):
damit kann man auch wunderbar Long etc. in ein EEPROM schreiben/lesen:Code:Dim Address As Word Dim Adress_Raw(2) As Byte at Address Overlay Address_low Alias Adress_Raw(1) Address_high Alias Adress_Raw(2)
Dim Address As Long
Dim Adress_Raw(4) As Byte at Address Overlay
jetzt beim schreiben der Adresse auf die Blockgröße bei PageWrite achten. Hier die Variante zum lesen von LONG.
Das ganze lässt sich dann mit For/Next noch schön machen, wobei Bascom-typisch der Code dann anwachsen könnteCode:Devread = Dev + 1 I2cstart I2cwbyte Dev I2cwbyte Address_high I2cwbyte Address_low I2cstop I2cstart I2cwbyte Devread I2crbyte Adress_Raw(1) , Ack I2crbyte Adress_Raw(2) , Ack I2crbyte Adress_Raw(3) , Ack I2crbyte Adress_Raw(4) , Nack I2cstop![]()







Zitieren

Lesezeichen