Forum: Mikrocontroller und Digitale Elektronik uC Powersupply Supervision


von KingJulian (Gast)


Lesenswert?

Ich würde gerne, falls mein System vom Netz getrennt wird, noch einige 
"zu erhaltende" Einstellungen in meinem uC Flash ablegen.

Sollte das funktionieren mit einem Schmitt Trigger der die 
Speise-Spannung überwacht und entsprechend auf dem uC einen externen 
Interrupt auslöst? Nehme an man braucht einfach entsprechende 
Stützkondensatoren. Oder ist solch ein System grundsätzlich zu langsam 
um diesen Schreibzugriff zu gewährleisten?

von Ordner (Gast)


Lesenswert?

KingJulian schrieb:
> Ich würde gerne, falls mein System vom Netz getrennt wird, noch einige
> "zu erhaltende" Einstellungen in meinem uC Flash ablegen.

suche Brown Out Interrupt
Beitrag "[AVR] Brownout Interrupt Vector?"

von achso (Gast)


Lesenswert?

Was hast du denn für eine Versorgunsspannung, du kannst diese mittels 
ADC messen und bei Unterspannung noch schnell versuchen die Daten im uC 
Flash abzulegen, die 3,3V mit einen großen Elko stützen?

von Ordner (Gast)


Lesenswert?

IMHO die falsche Vorgehensweise - erst wenn's brennt Einstellungen 
sichern. Besser wäre regelmäßig die Einstellungfen sichern oder immer 
wenn sie geändert wurden.

Bei Brown out Daten sichern birgt die Gefahr, das die Sicherung nicht 
vollständig erfolgt und somit ein inkosnsitenter Datensatz verbleibt.

von Dietrich L. (dietrichl)


Lesenswert?

Ordner schrieb:
> IMHO die falsche Vorgehensweise - erst wenn's brennt Einstellungen
> sichern. Besser wäre regelmäßig die Einstellungfen sichern oder immer
> wenn sie geändert wurden.

Das ist allerdings dann nicht gut, wenn die Änderungen häufig sind. Da 
könnte die max. garantierte Anzahl der Schreibvorgänge überschritten 
werden.

Wenn Dein Vorschlag deswegen nicht gehen sollte, finde ich KingJulians 
Ansatz nicht schlecht.
Dazu muss man die Spannung am Pufferkondensator (vor dem 
Spannungsregler!) mit einem Komparator überwachen und damit den 
Interrupt auslösen. Je nach Dimensionierung von Schaltschwelle und 
Kondensator hat man dann genügend Zeit, um die Schreibvorgänge 
abzuschließen.

von Pandur S. (jetztnicht)


Lesenswert?

Wenn sich der Controller bei Powerdown schnell genug von den 
Stromfressern trennt sollte es noch reichen, einen Status zu schreiben. 
Dabei sollte man aber die spannung vor dem Spannungsregler messen, weil 
da noch mehr energie vorhanden ist, es mehr Vorlaufzeit gibt, wie wenn 
man die 3.3V Speisung ueberwacht.

von A. S. (Gast)


Lesenswert?

Dietrich L. schrieb:
> Das ist allerdings dann nicht gut, wenn die Änderungen häufig sind. Da
> könnte die max. garantierte Anzahl der Schreibvorgänge überschritten
> werden.

Wenn die Änderungen häufig sind (also nicht von einem Menschen 
vorgenommen werden), dann
- kann man auch über batteriegepuffertes Ram nachdenken, bzw. FRAM oder 
per Goldcap
- ist es manchmal egal, ob der letzte oder vorletzte Wert oder Zustand 
gespeichert wird (z.B. bei Betriebsstundenzählern, die intern im 
Sekundentakt fortlaufen)

von Ordner (Gast)


Lesenswert?

Dietrich L. schrieb:
> Das ist allerdings dann nicht gut, wenn die Änderungen häufig sind. Da
> könnte die max. garantierte Anzahl der Schreibvorgänge überschritten
> werden.

Das ist dann ein Konstruktionsfehler, einen Speicher vorzusehen der die 
erwartbare Anzahl von Einstellungsänderungen nicht überlebt. Oft hilf 
schon einfaches Wear leveling - nicht immer an die selbe Flashaddresse 
stelle schreiben sondern reihum.

von Dietrich L. (dietrichl)


Lesenswert?

Ordner schrieb:
> Das ist dann ein Konstruktionsfehler, einen Speicher vorzusehen der die
> erwartbare Anzahl von Einstellungsänderungen nicht überlebt.

Du beschreibt eine mögliche Lösung der Aufgabe. Ob jetzt die 
Verwendung eines entsprechenden Speichers oder die Lösung mit 
Spannungsüberwachung die bessere ist, hängt von vielen Parametern ab.

Die pauschale Aussage "Konstruktionsfehler" kann also auch einfach 
falsch sein.

: Bearbeitet durch User
von Andi (Gast)


Lesenswert?

Ähnlich, wie die Vorredner schon sagten:
Die Spannung ganz vorne mit z.B. TL7705 überwachen, dann z.b. eine dicke 
Schottkydiode, dahinter dann die fetten Elkos. Diese speisen den 
Wandler/deine Schaltung. Je weniger an der Stelle verbraten wird (falls 
linear geregelt, um so weniger Kapazität mußt Du bereitstellen.
Der TL7705 löst bei Unterschreitung den Interrupt aus, der das 
"Rettungschreiben" veranlaßt.

von Gin (Gast)


Lesenswert?

Andere Idee: externen Baustein mit batteriegepuffertem RAM verwenden 
(z.B. RTC DS1302). Für "einige zu erhaltende Einstellungen", die sofort 
bei Änderung geschrieben werden, könnte das reichen.

von QA (Gast)


Lesenswert?

Dietrich bemerkte:
> Die pauschale Aussage "Konstruktionsfehler" kann also auch einfach
> falsch sein.

Na. die Aussage ist nicht pauschal.die Verwendung eines Speichers mit 
weniger als den spezifizierten Schreibzyklrn ist ein Fehler.

von Dietrich L. (dietrichl)


Lesenswert?

QA schrieb:
> Dietrich bemerkte:
>> Die pauschale Aussage "Konstruktionsfehler" kann also auch einfach
>> falsch sein.
>
> Na. die Aussage ist nicht pauschal.die Verwendung eines Speichers mit
> weniger als den spezifizierten Schreibzyklrn ist ein Fehler.

Ja klar, das wäre ein Fehler. Aber darum ging es doch nicht! Ich bezog 
mich auf die 2 Lösungen:
- Speicher, der viele Schreibzyklen kann, und bei jeder Änderung werden 
die Daten abgespeichert,
- Speicher mit begrenzter Anzahl Schreibzyklen + einer Schaltung, die 
sicherstellt, dass diese Grenze nicht überschritten wird.

Welche Lösung nun besser ist kann man eben nicht pauschal beantworten - 
ohne weitere Randbedingungen zu berücksichtigen!

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Ordner schrieb:
> Das ist dann ein Konstruktionsfehler, einen Speicher vorzusehen der die
> erwartbare Anzahl von Einstellungsänderungen nicht überlebt.
Dieser "Fehler" liegt hier nicht vor, da eine andere 
Entwicklungsphilosophie verfolgt wird.

Andi schrieb:
> Der TL7705 löst bei Unterschreitung den Interrupt aus, der das
> "Rettungschreiben" veranlaßt.
TL7702 und 7705 habe ich noch da, aber sind die noch zeitgemäß? Der 
Stromverbrauch ist relativ groß.

Schlimmer aber ist, dass der Kamerad bei Unterspannung 
keinen_definierten_Ausgang hat, er braucht einen zusätzlichen 
Transistor. Das ist leider kein theoretisches Problem, ich habe deswegen 
schon einmal ein Gerät nachentwickeln lassen, nachdem beim Kunden 
zerstörte Daten aufgetreten sind.

(Schaltung 9 im Datenblatt!)

von Segler (Gast)


Lesenswert?

Ordner schrieb:
> Oft hilf schon einfaches Wear leveling - nicht immer an die selbe
> Flashaddresse stelle schreiben sondern reihum.
Hmm, wie merkt man sich denn dabei an welcher Adresse der zuletzt 
geschriebene Wert steht..?

von Markus M. (adrock)


Lesenswert?

Man könnte immer das Byte und noch eine ID in einem Ringbuffer 
speichern. Also wenn man z.B. ein Byte speichern möchte und wear 
levelling über 200 Speicherstellen machen will, schreibt man noch ein 
zweites byte dazu mit der laufenden Nummer.

Beim Neustart durchsucht man dann den Puffer und nimmt den Wert mit der 
höchsten ID, das Zurückspringen auf 0 nach 255 bei der ID muss natürlich 
beachtet werden.

von C. A. Rotwang (Gast)


Lesenswert?

Segler schrieb:
> Ordner schrieb:
>> Oft hilf schon einfaches Wear leveling - nicht immer an die selbe
>> Flashaddresse stelle schreiben sondern reihum.
> Hmm, wie merkt man sich denn dabei an welcher Adresse der zuletzt
> geschriebene Wert steht..?

a) Garnicht. Alle ältere Werte sind gelöscht, nur der aktuelle Datensatz 
beginnt mit einem Wert ungleich 0x00 (wert gelöschte Zelle) Um den 
aktuellen Datensatz zu finden durchsucht man den RAM bis man die 
Anfangskenung für einen "nichtgelöschten" Block findet.

b)für verwaltungsdaten wie Pointer auf datensatz wird ein Speicher mit 
höhere Anzahl Löschzyklenn bspw EEPROM gewählt, so beim ATmega8: 
Write/Erase Cycles: 10,000 Flash/100,000 EEPROM

c)...

von Toxic (Gast)


Lesenswert?

Dietrich L. schrieb:
> Das ist allerdings dann nicht gut, wenn die Änderungen häufig sind. Da
> könnte die max. garantierte Anzahl der Schreibvorgänge überschritten
> werden.

Wenn man das Netzeil "normal" einsetzt sollte dies eigentlich kein 
Problem sein.Aber gehen wir mal davon aus,dass es ueber Gebuehr 
strapaziert wird:

Angenommen der User sitzt 8 Stunden vor dem Netzeil und kurbelt - weil 
er sich langweilt - jede Minute einmal am Einstellknopf,dann waeren dies 
in der Stunde 60 EEpromspeicherungen.Pro Tag(8Stunden) waeren es dann 
60x8 = 480 Speicherungen
Die Lebensspanne einer EEpromZelle liegt bei mindestens einer Million 
Schreib/Lesezyklen.
1000000/480 = 2000 Tage => 5 Jahre.

Ich wuerde da nicht lange fackeln: Letzte Einstellungen abspeichern.

von Dietrich L. (dietrichl)


Lesenswert?

Toxic schrieb:
> Angenommen der User sitzt 8 Stunden vor dem Netzeil und kurbelt - weil
> er sich langweilt - jede Minute einmal am Einstellknopf,dann waeren dies
> in der Stunde 60 EEpromspeicherungen.Pro Tag(8Stunden) waeren es dann
> 60x8 = 480 Speicherungen
> Die Lebensspanne einer EEpromZelle liegt bei mindestens einer Million
> Schreib/Lesezyklen.
> 1000000/480 = 2000 Tage => 5 Jahre.
>
> Ich wuerde da nicht lange fackeln: Letzte Einstellungen abspeichern.

Wenn das so ist, hast Du recht. KingJulian hat aber nichts darüber 
gesagt, um welche "Einstellungen" es geht.

Daher kann ich nur Wiederholen: welche Lösung richtig bzw. sinnvoll ist, 
kann man nur auf Basis diverser uns nicht bekannten Vorgaben oder 
Randbedingungen feststellen.

von C. A. Rotwang (Gast)


Lesenswert?

Dietrich L. schrieb:

> Ja klar, das wäre ein Fehler. Aber darum ging es doch nicht! Ich bezog
> mich auf die 2 Lösungen:
> - Speicher, der viele Schreibzyklen kann, und bei jeder Änderung werden
> die Daten abgespeichert,
> - Speicher mit begrenzter Anzahl Schreibzyklen + einer Schaltung, die
> sicherstellt, dass diese Grenze nicht überschritten wird.


Sorry aber der zweite Vorschlag bringt keinerlei Lösung, in beiden 
Fällen ("Speicher kaputtgeschrieben" oder "Schaltung blockiert bei 
erreichen Limit") ist der Effekt der gleiche, die neuen Einstellungen 
sind verloren.

Die Spannungsüberwachung löst das Problem des begrenzten 
Einstellungsspeichers auch nur fallbezogen und schafft neue 
Problemszenarien. Bspw. häufige Schwankungen an der überwachten 
Eingangsspannung (bspw Generatorbetrieb, 3. Welt Stromnetz) würde 
häufiges unnötiges Schreiben in den Speicher auslösen und wiederum zum 
frühzeitigen Kaputtschreiben führen.

Will man eine gewisse Anzahl von gespeicherten Einträgen über die 
spezifizierte Betriebsdauer garantieren, kommt man nicht umhin einen 
zeitlichen Mindestabstand zwischen den Speicherungen "Einzubauen". Bspw. 
minütlich. Oder man legt den Speicher so aus das er die Anzahl von 
Speicherungen (bei bestimmungsgemäßen Gebrauch mal Sicherheitsfaktor) 
aushält.

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.