[erledigt] EEPROM-Frage

Hallo allerseits!

Lt. Atmel hält das EEPROM mindestens 100.000 Schreib-/Lesezyklen aus.

Was ist denn, wenn ich den ersten Speicherplatz durch zu viele Schreib-/Lesevorgänge gekillt habe? Kann ich dann trotzdem noch alle Speicherplätze benutzen, deren Adresse größer als 0 ist? Oder ist das EEPROM dann vollständig futsch?

Fragt sich

Gregor

Lt. Atmel hält das EEPROM mindestens 100.000 Schreib-/Lesezyklen aus.

100.000 Schreib-/Lesezyklen GARANTIERT, aushalten tun die länger!
Wobei, das gilt doch nur auf schreibzyklen?!

Die 100.000 sind sozusagen der "Garantiefall", unter denen Schreib-Operationen auf jeden Fall funktionieren (sollten). Im bekannten Nachbarforum ist dazu ein sehr interessanter Beitrag zu finden, wo jemand (angeblich) sogar unter "Normalbedingung" über 5 Mio. Schreibzugriffe auf eine Zelle geschafft hat. Im Grunde liefert eine "ausgelutschte" Speicherzelle beim Lesen lediglich einen falschen Wert, alles andere ist davon nicht betroffen.

Aber ich denke, das wäre eh sehr ungeschickt programmiert. Lass dir doch einen Mechanismus einfallen, der immer die nächste Zelle auswählt. Danach fängt alles wieder bei Adresse 0 an. So würde ich es machen.

Erzähl vielleicht mal, was du "genau" vor hast. Vielleicht fällt dem einen oder anderen noch etwas cooles dazu ein.

RudiDL5:
Erzähl vielleicht mal, was du "genau" vor hast. Vielleicht fällt dem einen oder anderen noch etwas cooles dazu ein.

Ich habe nichts Spezielles vor. Mein Interesse ist rein akademischer Natur.

Du schreibst, dass eine fehlerhafte Speicherzelle lediglich einen falschen Wert zurückliefert und alles Andere nicht betroffen sei. Ich könnte also den Rest des EEPROMs wie gewohnt weiternutzen?

Gruß

Gregor

Ich habe gerade noch einige weitere Beiträge "nebenan" gelesen. Den dortigen Aussagen nach kann man deine letzte Frage mit JA beantworten. Nur würde ich auf lange Zeit gesehen mich nicht wirklich darauf verlassen und irgend etwas erfinden, was diesen Fall umgeht.

RudiDL5:
... JA ...

Danke!

Gruß

Gregor

... Garantie ausgeschlossen ... :smiley: ... dennoch ein recht interessantes Thema, weil ich gerade ganz aktuell und recht viel mit internen und externen EEPROMs hantieren. Aber an 100.000 Schreibzugriffe auf eine einzelne Zelle werde ich in meinem Leben wohl garantiert nicht kommen ...

RudiDL5:
... Garantie ausgeschlossen ... :smiley: ... dennoch ein recht interessantes Thema, weil ich gerade ganz aktuell und recht viel mit internen und externen EEPROMs hantieren. Aber an 100.000 Schreibzugriffe auf eine einzelne Zelle werde ich in meinem Leben wohl garantiert nicht kommen ...

hunderttausend; ein Tag hat kaum weniger Sekunden.

Wenn ein Programm einmal pro Sekunde immer dieselbe EPROM-Stelle beschreibt, dann sind die hunderttausend in wenig mehr als einem Tag erreicht.

Kommt auf die Anwendung an. Bei Datenloggern hat man das schnell.

Statt externen EEPROMs kann man FRAMs verwenden. Die haben ein paar Milliarden Schreibzyklen.

jurs:
hunderttausend; ein Tag hat kaum weniger Sekunden.

Wenn ein Programm einmal pro Sekunde immer dieselbe EPROM-Stelle beschreibt, dann sind die hunderttausend in wenig mehr als einem Tag erreicht.

Das stimmt. Ganz genau sind's 86400 Sekunden. Bis 100.000 sind es dann noch rund 3,8 Stunden.

Aber ein Programm, das im Sekundentakt immer nur eine Speicherstelle beschreibt, kann kaum von einem guten Programmierer stammen, IMO. Ich kann mir gerade kein sinnvolles Programm vorstellen, das so arbeitet.

Gruß

Gregor

gregorss:
Ich kann mir gerade kein sinnvolles Programm vorstellen, das so arbeitet.

Gruß

Gregor

Bei Zeitmaschinen könnt ichs mir vorstellen.

:smiley: Und genau für diesen Anwendungsfall, wo man knapp 100.000 Werte am Tag in ein und die selbe Speicherzelle schreibt, hat man in den 80er Jahren ein WOM erfunden. Ich glaube das war (wenn ich mich recht erinnere) in der Zeitschrift "Chip", oder einem Ableger davon und an einem 01.04. - :wink: WOM = Write Only Memory ... Für diesen Fall ist es eh schnurzpiepegal, ob die Zelle okay oder ausgelutscht ist - die Daten liest ja dann eh niemand wenn sie sofort überschrieben werden. :smiley: Aber der Beitrag zum WOM war dermaßen gut aufbereitet, dass man erst beim näheren Hinsehen erkannte, dass es ein Joke war.

Ein dusseliger Programmfehler wäre es allerdings, wenn z.B. ein Datenlogger gar nicht in die selbe Zelle schreiben "sollte" ... dann kann man sich gerne schon mal versehentlich ein EEPROM zerschießen.

RudiDL5:
... 01.04. - :wink: WOM = Write Only Memory ...

Hihi ... das Beste, was ich mal zum 1.4. zu lesen bekam, war ein Artikel in der c't, in dem das Nulldevice (ein IC natürlich) vorgestellt wurde. Mit Foto, in dem zu sehen war, wie der IC gerade Daten in Wärme umwandelt.

Informatiker-Humor ist geil :slight_smile:

Gruß

Gregor

gregorss:
Lt. Atmel hält das EEPROM mindestens 100.000 Schreib-/Lesezyklen aus.

Stimmt nicht.
Ein EEprom kann unendlich oft gelesen werden.
Die Zahl bezieht sich auf die Lösch/Schreibzyklen, die begrenzt sind. Das problematische sind die Löschzyklen vor dem Schreiben.

gregorss:
Was ist denn, wenn ich den ersten Speicherplatz durch zu viele Schreib-/Lesevorgänge gekillt habe? Kann ich dann trotzdem noch alle Speicherplätze benutzen, deren Adresse größer als 0 ist? Oder ist das EEPROM dann vollständig futsch?

Zuerstmal werden nicht einzelne Speicherzellen gelöscht sondern immer Blöcke. Die Blöcke können je nach Modell des EEproms 16Byte bis einige kByte groß sein. Genaues erfährt man aus den Datenblatt. Nach dem Löschen ( auf 0xFF setzen) werden die 0 Bits geschrieben.
Die minimale Schreibzyklengarantie bezieht sich auf die garantierte Datenerhaltungszeit (10 Jahre) und die max zulässige Temperatur. Bei kürzeren Zeiten zwischen Schreiben und Lesen können mehr Schreibzyklen gemacht werden. Die genaue Anzahl wird Dir aber niemand sagen.

Der Fehler bei einer defekten Speicherzelle ist, daß sie den Inhalt (0 oder 1) nicht hält und einfach der andere logische Wert wird oder daß sie nicht mehr beschrieben werden kann. Im ersten Fall weiß man nicht was wo wann falsch ist, im zweiten Fall kann man durch lesen nach den Speichern die Speicherzelle kontrollieren.

Futsch ist nichts aber wenn statt einer Zahl eine andere drinsteht, weil ein Bit ungefallen ist, dann ist es ein Fehler.

Mehr Schreibezyklen haben batteriegebufferte RAMs (zb im RTC DS1307 oder DS3232), oder FRAM.

Grüße Uwe