Forum: Mikrocontroller und Digitale Elektronik was bedeutet Write Time 5ms beim eeprom?


von Anos B. (Gast)


Lesenswert?

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?

von Falk B. (falk)


Lesenswert?

@  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

von Anos B. (Gast)


Lesenswert?

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..?

von Andreas R. (blackpuma)


Lesenswert?

Nein. Es ist egal ob du 1 Byte oder einen Block schreibst. Es dauert 
immer 5ms.

BG
Andreas

von Anos B. (Gast)


Lesenswert?

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..?

von Karl H. (kbuchegg)


Lesenswert?

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.

von ??? (Gast)


Lesenswert?

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!

von Peter (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@  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

von Gast 10 (Gast)


Lesenswert?

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.

von Anos B. (Gast)


Lesenswert?

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.

von Helmut L. (helmi1)


Lesenswert?

Du kannst auch eine FRAM anstatt des EEPROMS benutzten.
Da sind die grantierten Zyklen wesentlich hoeher oder die 
Schreibgeschwindigkeit ist hoher.

http://www.ramtron.com/products/nonvolatile-memory/serial-product.aspx?id=5

Gruss Helmi

von Anos B. (Gast)


Lesenswert?

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.

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
Noch kein Account? Hier anmelden.