Ich habe 5 Arrays von 1 bis 18. 4 Davon sind Byte Arrays und das 5. besteht aus Word Variablen. Diese Arrays muss ich am Ende von meiner Setup Routine in den EEPROM schreiben und beim Start des µC auslesen. Ich habe folgendes versucht: Am Start des Programms: Readeeprom On_hour(1) , Eon_hour For Temp = 2 To 18 Readeeprom On_hour(temp) Next Readeeprom On_min(1) , Eon_min For Temp = 2 To 18 Readeeprom On_min(temp) Next Readeeprom On_day(1) , Eon_day For Temp = 2 To 18 Readeeprom On_day(temp) Next Readeeprom On_wait(1) , Eon_wait For Temp = 2 To 18 Readeeprom On_wait(temp) Next Readeeprom On_dimm(1) , Eon_dimm For Temp = 2 To 18 Readeeprom On_dimm(temp) Next Am Ende des Setups: Writeeeprom On_hour(1) , Eon_hour For Temp = 2 To 18 Writeeeprom On_hour(temp) Next Writeeeprom On_min(1) , Eon_min For Temp = 2 To 18 Writeeeprom On_min(temp) Next Writeeeprom On_day(1) , Eon_day For Temp = 2 To 18 Writeeeprom On_day(temp) Next Writeeeprom On_wait(1) , Eon_wait For Temp = 2 To 18 Writeeeprom On_wait(temp) Next Writeeeprom On_dimm(1) , Eon_dimm For Temp = 2 To 18 Writeeeprom On_dimm(temp) Next Der EEPROM Bereich: $eeprom $eepromhex Eon_hour: Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 Eon_min: Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 Eon_day: Data 127 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 127 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 Eon_wait: Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 Eon_dimm: Data 0% , 0% , 0% , 0% , 0% , 0% , 0% , 0% , 0% , 0% , 0% , 0% , 0% , 0% , 0% , 0% , 0% , 0% $data Das Problem ist, dass das mit den For Next Schleifen nicht funktioniert, weil er für die successive Erhöhung des Read bzw. Writeeeprom befehls einen Pointer verwendet, der bei Schleifen nicht funktioniert. Nur will ich nicht (und kann ich auch nicht wegen dem knappen Speicher) 90 Read- und writeeeprom Befehle schreiben. Kennt da lemand einen Trick, wie ich ein ganzen Array in den EEPROM und wieder Hinnaus bekomme? Danke schonmal!
dim byte_array (18) as eram byte dim word_array (18) as eram word und schon kannst Du jede beliebige Zelle abfragen, ändern etc. einfach durch xxxxx = byte_array(y) oder byte_array(y) = xxxxx
Es spricht auch nichts dagegen, bei jedem Lese- bzw. Schreibbefehl die Position anzugeben. Also so: EE_ptr = Eon_hour For Temp = 1 To 18 Readeeprom On_hour(temp), EE_ptr Incr EE_ptr Next For Temp = 1 To 18 Readeeprom On_min(temp), EE_ptr Incr EE_ptr Next usw.
JO Danke für den Tip! Habe es mittlerweile mit ERAM Variablen als Array gelöst, funktioniert auch wunderbar. Nochmal Danke!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.