Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo Mathias, > > Zuerst: Bitte formatiere Quellcode immer mit dem code-Tag. Dann lässt sich dieser im Forum > leichter lesen. > > Warum bei Dir False zurückgegeben wird, kann ich Dir nicht sagen. > Deine Routinen sind, wenn man von ein wenig umständlichen Code absieht, in Ordnung. > Vielleich hat der Flash Deiner Unit eine Macke. > Versuche deshalb einmal ein anderes Segment. (z.B. Segment 2) > > Ich habe die Flash-Routinen sicherheitshalber nochmal gestestet: > <code>thread main > {byte buf[256],i; > for i=0 ... 255 > {// Array mit Dummywerten beschreiben > buf[i]=i*7; > } > lcdext.init(); > lcdext.print("Del Flash..."); > flash.DelSeg(1); > lcdext.print("Done"); > lcdext.line(2); > lcdext.print("Write Data..."); > lcdext.line(3); > lcdext.zahl(flash.writeByteArray(1,0,buf,256)); > lcdext.goto(2,13); > lcdext.print("Done"); > sleep 500; > quit 2; > }</code> > > Ich habe jedesmal True(-1) zurückbekommen.(Auch beim Ändern der Werte des Arrays.) > Teste einmal diese Routine. > > Hier noch ein paar Hinweise zu Deinem Code: > <code> for i=0...255 // lese Speicher aus > { > sicherung[i]=pcf8583.readbyte(i); > }</code> > Warum benutzt Du nicht pcf8583.readarray() ? > Absehen davon, daß es dann nur ein Einzeiler wäre, ist es auch schneller. > Außerdem, warum willst du die ersten 18Byte mit abspeichern ? > Hier befinden sich die Register für Zeit/Datum, Alarmwerte, Timer. > Zurückschreiben darfst Du diese auf jeden Fall nicht alle. Denn sonst kann evtl. > einmal der WD auslösen. (Falls Du diese Funktion des PCF8583 nutzt.) > > Auch dies hier kannst Du einfacher lösen: > <code> fehl=flash.writeByteArray(1,0,sicherung,256); // schreibe Sicherung in Speicher > if fehl==0 // Fehlermeldung > { > pcflcd.clear(); > pcflcd.goto(4,0); > pcflcd.print("FEHLER"); > pcflcd.clear(); > return; > } > if fehl==-1 > { > pcflcd.clear(); > pcflcd.goto(4,0); > pcflcd.print("SICHERUNG OK"); > pcflcd.clear(); > return; > } > }</code> > > So sollte es etwas einfacher sein: > <code> > pcflcd.line(4); > if flash.writeByteArray(1,0,sicherung,256) // schreibe Sicherung in Speicher > pcflcd.print("SICHERUNG OK"); > else > pcflcd.print("FEHLER"); > sleep 1000; // Ene Pause sollte schon rein. Sonst sieht man den Text kaum. ;-) > pcflcd.clear(); > return;</code> > > > MfG André H. > > > > > Hallo, > > ich brauche wieder einmal Hilfe. Ich benutze den Speicher im PCF8583 als ausfallsicheren Variablen- > > Speicher. Jetzt möchte ich eine Sicherungskopie im Flash der Unit ablegen um diese gegebenfalls > > Rückzusichern. Laut Beschreibung erhalte ich bei Schreibfehlern eine Rückgabe FALSE (0). Leider > > bekomme ich eine Fehlermeldung beim schreiben flash.writeByteArray() > > > > Vielen Dank > > > > function sicherung() > > { > > int t,i,fehl; > > byte sicherung[256]; > > pcflcd.clear(); > > loop > > { > > t=heizb.Taste(); // Tastaturabfrage > > pcflcd.goto(1,0); > > pcflcd.print("SPEICHER SICHERN"); > > pcflcd.print("JA-->8 / NEIN-->0"); > > if t==8 // wenn Taste 8 > > { > > pcflcd.clear(); > > pcflcd.goto(1,0); > > pcflcd.print("SICHERUNG START"); > > flash.DelSeg(1); // lösche Segment 1 > > sleep 1000; > > pcflcd.goto(2,0); > > pcflcd.print("FLASH GELOESCHT"); > > for i=0...255 // lese Speicher aus > > { > > sicherung[i]=pcf8583.readbyte(i); > > } > > pcflcd.goto(3,0); > > pcflcd.print("DATEN VORBEREITET"); > > sleep 1000; > > fehl=flash.writeByteArray(1,0,sicherung,256); // schreibe Sicherung in Speicher > > if fehl==0 // Fehlermeldung > > { > > pcflcd.clear(); > > pcflcd.goto(4,0); > > pcflcd.print("FEHLER"); > > pcflcd.clear(); > > return; > > } > > if fehl==-1 > > { > > pcflcd.clear(); > > pcflcd.goto(4,0); > > pcflcd.print("SICHERUNG OK"); > > pcflcd.clear(); > > return; > > } > > } > > if t==0 // wenn Taste 0 > > { > > pcflcd.clear(); > > return; > > } > > } > > }