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)