www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EEPROM als Ringspeicher


Autor: Manos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Christoph Kessler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: papa_of_t (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: ADrei (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Torsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Manos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;) )

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.