Hallo erstmal, ich hatte hier und da schon mal gelesen, dass man - zur Erhöhung der Haltbarkeit der einzelnen Zellen - die Daten bei kontinuierlicher Erfassung auch als Ringspeicher auslegen kann. Jetzt stellt sich für mich allerdings die Frage: Wo speicher ich den aktuellen Pointer damit dieser im Falle eines Stromausfalls nicht verloren geht... Ein Beispiel wäre für mich eine Uhr (ohne Pufferung), die auch nach einem Reset aus egal welchem Grund an der Stelle weiterläuft an der sie aufgehört hat (vergleichbar einer Analoguhr). Bei einer Sicherung der Zeit im Sekundentakt wären nach 28h die 100.000 Schreibzyklen bei einer Zelle erreicht. Wie könnte man sowas am sinnvollsten reralisieren? Eine Überlegung war, die ersten 2Byte als Index zu nehmen, welche dann auf einen Datenblock bestehend auch 2Byte Schreibcounter+Nutzdaten verweisen. Damit würde sich bei 65535 x 65535 eine Haltbarkeit (wenn das EEPROM groß genug ist - also eher extern) von 136 Jahren - was dann reichen sollte :) Gäb es sinnvollere Methoden sowas zu machen?
Wenn in den Daten keine Null vorkommen kann, was bei der Uhrzeit der Fall ist, könnte man den ganzen Speicher einmalig löschen, und wieder einzeln füllen, bis das Ende erreicht ist. Ich meine, der Löschvorgnag ist die eignetlich stressende Operation, das wäre damit selten. Wenn ein "Blank" gleich $FF ist, wie in Eproms, wäre das natürlich sinnvoller.
Speichere doch Deine Daten im Ram, und erst bei Abschaltung / Stromausfall speicherst Du sie dann im EEprom. Dazu kannst Du die Versorgungsspannung z.B. über einen A/D messen und die Versorgung des uCs z.B. mit einem GoldCap - Kondensator puffern. Das Schreiben auf EEprom geht ja meist sehr schnell.. Alternativ kannst Du den EEprom mti Startwerten voreinstellen (z.B. Du schreibst ihn mit FF voll) und vermeidest diesen Wert in Deinem Programm - dann mußt Du nach dem Reset nur soweit lesen bis "FF" kommt (davor steht Dein letzter Wert) und den gesamten Baustein einmal löschen wenn die letzte Zelle erreicht ist.
Vorschlag: Die Speisespannung überwachen (nicht die vermutliche stabilisierte Betriebsspannung) und einen Interrupt auslösen, wenn diese einen minimalen Wert unterschreitet. Jetzt sofort den Poniter im Eprom ablegen. Für diesen Vorgang reichen ein paar 100uF als Stützkondensator aus. Das würde die Anzahl der Schreibzyklen deutlich minimieren. Gruß Alex
ich hab immer nach den aktuellen Daten eine Endekennung reingeschrieben. Beim nächsten durchlauf einfach diese Endekennung ersetzt und eine neue angehängt. Incl. der Prüfung ob er am Speicherende angekommen ist. Läuft schon seit einiger Zeit sehr gut! Gruss Torsten
Wie kompakt bekommt man eigentlich die Zeitinformation gespeichert? Ich komme auf 32Bit wenn ich nur bis zum 31.12.2063 berücksichtige (älter werde ich sowieso nicht ;) )
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.