Ein kleines Projekt: -ATMega328 -LCD -zwei Temperatursensoren Das Display zeigt die aktuellen Werte der Temperatursensoren an. Beim Einschaltvorgang sollen die Maximal (jeweils gemessenen Höchstwerte) für drei Sekunden angezeigt werden. Wenn ich die Werte im Loop im EEPROM speichere, bin ich mit den 100'000 Schreibzyklen schnell am Ende. Wenn ich es alle 10 Minuten mache, bekomme ich den Höchstwert evtl nicht mit. Schön wäre, den Höchstwert in eine Varibale zu schreiben und beim Exit diesen zu speichern. Nur eine Exit Routine gibt es ja in diesem Sinn nicht, es gibt nur power weg. Wie gehe ich vor? Jemand eine Idee?
:
Bearbeitet durch User
Philipp G. schrieb: > Schön wäre, den Höchstwert in > eine Varibale zu schreiben und beim Exit diesen zu speichern. Nur eine > Exit Routine gibt es ja in diesem Sinn nicht, es gibt nur power weg. > > Wie gehe ich vor? Jemand eine Idee? Mit Kondensator und Diode kannst du den Controller nach einem Power-Off so lange versorgen bis die Werte gespeichert wurden. Ein Eingangspin VOR der Diode detektiert den Ausschaltmoment. Alternative: FRAM
:
Bearbeitet durch User
aha, les' ich mir kurz alles durch, melde mich wieder.
ich versteh das Problem nicht so richtig. Wenn es nur um die Maximalwerte geht müssen Die doch auch nur geschrieben werden wenn es einen Neuen gibt. Wenn der aktuelle Messwert unter dem Höchstwert liegt wird einfach nix geschrieben. Das sind dann nicht viele Schreibzugriffe.
Frank L. schrieb: > ich versteh das Problem nicht so richtig. Wenn es nur um die > Maximalwerte geht müssen Die doch auch nur geschrieben werden wenn es > einen Neuen gibt. Wenn der aktuelle Messwert unter dem Höchstwert liegt > wird einfach nix geschrieben. Das sind dann nicht viele Schreibzugriffe. Hm, da ist was dran. Stimmt. Cyblord -. schrieb: > Mit Kondensator und Diode kannst du den Controller nach einem Power-Off > so lange versorgen bis die Werte gespeichert wurden. Ein Eingangspin VOR > der Diode detektiert den Ausschaltmoment. Ich versorge noch die Hintergrundbeleuchtung vom LCD mit. Müsste ich mal schauen was die zieht, und die Dimensionierung vom C rechnen ob das reicht. Es ist so eine 'standard' 16x2 LCD Anzeige.
Philipp G. schrieb: > Ich versorge noch die Hintergrundbeleuchtung vom LCD mit. Müsste ich mal > schauen was die zieht, und die Dimensionierung vom C rechnen ob das > reicht. > > Es ist so eine 'standard' 16x2 LCD Anzeige. Die braucht ~1mA, die Hintergrundbeleuchtung deutlich mehr. Und rein praktisch, wo liegt das Problem? Erstens ist es nur ein Bastelprojekt und 2. läuft dein Board praktisch immer, da gibt es selten einen Stromausfall. Und wenn doch, so what! Speichere deinen MIN/MAX-Wert, wenn es denn wirklich einen neuen gibt, alle 15min und gut. Macht bei 100.000 garantieren Schreibzyklen satte 1000 Tage ~3 Jahre, real eher deutlich mehr, denn du hast nicht alle 15min einen neuen MIN/MAX Wert.
Philipp G. schrieb: > Ich versorge noch die Hintergrundbeleuchtung vom LCD mit. Müsste ich mal > schauen was die zieht, und die Dimensionierung vom C rechnen ob das > reicht. Ja und die MUSS dann unbedingt mit in dem Notstromkreis hängen? Bau halt deine Verschaltung bisschen um.
Jop. Nur einen neuen Wert speichern, wenn er wirklich größer als der vorher gespeicherte ist. Ein Lesezugriff führt zu keinem Verschleiß der Speicherzelle.
Sebastian R. schrieb: > Jop. > > Nur einen neuen Wert speichern, wenn er wirklich größer als der vorher > gespeicherte ist. Ein Lesezugriff führt zu keinem Verschleiß der > Speicherzelle. DAS ist ja auch trivial. Hilft aber nicht bei langsam steigenden oder sinkenden Werten.
Speicher den Wert einfach in 20 Zellen reihum ab (Ringspeicher). Beim lesen gewinnt die mit dem höchsten Wert, der Verschleiß verteilt sich auf 20 Zellen, also 20Mio Saves.
Klingt alles sehr einleuchtend, danke Leute. Ich frage mich manchmal warum ich selber nicht auf sowas komme.
Geht es wirklich um die absoluten Maximalwerte ohne Zeitbegrenzung? Da fällt mir eigentlich nur Kühlkettenüberwachung ein. Wenn kein Stromausfall zu befürchten ist, dann einfach die Meßwerte ins RAM schreiben und nur den maximalen Wert ins EEPROM als Ringspeicher. Bei meinem Gasregler logge ich die Werte auch einfach ins RAM.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.