Daten aus dem Ram retten

Gast #1446685
Lesenswert?

Hi.

Ich bin grade dabei ein Steuermodul mit AVR zu bauen.
Das Steuermodul hat eine automatische Kalibrierungsfunktion die von Zeit 
zu Zeit ausgeführt wird. Ich möchte den Kalibrierungswert aber nicht 
mehr ständig in den eeprom schreiben, da er sich sonst zu viel abnutzt.
Der Wert soll jetzt nur noch im RAM gespeichert werden, und erst beim 
abschalten der Versorgungsspannung im eeprom gesichert werden.
Das bedeutet, der Mikrocontroller muss den Wegfall der 
Versorgungsspannung erkennen und "in den letzten Atemzügen" den Wert 
sichern.

Wie macht man sowas üblicherweise? Ich habe mir mal eine Schaltung 
überlegt, mit der ich das machen könnte.
Aber reicht diese Schaltung aus?
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #1446698
Lesenswert?

> Wie macht man sowas üblicherweise?
Du nimmst den AD-Wandler oder den Komparator und ermittelst, wann deine 
Spannung unter z.B. 4,5V fällt. Dann hurtig speichern, denn bei 2,7V 
kommt der BrownOut.
Der Komparator ist hier von Vorteil, weil er einen Interrupt auslösen 
kann. Aber sowohl beim Komparator wie beim ADC solltest du eine 
geeignete Referenzspannung verwenden.


> Such mal nach Brown-Out Detection
Lies mal die Aufgabenstellung... :-o
Persönliche Seite #1446713
Lesenswert?

Ich hab das so ähnlich in einer Schaltung gelößt. Allerdings würde ich 
den C vor dem Festspannungsregler noch etwas größer machen. Je größer 
der ist und je weniger Last dran hängt, um so länger hält der µC durch.

Die Dedektion habe ich nur über einen Spannungsteiler am µC 
angeschlossen. Sofern die 12V haöbwegs stabil sind, reicht das ja.

Das Programm bekommt den Spannungsabfall über einen Interrupt eines 
Komparatoreinganges mit. In der ISR schalte ich als erstes alle 
Verbraucher ab (LED, LCD, Relais etc). Dann schreibe ich die Daten (bei 
mir sogar in einen I2C-EEPROM). Die 5V liegen noch ca. 1 Sekunde an, 
bevor der µC seinen Geist aufgibt.

Brown-Out geht in diesem Falle nicht, da diese Funktion erst anspringt, 
wenn es schon zu spät ist...

Gruß
Sven
Gast #1446716
Lesenswert?

Karl Heinz hat Recht, das EEPROM kann min. 100.000 mal umprogrammiert
werden. Multipliziere das mal der dem Zeitabstand der Kalibrierungen....

Weitere Möglichkeit das EEPROM zu "schonen":
Vor dem Schreiben prüfen, ob nicht bereits der Wert "drinsteht"-
oder
prüfen ob das Schreiben erfolgreich war, und im Fehlerfall
auf Ersatzzellen umschalten. (Funktioniert bestens!)


Gruß

James
Moderator (Firma: Titel) Persönliche Seite #1446717
Lesenswert?

Oder doch besser vor dem Uregler:
Die hier würde z.B. bei 10V einen Interrupt auslösen
1
   12V------o------o--------[Ureg]---- 5V
2
            |      | 
3
            |      |
4
            -      -
5
      7,5k | |    | | 
6
           | |    | |
7
            -      -         
8
            |      |    Vref
9
            |      o--------------|\ 
10
            |      |              | >--
11
            o------)--------------|/
12
            |      |    Vpowerfail
13
            -     ,--
14
      2,5k | |     ^ 2,5V
15
           | |     |
16
            -      |
17
            |      |
18
   GND------o------o-------
Gast #1446733
Lesenswert?

Wir reden von 10 Minuten
Im Moment führe ich die Kalibrierungsfunktion alle 10 Minuten aus. 
Natürlich könnte ich auch alles viel genauer aufbauen und mit weniger 
Toleranz arbeiten, was aber mit Mehraufwand verbunden ist.
Ich könnte auch hingehen und Kalibrierungswert nicht speichern und mit 
einen fest vorgegebenen Wert starten. Und wenn dann nach ein paar 
Minuten genug Daten da sind, den exakten Wert berechnen. Ich wäre am 
Anfang dann halt etwas ungenauer.

Wenn ich mir den letzten Wert speicher bin ich gleich wieder relativ 
genau.
Im Moment schreibe ich sofort in den eeprom, deswegen mache ich mir 
Sorgen, ob ich ihn nicht zu stark beanspruche.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren