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)