www.mikrocontroller.net

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


Autor: Anos B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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#E...

>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

Autor: Anos B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..?

Autor: Andreas Riegebauer (blackpuma)
Datum:

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

BG
Andreas

Autor: Anos B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ??? (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast 10 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Anos B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht 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...

Gruss Helmi

Autor: Anos B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.