Ich möchte hier einen spi eeprom M95160W mit 2kbyte beschreiben.
dort steht im Datenblatt "tw twc Write Time 5ms max" in der tabelle
drin.
was bedeutet das? auf wiviele bytes beziehen sich die 5ms? auf 1 Byte,
auf einen Block, oder auf den gesamten Eeprom inhalt?
müßte das wissen, weil ich bei einem gerät die einstellungen in dem
eeprom speichern möchte. es müssen max ca. 400-500 Bytes veränderlicher
daten vor dem ausschalten gerettet werden.
wann würdet ihr die werte speichern? jedes mal, wenn ich einen wert
verändere oder alle veränderten werte nach einer erkennung des
ausschaltens?
Wie sieht es mit der lebenserwartung so eines eeprom aus? worauf
beziehen sich die 1 Million write cycles? auf ein Byte, einen Block oder
den ganzen Eeprom?
wenn sich jetzt z.B. von meinen 500 Bytes 15 Bytes verändert haben, ist
es dann für die Lebenserwartung des Eeproms sinnvoller, einen ganzen
Block a 32 Bytes wegen 15 Bytes neu zu schreiben, oder ist es
sinnvoller, jedes Byte mit einer einzelnen Schreibanweisung in den
Eeprom zu schreiben, damit z.B. bei 15 Bytes nur 15 statt 32 Bytes neu
geschrieben werden?
Altert der Eeprom auch und verbraucht er auch die 5ms schreibzeit, wenn
ich an einer stelle mit dem Wert 27 nochmal den Wert 27 reinschreibe
oder altert der Eeprom dann weniger oder braucht er dann weniger als 5ms
schreibzeit?
weiß jemand was dazu?
@ Anos B. (Gast)
>was bedeutet das? auf wiviele bytes beziehen sich die 5ms? auf 1 Byte,>auf einen Block, oder auf den gesamten Eeprom inhalt?
Einen Block (Page), hier 32 Byte.
>müßte das wissen, weil ich bei einem gerät die einstellungen in dem>eeprom speichern möchte. es müssen max ca. 400-500 Bytes veränderlicher>daten vor dem ausschalten gerettet werden.http://www.mikrocontroller.net/articles/Speicher#EEPROM_Schreibzugriffe_minimieren>wann würdet ihr die werte speichern? jedes mal, wenn ich einen wert>verändere
Wenn das nicht allzuoft passiert, kann man das machen.
>oder alle veränderten werte nach einer erkennung des>ausschaltens?
Siehe oben.
>Wie sieht es mit der lebenserwartung so eines eeprom aus? worauf>beziehen sich die 1 Million write cycles? auf ein Byte,
Auf jedes einzelene Byte. Du kannst alles Bytes einzeln 1 Million mal
neu beschreiben, danach ist mit Ausfällen zu rechnen.
>wenn sich jetzt z.B. von meinen 500 Bytes 15 Bytes verändert haben, ist>es dann für die Lebenserwartung des Eeproms sinnvoller, einen ganzen>Block a 32 Bytes wegen 15 Bytes neu zu schreiben,
Nein.
> oder ist es>sinnvoller, jedes Byte mit einer einzelnen Schreibanweisung in den>Eeprom zu schreiben,
Ja.
>Altert der Eeprom auch und verbraucht er auch die 5ms schreibzeit, wenn>ich an einer stelle mit dem Wert 27 nochmal den Wert 27 reinschreibe
AFAIK ja, weil er automatisch vorher löscht.
>oder altert der Eeprom dann weniger oder braucht er dann weniger als 5ms>schreibzeit?
Nein.
MFG
Falk
Ok gut Danke, dann weiß ich ja jetzt schonmal einiges mehr, aber stop:
Die seite behandelt doch das beispiel an einem microcontroller-eeprom,
gilt die regel mit den 1 Million schreibzyklen pro Byte statt pro block
auch für nicht-mikrocontroller eeproms? hm und wenn die da gilt, dann
müßte doch eigentlich das schreiben von einem Byte statt einem block
doch nur 5ms/32 dauern oder..?
hm.. daß es ganz egal immer 5ms dauert, auch wenn ich nur 1 Byte
schreibe, bringt bei mir folgenden gedanken:
es werden pro schreibzyklus 32x8 Bits in ein ganz großes latch
geschoben. Nach jedem schreibzyklus (egal ob 1 Byte oder ein Block) wird
der gesamte Block erased und mit dem Inhalt aus dem großen Latch neu
beschrieben. egal ob ich vorher 1 Byte oder den ganzen Block
überschrieben habe. das würde aber zu der annahme führen, daß halt eben
die Lebensdauer immer auf einen ganzen Block bezogen wird und daß ich
wenn ich nur ein Byte pro Block neu schreibe, sich die lebensdauer des
ganzen blockes dadurch verkürzen würde.
Oder weiß der Eeprom irgendwoher, daß er bei 1 Byte nur 1 Byte statt dem
ganzen Block erasen und neuschreiben darf? Wenn er das weiß warum weiß
er dann nicht auch, daß sich der Schreibzyklus um 5ms/32 verkürzen
müßte..?
Meine persönliche Meinung
> müßte das wissen, weil ich bei einem gerät die einstellungen> in dem eeprom speichern möchte.
Aha. Also Einstellungen. Höchst wahrscheinlich von einem Benutzer
> es müssen max ca. 400-500 Bytes veränderlicher> daten vor dem ausschalten gerettet werden.>> wann würdet ihr die werte speichern? jedes mal, wenn ich einen> wert verändere oder alle veränderten werte nach einer erkennung> des ausschaltens?
Sofort. Da kann dann nichts verloren gehen.
> Wie sieht es mit der lebenserwartung so eines eeprom aus?> worauf beziehen sich die 1 Million write cycles?
Die 1 Million ist die Untergrenze, die der Hersteller garantiert. Es ist
aber nicht so, dass es da geht 999998, 999999, 1000000, aus.
Hast du dir mal überlegt, oder gar ausgerechnet, wie lange es dauert,
bis du 1 Million mal, bei normaler Benutzung, die Einstellungen geändert
hast?
Ehe dein EEPROM den Geist aufgibt, bist du wahrscheinlich schon längst
in Rente.
Das haben viele Entwickler von Fernsehern in den 80ern und 90ern auch
gedacht...
Jetzt fallen die Dinger aus weil der eeprom tot ist.
also wirklich mal durchrechnen!
Falk Brunner schrieb:
>>sinnvoller, jedes Byte mit einer einzelnen Schreibanweisung in den>>Eeprom zu schreiben,>> Ja.
seid ihr euch da sicher? Denn für jeden Byte wird die die Page neu
gelöscht und dann neu geschrieben (ausser wenn sie vorher leer war). Das
heist für mich wenn man 10byte einzeln schreibt, das die Page schon
cycles hinter sich hat.
@ Peter (Gast)
>>>sinnvoller, jedes Byte mit einer einzelnen Schreibanweisung in den>>>Eeprom zu schreiben,>> Ja.>seid ihr euch da sicher?
Nein ;-)
Hab die Frage wohl etwas falsch verstanden und dabei eher an den AVR
internen EEPROM gedacht. Es ist wahrscheinlich besser, die 15 Bytes
innerhalb einer Page auf einmal zu schreiben.
MFG
Falk
Wie schon erwähnt, es lohnt sich mal auszurechnen wie lange
das EEPROM hält (Die ATMEL-Internen haben ca. 100.000 Schreib-
zyklen) bei normaler Benutzung, wie oft ändern sich die Werte????
Es hilft Schreibzyklen einzusparen, wenn man vor dem Schreiben
auf Veränderung prüft und nur dann schreibt.
Ist es unvermeidlich sehr viel zu Schreiben, hilft auch eine
Art "Ring-Puffer" weiter. Damit wird bei jedem Schreibvorgang eine
andere EEPROM-Zelle verwendet und die Anzahl der Schreibvorgänge
vergrößert sich entsprechend. Man benötigt dabei halt etwas zuätzliche
Software. Wenn man die Werte in einem Block zusammenfaßt und ein Byte
in diesem Block als "Dieser Block ist aktuell gültig" -Marker verwendet,
geht das recht einfach.
also wenn es immer 5ms lang dauert, egal ob ich 2 Bytes oder 32
schreibe, dann werde ich wohl dazu neigen, die 500 Bytes in 32Byte
blöcke zu unterteilen, und jedesmal wenn ein Byte anders ist vor dem
ausschalten, dann wird der ganze block geschrieben.
und daß bei 15 Bytes, die man einzeln neu schreibt, der ganze block dann
15 mal erased wird und 15 mal neu geschrieben wird, befürchte ich ja
fast. es kann auch sein, daß es nicht so ist, aber da der
geschwindigkeitsvorteil beim schreiben ganzer blöcke auf der hand liegt,
wird das wohl in jedem fall die einfachere, bessere version sein.
bei 500 Bytes x 5ms hätten wir schon eine lange zeit von 2500ms
sekunden. das gerät soll ja auch irgendwann mal aus sein, wenn man es
ausschaltet.
bei 32er blöcken hätten wir nur 16 x 5ms, das ist in jedem fall kürzer
und besser. :)
>> jetzt fallen die Dinger aus weil der eeprom tot ist.
wird zwar bei mir doch nicht so schnell passieren, aber es kann bestimmt
nicht schaden, wenigstens mal ein bischen drüber nachzudenken.
die daten bei mir sind nicht sagenhaft wichtig. es sind alle nur
einstellungen, die man zur not auch alle neumachen kann. es ist halt
ärgerlich, wenn man plötzlich alle einstellungen nochmal machen muß. da
das gerät aber im moment nicht groß dazu neigt, abzustürzen, werde ich
mal alles nur vor dem ausschalten reinschreiben lassen. es läßt sich
auch einfacher programmieren, alle gespeicherten daten in einem
rambereich nacheinander anzulegen, und einfach hinterher den ganzen
ram-bereich von anfang bis ende in den eeprom zu schreiben.
selbst wenn man das Gerät mit dem Eeprom 27 mal am Tag mit veränderten
werten ein und ausschalten würde, würde es dann immer noch 100 jahre alt
werden.
ich glaube der unterschied ist vernachlässigbar. einzigster vorteil
wäre, daß man immer sofort schreiben könnte, und nach einem absturz die
eingestellten werte immer erhalten blieben würden.
ich werde das mit den frams im kopf behalten, aber wegen dem höheren
preis und den zu geringen vorteilen es nur dann benutzen, wenn der
vorteil gegenüber dem nachteil deutlich höher ist.
so ein fram ist teilweise schwerer erhältlich, und kostet 2,20 - 2,70
Eur wärend ein eeprom schon für 30-60 Cent erhältlich ist.