Hallo Zusammen, mich beschäftigt zur Zeit die Frage, wie man bei einer Mikrocontroller-Application am sinnvollsten "Benutzerdaten" speichert. Wenn ich mir z.B. meinen (gekauften) MP3-Player anschaue, so merkt sich dieser "meine" Lautstärkeeinstellung (auch nach dem "Ausschalten" - keine Ahnung, ob er dann im Standby schlummert, oder nicht). Mir fällt in diesem Zusammenhang nur das Speichern solcher Daten in einem EEPROM ein, aber die haben doch nur begrenzte Wiederbeschreib-Zyklen, oder? Wenn ich jedesmal, wenn sich ein verstellbarer Wert ändert, diesen Abspeichere, dürften diese doch schnell erschöpft sein. Ein MP3-Player könnte dies natürlich in seinem "Speichermedium" ablegen, aber es gibt ja noch andere Geräte (programmierbare Uhren, etc.), die vielleicht so einen Speicher nicht haben. Über Denkanstöße würde ich mich sehr freuen, viele Grüße, Sören
Das EEPROM hat nur eine begrenzte Lebensdauer, der Taster aber auch. Die des Tasters dürfte weit unter der des EEPROMs liegen. Und Potis dürften noch geringere Lebensdauer haben. Bei den neueren AVRs verträgt das EEP mindestens 100.000 Zyklen. Speichermedien haben aber auch eine begrenzte Lebensdauer. Ich glaube mich zu erinnern, im Datenblatt irgendeiner Speicherkarte (SM, CF oder SD) etwas von 70.000 Schreib-Lösch-Zyklen gelesen zu haben. Vielleicht solltest du die Benutzerdaten erst beim Ausschalten speichern? Dazu nicht die Stromversorgung schalten, sondern den AVR in Tiefschlaf (power-down) versetzen. Dann liegt die Stromaufnahme im Rahmen der Selbstentladung von NiMH-Akkus. ...
Es gibt auch Speicher die eine praktisch unbegrenzte Anzahl an Schreibvorgängen erlauben, etwa Batteriegepuffertes SRAM (z.B. in Uhrenbausteinen zu finden) oder FRAM. Letztere gibts kompatibel zu den 24Cxx-EEPROMs. Man kann natürlich auch die Schreibvorgänge auch immer erst dann machen, wenn das Gerät ausgeschaltet wird (wie Hannes vorschlägt), muß dabei aber beachten, daß Akkus auch leer werden können bzw. ein Gerät am 230V-Netz einfach ausgesteckt wird. Da muß man z.B. durch einen Kondensator ein bischen Energie puffern und rechtzeitig bemerken daß der Strom weg ist. Man kann die Schreibvorgänge auch ein bischen eleganter im EEPROM verteilen, dann kann mann mehr als 100.000 Änderungen speichern. Prinzipiell sollten 100.000 Änderungen aber schon ausreichen. Wenn man die Lautstärke alle 5 Minuten ändert und 8h/Tag Musik hört, dann reicht das für 3 Jahre. Markus
Hmm.. 2 Jahre, dann ist die Garantie abgelaufen ;) Irgendwer hatte das doch einfach mal nachgetestet mit dem Eeprom.. und kam auf 5Mio Schreibzyklen. 100k muss es halt MINdestens machen, bei extremst Temperaturen und Konditionen. Außerdem würde ich bei so kleinen Datenmengen eh nur mit Spiegelung arbeiten, einfach alles 3x Hintereinander abspeichern und beim Auslesen schauen, ob 2 gleich sind, dann ist der Wert OK.. Passt eine der 3 Zellen nicht dazu, auf nen andren Speicherplatz ausweichen. Aber wir wollen ja kein Atomkraftwerk steuern, das kommt morgen. dave
Hi ich ahb das mal probiert. Bin auf 2M Schreibzyklen gekommen. Allerdings eben unter Laborbdingungen und nicht über den ganzen Betriebsspannungs und Temperaturbereich. Matthias
Hallo Sören, ich mache soetwas mit einem FRAM von Ramtron. Schreibgeschwindigkeit wie ein SRAM beliebig beschreibbar usw. Für einen Datalogger speichere ich so die gesamte Frontplatteneinstellung. Falls Du Unterlagen möchtest, ab Montag Abend wäre es möglich. Manfred Glahe
Hallo Manfred, ja ich wäre sehr an weiteren Unterlagen, Beschaffungsquellen etc. interessiert. Habe ich das richtig verstanden, daß ein FRAM auch nach Abschalten der Stromquelle seine Daten behält? Ein schönes Wochenende, Sören
Hallo Sören, "Habe ich das richtig verstanden, daß ein FRAM auch nach Abschalten der Stromquelle seine Daten behält?" Richtig, sonst würde es ja auch keinen Sinn machen. Ebenfalls schönes Wochenende, Manfred Glahe
Naja, man kann die Speicherei schon etwas optimieren: a.) Nicht immer an die gleichen EEPROM-Adressen speichern, sondern das EEPROM als Ringbuffer verwenden. Ist relativ einfach. b.) Nicht sofort jede Änderung abspeichern. D.h. wenn eine Einstellung verändert wurde, erstmal einige Minuten oder Stunden warten, bis diese Einstellung in's EEPROM geschrieben wird. c.) Nur beim Ausschalten die Einstellungen in's EEPROM speichern. D.h. die Spannungsversorgung vom Mikrocontroller und restliche Elektronik sind getrennt, und die Puffer-Reserve (Elko) am Mikrocontroller reicht aus um die Daten noch in's EEPROM zu retten, wenn die restliche Elektronik schon lange keinen Strom mehr hat. Oder der Ein/Aus-Schalter ist per Software gelöst; der Mikrocontroller schaltet die restliche Elektronik ab, sichert die Daten in's EEPROM und geht dann in den Power-Down-Mode. Naja, und wenn Du nun alle drei Optimierungen kombinierst, hält so ein EEPROM praktisch ewig...
Wenn man es sich einfach machen will (das mit dem Speichern beim Ausschalten ist immer so eine Sache...) dann setzt man bei jeder Änderung einer Einstellung ein Bit und speichert die Änderungen beim Verlassen des Menüs. Für nicht andauernd veränderte Einstellung hält ein EEPROM so fast ewig (Bsp: Menü bei einem Monitor. Hier wird man solange im Menü bleiben bis die Einstellung OK ist.) Für eine Speicherung der Lautstärke ist das jedoch nichts. Hier ist die Speicherung beim Ausschalten sinnvoller. Am besten macht man es dann so wie bei den digitalen Potis (z.B. von Dallas) mit internem Speicher: Nur dann speichern wenn sich der Wert um mehr als 10-20% geändert hat. Aber für ein Batteriebetriebens Gerät ist das ja kein Problem, denn die Controller steuern ihre Stromversorgung meistens selbst, bzw. bekommen immer Strom und gehen beim Abschalten nur in irgendeinen Power Down Modus. Daher werden meistens die Einstellungen auch nur im RAM gespeichert (z.B. Digitalkameras machen sowas manchmal. Die Einstellungen die man nich andauert ändert werden aber oft in einem EEPROM gespeichert, zumindest bei den besseren.) Wenn man die Batterien wechselt gibt es wegen irgendwelchen Pufferelkos auch keine Probleme, solange man keine 2 Stunden dafür benötigt.
FRAM gibts z.B. bei segor.de, z.B. FM24C16A, 2,10Euro
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.