Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Flash schreiben lesen Kategorie: CC2-Unit & Appl.Board / CC2-Station (von Andr√© H. - 12.03.2021 9:52)
Als Antwort auf Flash schreiben lesen von Martin - 8.03.2021 19:11
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard
Hallo Martin,

> Hallo Zusammen,
>
> Ich versuche eine Handvoll long und int im
> Segment 1 zu speichern. Damit ich mich auf Dauer nicht
> mit den Adressen vertuhe soll es eine Universalroutine richten.
>
> Ich kann auch erfolgreich w√ľste Zahlen aus dem Flash lesen,
> aber mein Schreibversuch ändert nichts.

Ich gehe davon aus, da√? flash.hex in Segment 3 geladen wurde,
da lesen möglich ist?

Wichtig beim Umgang mit dem Flash ist, da√? nicht √ľberm√§√?ig gel√∂scht wird.
Nach dem L√∂schen eines Flash-Segements macht es keinen Sinn, anschlie√?end
auszulesen, da gelöscht. ;-)
F√ľr Werte, die oft ge√§ndert werden sollen, w√§re ein I¬≤C-Bus-EEprom besser.

Bitte verwende im Forum die code-Tags f√ľr C2-Quellcode.


> Ich hoffe, dass ich irgendeinen dummen Fehler gemacht habe.
> writeLong antwortet mit 0.

Du wertest den R√ľckgabewert des Schreibzugriffs auch nicht aus.

function rw_long (long wert) returns long
{
 if ask == 1
  wert= flash.readLong(segment, addr);
 else
  flash.writeLong(segment, addr, wert);
// R√ľckgabewert der Schreibaktion wird nicht ausgewertet,
// somit: woher soll der Wert "0" kommen?
 
 addr = addr + 4; // wird immer gleich hochgez√§hlt
 return wert;
// wert ist hat nach dem Schreiben denselben wert, wie √ľbergeben
}



Die funktion saveload erscheint mir wenig sinnvoll:

function saveload()
{
 long wert;
 
 segment=1;
 addr=2;
 if ask == 0 // wer nicht fragt, will was schreiben!
 {
  flash.DelSeg (segment);
  lcdext.print(" del ");
 }
 
    wert=Arm.hebel;
    Arm.hebel = rw_long (wert);
   
    wert=Stiel.hebel;
    Stiel.hebel = rw_long (wert);
 
    ...
 }

Das Löschen sollte wirklich nur im Einzelfall erfolgen.
Wenn die Variable "ask" versehentlich auf 0 bleibt, vernichtest Du
sehr schnell das Flashsegment.
Die Anzahl an Löschzyklen ist auf 100.000 begrenzt!
Nutze getrennte Funktionen/Routinen f√ľr das Schreiben und Lesen.
Stelle sicher, da√? es niemals zu Endlosschleifen beim L√∂schen kommen kann.
Wenn es sich um Konfigurationsdaten handelt, die im Flash gespeichert
werden sollen, nutze feste Adressen f√ľr die Speicherstellen.
Sind es Werte, die sich oft ändern, z.B. Positionsdaten von Schrittmotoren,
so nutze bitte ein I²C-Bus-EEProm statt Flash.


Gr√ľ√?e,
André H.


Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: Flash schreiben lesen (von Martin - 13.03.2021 10:18)