Hallo zusammen,
ich habe mal eine Frage, bzw. vielleicht einen Diskussionsanstoß:
Mal angenommen eine Schaltung, bei der ein Mikrocontroller ab und dann
Werte in einem EEPROM ablegt. Das seien wichtige Daten, z.B. eine
Messreihe von irgendwelchen zyklisch eingelesenen Daten.
Jetzt stelle man sich vor, in dem Moment, wo grad ein Wert gespeichert
wird, fällt die Stromversorgung aus - also quasi mitten beim Schreiben.
Im EEPROM steht dann ja nur Quatsch, was man später aber evtl. nicht
mehr klar erkennen kann, weil die resultierende Bitfolge, die dann
gespeichert ist, ebenfalls einen Sinn ergibt.
Wie kann man sowas absichern? Werte redundant schreiben? Von mir aus
dreimal, und beim auslesen die drei Werte vergleichen und dann den
nehmen, der mehrmals vorhanden ist - das bringt natürlich auch nichts,
wenn das Speichern beim ersten unterbrochen wird.
Evtl. mit Kondensatoren die Spannung puffern, sodass der Mikrocontroller
zumindest ne kleine Chance hätte, den Wert noch eben zu speichern?
Wie wird sowas denn in der Industrie realisiert? Da werden ja auch Werte
mitgeschrieben, um evtl später eine Analyse zu machen.
Oder das Speichern von irgendwelchen Parametern - mal angenommen, der
Techniker klemmt das Gerät grad in dem Moment ab, wo grad gesichert
wird...
Hat da jemand ein paar Idden zu?
Gruß, Jens
Jens schrieb:> Wie kann man sowas absichern?
Dafür sollte bereits eine CRC ganz gut helfen.
> Evtl. mit Kondensatoren die Spannung puffern, sodass der Mikrocontroller> zumindest ne kleine Chance hätte, den Wert noch eben zu speichern?
Kannst du auch machen, du kannst ja den Wegfall der externen
Versorgung irgendwie erkennen, sodass der Controller weiß, dass
jetzt Eile geboten ist und ein "Notlaufprogramm" anwirft.
Noch ein Nachtrag:
Bei Drucktransmittern z.b. die halt ihre Werte in regelmäßigen Abständen
abspeichern, da kann nicht einfch eine Batterie drin sein, weil diese
Geräte dazu noch meist vergossen sind und z.T. Temperaturen bis 80°C
problemlos aushalten müssen - eine Batterie fällt daher weg, weil wenn
leer, dann ist das Gerät "Schrott" - und so hohe Temperaturen für
Batterien ist ja auch eher ungut.
Z.B. der DS89C430 hat einen Early-Warning Power-Fail Interrupt. Damit
kann man die VCC überwachen und bei einem Einbruch rechtzeitig was
abspeichern.
Das ist also sehr bequem.
Bei den AVRs gehts nicht so einfach. Da muß man zyklisch die Bandgap
messen, um einen Einbruch zu erkennen.
Peter
1.Mit Goldcaps brennt ein Fahrradstandlicht z.B. noch 5 Minuten.
http://de.wikipedia.org/wiki/Goldcaps>Temperaturen bis 80°C
2.Es gibt auch Elkos für 105 Grad. Ob diese bei dauerhaften 85 Grad ein
ewiges Leben haben wäre sicher die nächste Frage.
3.Egal ob Sekündchen oder Stunden mit dem Dieselaggregat: igendwann
fällt auch dieser Strom aus. Deshalb gilt auch hier die alte
Bauernregel: Lege nie alle Eier in einen Korb!
>...Werte in einem EEPROM ablegt ?
Peter Dannegger schrieb:> Bei den AVRs gehts nicht so einfach. Da muß man zyklisch die Bandgap> messen, um einen Einbruch zu erkennen.
Kann man auch über den Analogkomparator machen, der kann ebenfalls
einen Interrupt auslösen.
@ Jens (Gast)
>Wie kann man sowas absichern? Werte redundant schreiben?
Das alelin reicht nicht. Man muss auch einen abgerochenen Schreibvorgang
erkennen. Z.B. über CRC, Zeeitstempel, etc.
>Evtl. mit Kondensatoren die Spannung puffern, sodass der Mikrocontroller>zumindest ne kleine Chance hätte, den Wert noch eben zu speichern?
Das ist ein üblicher Ansatz.
http://www.mikrocontroller.net/articles/Speicher#EEPROM_Schreibzugriffe_minimieren>Wie wird sowas denn in der Industrie realisiert? Da werden ja auch Werte>mitgeschrieben, um evtl später eine Analyse zu machen.
Mit den oben genannten Methoden, allerding schon recht aufwenig
umgesetzt.
>Oder das Speichern von irgendwelchen Parametern - mal angenommen, der>Techniker klemmt das Gerät grad in dem Moment ab, wo grad gesichert>wird...
Dann gibts wieder Arbeit für den Techniker. Man kann es sicher machen.
Aber nie idiotensicher.
MFG
Falk
>> 1.Mit Goldcaps brennt ein Fahrradstandlicht z.B. noch 5 Minuten.>> http://de.wikipedia.org/wiki/Goldcaps
Davon steht im Artikel nichts - habe ich etwas übersehen? Hintergrund:
mein Fahrradstandlicht kommt auf nur 60 Sekunden.
Allgemein: hinter jeden Datensatz gehört eine Prüfsumme als "Siegel".
Ein Datensatz ohne gültige Prüfsumme ist nicht glaubwürdig, muß beim
Lesen also ignoriert werden.
Für Konfigurationsdaten stellt sich da natürlich die Frage, was das
Gerät beim Einschalten machen soll, wenn die Prüfsumme nicht stimmt,
d.h. die Daten unbrauchbar sind. Da hilft es, die Konfiguration zweimal
zu speichern: entweder der Ausschalter trifft einen beim ersten
Speichern, dann ist die Kopie der alten Konfiguration noch heile, oder
er schlägt beim Speichern der Kopie zu, dann ist die neue Konfiguration
immerhin schon einmal gesichert. Nach dem Neustart muß das Gerät
allerdings erstmal "aufräumen", wenn es einen defekten Datensatz
erkennt.
Für Logdaten in einem Ringpuffer gilt ähnliches: nach dem Einschalten
erstmal den letzten Eintrag prüfen und löschen, falls er defekt ist.
Eine eigene Frage?
Dieser Thread ist über 16 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.