Hallo,

Zitat Zitat von fredred Beitrag anzeigen
... und muss im nachhinein schon etwas schmunzeln wie man sich „verrennen“ kann.
Ja, das kenne ich Ein von mir jetzt nicht näher benannter Freund im Roboternetzwürde sowieso empfehlen, zuerst ein PAP oder PAD (Programmablaufplan) zu erstellen.


Nur “addr_first_store_loc” kann ich immer noch nicht nachvollziehen.
Hat sich während der Programmentwicklung eingeschlichen und war irgendwann von mir dazu gedacht um dem Unterprogramm zu sagen, ab welcher Adresse geschrieben bzw. gelesen werden soll. Die Variable kann wieder wegfallen (wegoptimiet werden). Der Wert 24 kommt daher, daß bei einer Aktion 6 Singles geschrieben werden. Eine Single hat 4 Byte. 6 * 4 = 24. Beim ersten Aufruf von Schreiben ist "Aktionen" = 0 und die erste beschriebene Mem_addr ist damit die Adresse 0. Wird Schreiben nochmal aufgerufen, ohne daß "Aktionen" zurückgesetzt wurde, also ohne die "Lesen" aufzurufen, ist "Aktionen" = 1. Mem_addr wird zu 1 * 24 = 24 und damit werden dann die ersten 6 Singles nicht überschrieben. Die "Schreiben" kann also so beginnen:
Code:
Schreiben:
  Print #1 , "Byte der 6 Single-Variablen schreiben"
  Print #1 ,
  Mem_addr = Aktionen * 24                                  '24 = 6 Singles * 4 Byte (ein Single belegt 4 Byte)
  For Z = 0 To 5                                            'for-next mit 0 beginnen lassen, 6 Durchläufe - pro Single einen
.
.

Wenn Speicherbereich = NAN dann lesen beenden. Will doch keine NOP lesen. Es klappt.



Möchte aber für Weiterverarbeitung in [Excel] das es so aussieht.
“ String = Aktionen + „;“ + Byte_var_read(0) + „;“ + Byte_var_read(1) usw. “
Bin mir sicher du hast eine Lösung wie dies zu realisieren ist.
Das müsstest Du aber noch genauer beschreiben. So eine EXCEL Spreadsheet hat Zeilen und Spalten. Was soll konkret in den Zeilen und Spalten stehen? Mit Printanweisungen kann man eine Ausgabe produzieren, die zB dem csv Format entspricht. Viele Terminalprogramme erlauben es, direkt eine Logdatei der empfangenen Zeichen mitzuschreiben. So kriegt man mit "Hausmitteln" recht einfach viele Daten nach EXCEL.


Kann nur sagen du bist „Goldwert“ für Einsteiger in BASCOM.
Danke. Mir hat aber auch Deine Frau leid getan und ich möchte nicht, daß sie nächsten Sonntag heiser wird

Gruß
Searcher

PS:Allgemein zum Programmablauf ging mir noch so einiges, daß ich mir angelesen habe, durch den Kopf:
Speicherzellen in EEPROMS können je nach Typ und Hersteller unterschiedlich oft aber begrenzt beschrieben werden.
Jedes Mal, wenn mit I2cstop nach write ein EEPROM interner Schreibvorgang ausgelöst wird, verbleiben weniger Schreibzyklen.
Im gegenwärtigen Programm (mit byte write method) sind das für einen Block von 6 Singles vierundzwanzig Schreibvorgänge.
Durch Nutzen des Page Writes (bis zu 32 Bytes mit einem internen Schreibvorgang - Datenblatt) kann das drastisch reduziert werden und damit die Lebensdauer des EEPROM erhöht werden.
Wenn nicht immer der komplette EEPROM beschrieben wird, kann man folgende Schreibzugriffe immer erhöhen, so daß man nicht immer die gleichen Speicherzellen beschreibt. Ist man an der obersten Adresse angelangt, fängt man unten wieder an. Erhöht weiter die Lebensdauer bis er unsterblich wird.

Ich bisher nichts gefunden, daß der EEPROM beim Lesen eine Wartezeit braucht.
Einsatz von Current Address Read method und Sequential Read würden das Lesen beschleunigen.

Aber Änderungen in dem gegenwärtigen Schreib-/Lesealgorithmus würden das Programm meist komplizierter machen.
Weitere Optimierungen ...