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..?
Nein. Es ist egal ob du 1 Byte oder einen Block schreibst. Es dauert immer 5ms. BG Andreas
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.