Daten aus dem Ram retten

Gast #1446685
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
> 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
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
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
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
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.
#1446758
Uhu Uhuhu schrieb:
> Wenn du den EEPROM alle 10 minuten beschreibst, wird er ca 19 /Jahre/
> durchhalten.

(Hast du das 24/7/52 gerechnet?)

Wobei das die vom Hersteller garantierte Mindestbetriebsdauer ist.
Meist halten die Dinger länger.
#1446768
Karl heinz Buchegger schrieb:
> Uhu Uhuhu schrieb:
>> Wenn du den EEPROM alle 10 minuten beschreibst, wird er ca 19 /Jahre/
>> durchhalten.
>
> (Hast du das 24/7/52 gerechnet?)

Sorry, hab mich um einen Faktor 10 verpeilt. Es sind nur 1,9 Jahre :-(

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.