Forum: Mikrocontroller und Digitale Elektronik EEPROM kaputt machen


von Valentin D. (valentin)


Lesenswert?

Hallo zusammen.

Ich programmiere zur Zeit ATmega16. Und zwar habe ich eine EEPROM Zelle 
beschrieben und gelesen. Dabei habe ich eine Schreibzeit von 3,7ms, und 
eine Lesezeit von wenigen Zyklen ermittelt.
Nun jetzt wollte ich eine EEPROM Zelle kaputt kriegen, um zu gucken was 
dabei passiert. Aber ich bin mir nicht sicher, ob dabei vielleicht das 
ganze EEPROM Speicher kaputt geht?

Danke für jede Hilfe.

von Sinnfrei (Gast)


Lesenswert?

es sollte eine neue Ordner für solche Beiträge geben:
"sinnfreie Fragen" ...

von Andrew T. (marsufant)


Lesenswert?

Valentin R. wrote:
> Hallo zusammen.
>
> Ich programmiere zur Zeit ATmega16. Und zwar habe ich eine EEPROM Zelle
> beschrieben und gelesen. Dabei habe ich eine Schreibzeit von 3,7ms, und
> eine Lesezeit von wenigen Zyklen ermittelt.
> Nun jetzt wollte ich eine EEPROM Zelle kaputt kriegen, um zu gucken was
> dabei passiert. Aber ich bin mir nicht sicher, ob dabei vielleicht das
> ganze EEPROM Speicher kaputt geht?
>
> Danke für jede Hilfe.


Wenn Du unter dem Mikroskop mit einem scharf gebündelten Elekronenstrahl 
eine einzelne Zelle beschädigst, dann funktioniert der Rest weiter.


Du hast sicher das nötige Equipment daheim.
Viele Erfolg. Wenn nicht: Tja, dann weißt Du wo Du jetzt suchen mußt.


Mac Gyver.

von Christian L. (lorio)


Lesenswert?

Ich denke Valentin hat etwas anderes mit "kaputt kriegen" gemeint.
Meiner Meinung nach die begenzte Anzahl von Schreibzyklen.

Falls doch nicht, kann ich nur sagen, dass du eine ruhige Hand brauchen 
wirst ;-)

von ... (Gast)


Lesenswert?

Da ja die Isolierung von dem floating gate beschädigt wird, sollten 
einzelne Zellen kaputt gehen und nicht der ganze EEPROM auf einmal, denk 
ich mir. Wenn du ca. 4ms zum schreiben brauchst und ein guter EEPROM 
mindestens 1000000 Schreibzyklen übersteht, wird das wohl ein paar 
Monate dauern, bis eine Zelle kaputt geht. Viel sehen wirst du dabei 
wohl nicht. Das Bit lässt sich eben nur noch als 0 oder 1 lesen, egal 
was man reinschreibt.

von Bastler (Gast)


Lesenswert?

Wär mal ein Versuch Wert:

Schleife mit ca. 4ms zum schreiben
EEPROM mit 1000000 Schreibzyklen

==>
4ms * 1000000 = 4000s
4000s / 60 = 66,67 Minuten
66,67 Min. / 60 = 1,11 Stunden

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> es sollte eine neue Ordner für solche Beiträge geben:
> "sinnfreie Fragen" ...
Nicht unbedingt. Ab und zu kann es nicht schaden, die Angaben vom 
Datenblatt zu überprüfen.

> Nun jetzt wollte ich eine EEPROM Zelle kaputt kriegen, um zu gucken was
> dabei passiert. Aber ich bin mir nicht sicher, ob dabei vielleicht das
> ganze EEPROM Speicher kaputt geht?
Nein, es geht "nur" die eine Zelle kaputt.
Du solltest zwischendurch aber immer wieder mal die Spannung abschalten. 
Wir hatten da mal den Effekt, dass die Zelle scheinbar nocht in Ordnung 
war, also beschrieben und die Daten wieder "korrekt" zurückgelesen 
werden konnten. Aber nach ca. der 5-fachen Zeit (und entsprechend vielen 
Schreibzugriffen) wurde es uns dann mulmig ;-)

Und siehe da: nach einer kleinen Änderung des Testaufbaus (Ab- und 
Wiedereinschalten der Vcc nach je 1000 Zyklen) konnten wir die 
Datenblattangaben ziemlich genau bestätigen.

von A. F. (artur-f) Benutzerseite


Lesenswert?

Lothar Miller: Mal eine ernste Frage, welche Auswirkung hat das 
an/abschalten der VCC Spannung? Ich sehe da gerade keinen Zusammenhang.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

A***** F***** wrote:
> Lothar Miller: Mal eine ernste Frage, welche Auswirkung hat das
> an/abschalten der VCC Spannung? Ich sehe da gerade keinen Zusammenhang.
Ja, genau das wars: Ich auch nicht ;-)
Der Gute, der das damals gemacht hat, hatte auf 1 Speicherzelle immer 
das selbe geschrieben. Und das selbe gleich danach zurückgelesen --> 
weit über 5 Mio Zugriffe :-o

Auf zwei Arten wurde es dann datenblattgerechter:
- Beschreiben zweier Zellen mit unterschiedlichen Daten. --> 1 Mio
- Abschalten der Spannung. --> 1 Mio

von Benedikt K. (benedikt)


Lesenswert?

Kann es sein, dass der AVR die Daten garnicht zurückliest, sondern 
irgendwelche zwischengspeicherte Werte verwendet?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Wär mal ein Versuch Wert:

>Schleife mit ca. 4ms zum schreiben
>EEPROM mit 1000000 Schreibzyklen

>==>
>4ms * 1000000 = 4000s
>4000s / 60 = 66,67 Minuten
>66,67 Min. / 60 = 1,11 Stunden

Das bringt gar nüscht. Das Lesen wird damit noch weit, weit über der 
spezifizierten Zahl funktionieren, da der Ladungsträgerverfall in einer 
Zelle mit schon geschädigtem Gate vergleichsweise lange dauert. Man 
müßte also schreiben, meinethalben 3 Tage warten, dann auslesen, testen 
und wieder schreiben. Und das würde dann sehr, sehr, sehr lange dauern.

von (prx) A. K. (prx)


Lesenswert?

Kommt darauf an, was das Ziel ist. Ob um eine realistische Einschätzung 
der Anzahl Programmierzyklen, oder wie hier einfach nur darum, ein Byte 
im EEPROM kaputt zu kriegen.

von Gast (Gast)


Lesenswert?

Mann könnte ja einen Test wie folgt machen
ein paar Byte 10000 mal beschreiben immer 0x00-0xFF-0x00-0xFF-...
die nächsten paar Byte mit 20000 usw.

Wenn alle bereiche beschrieben sind ein paar Tage warten und schauen 
welche daten i.O. sind.

von Valentin D. (valentin)


Lesenswert?

Danke erstmal für die vielen Antworten.

Ich wollte aber nicht die Angaben überprüfen. Im Datenblatt steht für 
EEPROM 100.000 Schreibzyklen, die von Atmel garantiert werden, und ich 
vertraue Atmel. Ich habe zurzeit nur einen ATmega16, der nur ein EEPROM 
Speicher hat. Deshalb habe ich die sinnfreie Frage gestellt, die sehr 
gut beantwortet wurde. Danke.

Mich interessiert nur noch etwas ganz sinnlöses, und zwar die Lesezeit 
einer EEPROM Zelle. Mit dem Programm, mit dem ich die Schreibzeit 
bestimmt habe, bekomme ich bei Lesezeit maximal 5 Zyklen. Aus dem 
Datenblatt konnte ich heraus finden, dass eine RAM Zelle in zwei 
Zyklen(mit lds) und Flash in drei Zyklen(mit lpm) gelesen wird. Aber wie 
genau der interne EEPROM gelesen wird, weiß ich nicht.

Danke nochmal.

von Falk B. (falk)


Lesenswert?

@  Valentin R. (valentin)

>Mich interessiert nur noch etwas ganz sinnlöses, und zwar die Lesezeit
>einer EEPROM Zelle.

Datenblätter sind dir wohl noch nicht über den Weg gelaufen?

>Datenblatt konnte ich heraus finden, dass eine RAM Zelle in zwei
>Zyklen(mit lds) und Flash in drei Zyklen(mit lpm) gelesen wird. Aber wie
>genau der interne EEPROM gelesen wird, weiß ich nicht.

Doch, lies mal genau. Abschnitt EEPROM.

"• Bit 0 – EERE: EEPROM Read Enable
The EEPROM Read Enable Signal – EERE – is the read strobe to the EEPROM. 
When the correct address is set up in the EEAR Register, the EERE bit 
must be written to a logic one to trigger the EEPROM read. The EEPROM 
read access takes one instruction, and the requested data is available 
immediately. When the EEPROM is read, the CPU is halted for four cycles 
before the next instruction is executed."

MFG
Falk

von Valentin D. (valentin)


Lesenswert?

@ Falk Brunner

> Datenblätter sind dir wohl noch nicht über den Weg gelaufen?
Nein, sind sie nicht, aber ich setze mich damit jeden Tag auseinander.

> Doch, lies mal genau. Abschnitt EEPROM.
Habe ich mehrmals getan. Bin aber noch ein Anfänger im Bereich µC, und 
nicht so Sprachbegabt.


@ Sinnfrei (Gast)

> es sollte eine neue Ordner für solche Beiträge geben:
> "sinnfreie Fragen" ...

Mit "solche Beiträge" meinst du wahrscheinlich deinen Beitrag!!!

Tut mir leid, dass ich so undankbar und unverschämt klinge, aber als ich 
ganz am Anfang deinen Beitrag gelesen habe, ist mir die Lust vergangen 
weiter zu lesen.
Bitte doch den Forumadministrator für dich so einen Ordner zu erstellen, 
dann kannst du dich dort austoben.

Und bemüht euch nicht mir zu antworten, ich werde diesen Thread nicht 
mehr durchlesen, sondern im Datenblatt weiter machen.


An Andere Danke, ihr habt mir sehr geholfen!

MfG

von Jens (Gast)


Lesenswert?

Um einen EEPROM kaputt zu bekommen, gibt es einfachere Methoden...

Vcc=12V oder ein solider Schlosserhammer

Sorry, musste ich aber mal loswerden.

Ernsthaftmodus:
 Vor einiger Zeit gab es in der c't mal einen Beitrag über die 
Lebensdauer und max. Schreibzyklen von SSDs und anderen Flash-Speichern. 
Dabei ist es den Testern nicht gelungen, eine Zelle kaputtzuschreiben. 
Das Problem mit solchen Tests ist aber ein anderes. Die 
Gate-Isolationsschicht wird durch das Beschreiben geschwächt und 
irgendwann wandern einzele Elektronen durch. Das passiert aber zumindest 
im Grenzbereich relativ langsam. Die Zelle übersteht das Schreiben und 
anschliessende Kontrolllesen ohne Probleme, aber nach 3 Tagen ist der 
Inhalt dann weg. Für ständige Schreibzyklen sind die Flash-Zellen halt 
auch nicht gemacht. Dafür gibt es halt RAMs. Allerdings verwende ich 
gelegentlich auch I2C-EEPROMs als RAM-Ersatz, weil es halt einfacher 
ist, aber dabei halten sich die Schreibzugriffe in Grenzen.

von (prx) A. K. (prx)


Lesenswert?

Jens wrote:

>  Vor einiger Zeit gab es in der c't mal einen Beitrag über die
> Lebensdauer und max. Schreibzyklen von SSDs und anderen Flash-Speichern.

Wobei solche Speichersysteme wear levelling verwenden, oder oder über 
Ausweichspeicherplätze im Fehlerfall verfügen. Mit internem EEPROM ist 
das nicht vergleichbar.

von Jens (Gast)


Lesenswert?

A. K. (prx)

> Wobei solche Speichersysteme wear levelling verwenden, oder oder über
> Ausweichspeicherplätze im Fehlerfall verfügen. Mit internem EEPROM ist
> das nicht vergleichbar.

Ist schon klar, ich wollte aber darauf hinaus, dass es ziemlich lange 
dauert, bis eine Flash-Zelle sofort nach dem Schreiben fehlerhafte Werte 
liefert. Viel schlimmer sind die Datenverluste, welche erst nach einer 
Stunde oder mehr auftreten, die Speicherzelle also langsam die Ladung 
verliert.

von (prx) A. K. (prx)


Lesenswert?

Kein Zweifel. Aber in den 3 Tagen die Travel Rec zwischen den einzelnen 
Zyklen warten wollte ist die Zelle andernfalls 60 Millionen Mal neu 
programmiert worden und dann wohl bald derart ausgelutscht, dass es 
keine 3 Tage mehr dauert bis das Gate entladen ist.

Also wär's wohl fixer, 24h nonstop reinzuschreiben und erst dann ein 
bischen zu warten.

von Denis Matt (Gast)


Lesenswert?

Ich habe einen Stresstest gemacht in dem ich eine Zelle fortlaufend mit 
den Werten 0...255 beschrieben habe. Nach jedem Schreiben habe ich 
gelesen und geprüft ob es richtig ist. Beim ersten Fehler habe ich 
gestoppt und die Anzahl ausgegeben. Ich habe keine Pausen gemacht und 
auch die Stromversorgung nie unterbrochen. Einmal Schreiben und lesen 
dauerte ca 0,009s.

Die Ergebnisse von 7 Speicherzellen bei einem Atmel ATXMEGA192A3U-AU:

3582047  2981905
2979329  3399961
4729601  3574017
3784193

Also rund 30 mal mehr als im Datenblatt. Aber kein Langzeittest um zu 
schauen wie lange er die Daten hält.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Denis Matt schrieb:
> Ich habe einen Stresstest gemacht
Fragt sich nur, was du damit getestet hast.

> Ich habe ... auch die Stromversorgung nie unterbrochen.
Mach das mal. Am Besten runter auf 0V. Dann kommt er besser an die 
Datenblattangaben ran, und dann ist da nix mehr mit 30-facher Reserve. 
Das habe ich aber im Verlauf dieses Threads schon vor gut 11 Jahren 
geschrieben.

> Aber kein Langzeittest um zu schauen wie lange er die Daten hält.
Nicht mal ein Test, ob das EEPROM überhaupt Daten behält. Sondern 
lediglich einer, ob die Daten im EEPROM angekommen sind und sofort 
wieder ausgelesen werden können. Im Prinzip hast du da völlig nutzlose 
Zahlen ermittelt...

von Soul E. (Gast)


Lesenswert?

Die Datenblattangaben beziehen sich auf die dort spezifizierte 
Datenhaltezeit. Also z.B. 100.000 Löschzyklen bei garantiert 20 Jahren 
Datenerhalt.

Reichen Dir 5 Jahre, kannst Du 1 Mio Zyklen fahren. Reicht Dir ein Jahr, 
schaffst Du vielleicht 10 Mio Zyklen. An die >100 Mio Zyklen, die Du 
schreiben kannst wenn die Daten nur wenige Sekunden halten müssen weil 
sie direkt wieder überschrieben werden, kommst Du wahrscheinlich gar 
nicht mehr dran, weil der Chip eher an etwas anderem stirbt.

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.