mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Suche Eeprom, das bei Spannungsausfall keine Daten zerstört


Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich programmiere eine Datenlogger-Funktionalität auf einem fertigen 
Mikrocontroller-Gerät. Das Gerät verfügt über ein Eeprom aus der 
M95*-Serie von STMicro.
Leider hab ich das Problem, dass beim Abschalten des Geräts nicht 
sichergestellt ist, dass nicht gerade noch auf das Eeprom geschrieben 
wird. Eine Pufferschaltung fällt leider aus, da das Gerät schon fertig 
ist.
Gibt es vielleicht pinkompatible Eeproms, bei denen sichergestellt ist, 
dass bei einem unterbrochenen Speichervorgang wenigstens die Daten nicht 
zerstört werden, die vorher in dem Speicherbereich standen? Das würde 
mir nämlich reichen.
Ansonsten müsste ich wohl irgendwie redundant abspeichern und die halb 
geschriebenen Daten von woanders wiederherstellen.

Schönen Gruß

Gabriel

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>dass bei einem unterbrochenen Speichervorgang wenigstens die Daten nicht
>zerstört werden, die vorher in dem Speicherbereich standen?

Das kannst Du nie ausschließen und es hängt hauptsächlich vom Timing ab, 
wann die Spannung unter den kritischen Wert gefallen ist und ob das 
EEPROM da bereits mit dem Tunneln der Elektronen angefangen hat. Das 
Problem muß viel eher vom Controller erkannt werden, aber wenn der 
Befehl an´s EEPROM ´raus ist, kann der auch nichts mehr machen.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es, gewissermassen. FRAM von RAMTRON. Erhältlich beispielsweise bei 
TME. Die schreiben so schnell wie RAM und sind pinkompatibel zu den 
üblichen seriellen I2C/SPI EEPROMs. Wenn man da dafür sorgt, dass der 
Powerdown kontrolliert erfolgt (also die Leitungen nicht wild 
rumwackeln), kann da kaum etwas passieren.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Quark. Wenn der Schreibbefehl an das FRAM gegengen ist und während des 
Schreibvorganges der Saft abgestellt wird, ist der Zustand der 
Speicherzelle danach ebenso undefiniert. Das kann kein Baustein 
erkennen, daß der Stromausfall unbeabsichtigt war und somit die alten 
Daten in den Zellen verbleiben sollen.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn man da dafür sorgt, dass der Powerdown kontrolliert
> erfolgt (also die Leitungen nicht wild rumwackeln),
> kann da kaum etwas passieren

Genau das ist ja das Problem ...

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@travelrec:

Stimmt schon, nur hängt das erheblich davon ab, wie schnell oder langsam 
der Schreibvorgang ist. FRAMs haben keine spürbare Schreibverzögerung, 
d.h. um Datenverlust zu provozieren, muss man den Strom schon hart 
mittendrin abschalten während es grad schreibt. Und das ist bei gleicher 
Schreibrate schonmal weit weniger wahrscheinlich.

Wenn man nun das übliche Minimum an Kondensatoren drinhat (100nF plus ab 
und zu 10µF) und den Controller mit BOD fährt, dann wird das Protokoll 
zwischen Controller und FRAM abgebrochen, bevor dem FRAM endgültig der 
Saft ausgeht und sollte damit in der Lage sein, halb durchgeführte 
Schreibvorgänge mit undefiniertem Inhalt auf die Speicherzellen zu 
vermeiden.

Was dabei natürlich immer noch passieren kann: dass ein Block halb 
geschrieben wurde. Das lässt sich aber m.E. softwareseitig lösen.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus t. Firefly wrote:

> Genau das ist ja das Problem ...

Mit brownout/low-voltage-detector plus passendem Pullup/down hat man das 
im Griff.

Wenn man natürlich auch das vergessen hat, dann geht garnichts mehr 
richtig. Dann kann es sogar passieren, dass irgendwelche wirren Zellen 
schon beim Neustart über Bord gehen.

Autor: Oliver V. (busoni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn genug Platz ist, kann man die Werte immer abwechselnd an zwei 
Speicherorte schreiben (z.B. gerade und ungerade Adressen), zusammen mit 
einem 2-bit Wert, der jedesmal hochgezählt wird. So weiss man beim 
nächsten lesen, welcher der aktuellere Wert ist - bzw dass etwas 
schiefgelaufen ist, wenn der Zähler an einem Speicherort nicht 1 höher 
ist als am anderen.
Wenn etwas schiefläuft, ist der Wert der Speicherzelle außerdem 
wahrscheinlich 0xff (weil sie ja erst gelöscht wird). Wenn das möglich 
ist, könnte man diesen Wert als Daten-Wert ausschließen und 
dementsprechend Werte mit 0xff verwerfen und auf die jeweils andere 
Speicherzellen zurückgreifen.

Ich würde die Daten also in 4-Bit Werte aufteilen (oder vielleicht kommt 
man mit 4 Bit eh aus?), den Rest des Bytes für einen 2-Bit-Zähler und 
ein festes Bit-Muster als Plausibilitäts-Check verwenden und dann immer 
abwechselnd schreiben. So vervierfacht sich allerdings der 
Speicherbedarf und es muss etwas gerechnet werden.


Sowas war wohl auch mit "irgendwie redundant" gemeint.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An sowas wie bei Oliver ähnliches hatte ich softwareseitig auch gedacht. 
Nur dass man bei FRAM effektiv keine Begrenzung der Anzahl Schreibzyhlen 
hat, und daher für diese zweite Speicherstelle immer die gleiche Stelle 
verwenden kann.

Wobei bei sowas eine CRC/Prüfsumme hinter dem Datensatz immer sinnvoll 
ist. Egal was für Speicher dafür verwendet wird.

Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke für die Inputs soweit. Die FRAMs sind ja tatsächlich so wie es 
aussieht keine schlechte Sache, leider ist aber auch keins in der Größe 
und dem Temperaturbereich verfügbar, wie ich es bräuchte. Und auch kein 
Betrieb bei 5V. Als Denkanstoß für zukünftige, neue Sachen aber auch 
jeden Fall brauchbar.
Ich denke wohl ich werde die Daten doppelt speichern und mit einer 
Prüfsumme sichern, dann kann ich die fehlerhaften Daten aus der Kopie 
wiederherstellen.

Autor: Oliver V. (busoni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt, Prüfsumme ist auf jeden Fall sicherer als so ein Bit-Muster.

Autor: Oliver V. (busoni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ISt FRAM nicht auch sauteuer?

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nö. www.tme.eu, nach FRAM suchen.

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.