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


von Gabriel (Gast)


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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von Andreas K. (a-k)


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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


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.

von Rufus Τ. F. (rufus) Benutzerseite


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 ...

von Andreas K. (a-k)


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.

von Andreas K. (a-k)


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.

von Oliver V. (busoni)


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.

von Andreas K. (a-k)


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.

von Gabriel (Gast)


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.

von Oliver V. (busoni)


Lesenswert?

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

von Oliver V. (busoni)


Lesenswert?

ISt FRAM nicht auch sauteuer?

von Andreas K. (a-k)


Lesenswert?

Nö. www.tme.eu, nach FRAM suchen.

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
Noch kein Account? Hier anmelden.