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.
es sollte eine neue Ordner für solche Beiträge geben: "sinnfreie Fragen" ...
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.
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 ;-)
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.
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
> 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.
Lothar Miller: Mal eine ernste Frage, welche Auswirkung hat das an/abschalten der VCC Spannung? Ich sehe da gerade keinen Zusammenhang.
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
Kann es sein, dass der AVR die Daten garnicht zurückliest, sondern irgendwelche zwischengspeicherte Werte verwendet?
>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.
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.
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.
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.
@ 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
@ 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
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.
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.
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.
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.
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.
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.