Forum: Mikrocontroller und Digitale Elektronik Probleme mit AT24C512C, nach mehrmaligem beschreiben Defekt


von Jan M. (jan91)


Lesenswert?

Hallo Zusammen,

nach der Umstellung auf SMD (ich weiß, ich bin spät dran) habe ich mit 
den Atmel Speichermodulen AT24C512C folgendes Problem.

Nach 3 bis 6 maligem kompletten Beschreiben des Speichers und 
anschließendem Auslesen, sind einige wenige Speicherzellen defekt, d.h. 
nicht mehr beschreibbar.
In einem Speichertest beschreibe ich den kompletten Speicher abwechselnd 
mit 2 verschiedenen Muster und lese diese dann wieder aus.

Als Controller verwende ich einen ATMEGA 1284P-AU, 20MHz im 5V Betrieb.
Die 5V liegen auch stabil an, auf dem Scope kann ich auch keine 
Auffälligkeiten sehen.

Der Speicher ist für 5,5V Betrieb zugelassen und hat auch die richtige 
Kennung aufgedruckt. Mein erster Verdacht war, das ich da die 3,6V 
Variante erwischt habe, was aber nicht der Fall ist.

Von 6 verschiedenen Speicher ICs sind 4 Stück bereits defekt, nur 2 
Speicher haben bisher 30 mal den Speichertest komplett überstanden.

Die gleiche Schaltung und Software habe ich schon viele Jahre im Einsatz 
(allerdings mit bedrahteten Bauteile), bisher ohne Probleme.

Hat jemand einen Tip für mich ?

Gruß
Jan

von Peter D. (peda)


Lesenswert?

Jan M. schrieb:
> sind einige wenige Speicherzellen defekt, d.h.
> nicht mehr beschreibbar.

Wie stellst Du das fest?
Was schreibst Du rein, was liest Du zurück?

von Jan M. (jan91)


Lesenswert?

Zuerst schreibe ich 55(h) in den kompletten Speicher und lese ihn dann 
komplett aus und vergleiche.
Dann mache ich das gleiche mit AA(h).

Auslesen tue ich in den defekten Zellen dann immer den Wert, der beim 
letzen korrekten Schreiben dort drin war.

Die ersten 3-6 Mal ist alles in Ordnung und dann sind halt einge Zellen 
defekt und es steht dort immer der gleiche Wert drin.

Gruß
Jan

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Jan M. schrieb:
> Hat jemand einen Tip für mich ?

 AT24C512C nicht mehr bei AliExpress bestellen ?

 SMDs nicht mit Schweißbrenner löten ?

 Vor dem löten nicht 10 Bier reinlöten ?

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Jan M. schrieb:
> Auslesen tue ich in den defekten Zellen dann immer den Wert, der beim
> letzen korrekten Schreiben dort drin war.

Welche Pullups, Du kannst bis auf 1,8k runter gehen.
Gehe mal mit dem I2C-Takt auf 100kHz runter.
Prüfe, ob das Delay nach dem Schreiben wirklich >=5ms ist oder benutze 
ACK-Polling.

von Jan M. (jan91)


Lesenswert?

Hallo Peter,


als I2C Takt verwende ich schon 100kHz.
Pullup verwende ich schon seit Jahren 1,5k  , bisher immer ohne 
Probleme.
Der Delay ist auf 5ms eingestellt.

Kann ich den durch die Ansteuerung den Chip wirklich kaput machen?
Die ersten 6 Mal klappt es ja, nur wenn der Fehler einmal auftritt, dann 
bei diesem Chip permanent.

Bin da wirklich ratlos.
Mir ist die mögliche Ursache noch nicht klar:
# Hardwarefehler in der Beschaltung ?
# Spikes in der Versorgung ?
# Fehler in der Ansteuerung ?
# defekte Charge ?


Habe mir jetzt Speicher von der Firma ON Semiconductor bestellt, mal 
sehen wie die sich verhalten.

Gruß
Jan

von Peter D. (peda)


Lesenswert?

Jan M. schrieb:
> Der Delay ist auf 5ms eingestellt.

Und hast Du das auch geprüft?
Probier einfach mal 20ms.
Ich nehme immer ACK-Polling.

von Jan M. (jan91)


Lesenswert?

Habe leider hier am Platz gerade kein Scope, also habe ich das delay auf 
20ms erhöht. Damit dauert der Speichertest erheblich länger, aber der 
bereits "defekte" Speicherbaustein macht die gleichen Fehler wie mit 
5ms.

Ob ein "neuer" Speicher dann nicht mehr zerstört wird, wird die Zeit 
zeigen.

Gruß
Jan

von Peter Z. (Gast)


Lesenswert?

100nF am VCC,GND vom EEprom?

von Jan M. (jan91)


Lesenswert?

ja, 100nF am IC vorhanden

von Thomas (kosmos)


Lesenswert?

spendiere mal dem 100nF Kerko nen Elko Bruder mit 10µF vielleicht geht 
die Spannung mit der Zeit in die Knie probiere mal ein anderes Muster 
beim Schreiben 0b00000001 und 0b01111111.

Aufjedenfall würde ich aufs ACK warten als eine feste Wartezeit 
verwenden, um das Programm unabhängig vom µC Takt zu machen.

von Jan M. (jan91)


Lesenswert?

Hallo Peter,

ich versuche mich gerade am ACK-Polling, stehe da aber irgendwie auf dem 
Schlauch.

Schreibvorgang bisher:

i2c_start_wait(i2cEEPROM+I2C_WRITE);
i2c_write(EE_TX_Zeiger >> 8);
i2c_write(EE_TX_Zeiger);
i2c_write(wert_byte);
i2c_stop();

_delay_ms(5);

Anstelle des Delay muss man jetzt auf das Ack warten.
Hast du da evtl. ein Beispiel für mich ?

Gruß
Jan

von Peter D. (peda)


Lesenswert?


von Guido B. (guido-b)


Lesenswert?

Bevor du am Schreiben verzweifelst,

Jan M. schrieb:
> Auslesen tue ich in den defekten Zellen dann immer den Wert, der beim
> letzen korrekten Schreiben dort drin war.

das sieht doch eher so aus, als ob das Löschen nicht klappt.

von Jan M. (jan91)


Lesenswert?

Von Löschen vor dem Schreiben habe ich bisher nichts gelesen, ich dachte 
das macht der Chip von alleine.

Gruß
Jan

von da1l6 (Gast)


Lesenswert?

Hallo

Jan M. schrieb:
> Schreibvorgang bisher:
>
> i2c_start_wait(i2cEEPROM+I2C_WRITE);
> i2c_write(EE_TX_Zeiger >> 8);
> i2c_write(EE_TX_Zeiger);
> i2c_write(wert_byte);
> i2c_stop();
>
> _delay_ms(5);
>
Oh, shit.

Dir ist schon klar das die 24C512 blockweise schreiben? D.h. wenn du nur 
ein Byte schreibst werden in Wirklichkeit 128 geschrieben.
Die Tatsächlichen Write-Cycles sind also in wirklichkeit 128 mal so 
viele wie du meinst.

da1l6

von Kiesel (Gast)


Lesenswert?

da1l6 schrieb:

> Dir ist schon klar das die 24C512 blockweise schreiben? D.h. wenn du nur
> ein Byte schreibst werden in Wirklichkeit 128 geschrieben.
> Die Tatsächlichen Write-Cycles sind also in wirklichkeit 128 mal so
> viele wie du meinst.

Wo steht das im Datenblatt?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Kiesel schrieb:
> Wo steht das im Datenblatt?

Nirgends. Sowohl der AT24C512 als auch der neuere AT24C512B und C Typ 
erlauben zwar auch PageWrite mit 128 Bytes, aber ein einzelnes Byte zu 
schreiben ist genauso erlaubt. Dabei wird auch nirgends erwähnt, das das 
immer einem PageWrite auslöst.
Wenn der TE alle Chips aus einer Charge bezieht, würde ich da einen 
Fehler vermuten und mal auf ein anderes Produkt ausweichen.

: Bearbeitet durch User
von Georg G. (df2au)


Lesenswert?

Aus dem Datenblatt des 24LC1025:

When doing a write of less than 128 bytes
the data in the rest of the page is
refreshed along with the data bytes being
written. This will force the entire page to
endure a write cycle, for this reason
endurance is specified per page.

: Bearbeitet durch User
von Kiesel (Gast)


Lesenswert?

Georg G. schrieb:
> Aus dem Datenblatt des 24LC1025:
>
> When doing a write of less than 128 bytes
> the data in the rest of the page is
> refreshed along with the data bytes being
> written. This will force the entire page to
> endure a write cycle, for this reason
> endurance is specified per page.

Wenn man dies auf den AT24C512C übertragen kann, dann ist nach 3 - 
6maligen komplett beschreiben (siehe TO) jede Page mit dem 128fachen 
"belastet". Das erklärt aber noch lange nicht den Ausfall der Chips, da 
jede Page 10^6 Schreibzyklen verkraftet.

von Georg G. (df2au)


Lesenswert?

Der Beitrag sollte deine Frage beantworten.

Kiesel schrieb:
> Wo steht das im Datenblatt?

von Kiesel (Gast)


Lesenswert?

Georg G. schrieb:
> Der Beitrag sollte deine Frage beantworten.
>
> Kiesel schrieb:
>> Wo steht das im Datenblatt?

Es gab schon eine Antwort:

Beitrag "Re: Probleme mit AT24C512C, nach mehrmaligem beschreiben Defekt"

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Georg G. schrieb:
> Aus dem Datenblatt des 24LC1025:

Das mag alles sein, es geht hier aber um den AT24C512C. In dessen 
Datenblatt ist das nicht zu finden.

von Gerhard O. (gerhard_)


Lesenswert?

Kiesel schrieb:
> Georg G. schrieb:
>> Aus dem Datenblatt des 24LC1025:
>>
>> When doing a write of less than 128 bytes
>> the data in the rest of the page is
>> refreshed along with the data bytes being
>> written. This will force the entire page to
>> endure a write cycle, for this reason
>> endurance is specified per page.
>
> Wenn man dies auf den AT24C512C übertragen kann, dann ist nach 3 -
> 6maligen komplett beschreiben (siehe TO) jede Page mit dem 128fachen
> "belastet". Das erklärt aber noch lange nicht den Ausfall der Chips, da
> jede Page 10^6 Schreibzyklen verkraftet.

Ich kann das bestätigen. Ich testet mal so einen Speicherbaustein und 
brachte es auf fast 14^6 Page Schreibzyklen bis sich Fehler zeigten. Das 
waren allerdings AT24C1024s. Pattern war 0x55 und 0xAA. Die Ratings 
scheinen also sehr konservativ zu sein. Busgeschwindigkeit war 400kb. 
3K3 PU bei 5V. Nach Ausfall waren auch viele benachbarte Zellen 
schadhaft.

Ein interner PIC EEPROM brachte es auf ähnliche Werte.

Ich würde denselben Test mit Bausteinen aus sicherer Quelle wiederholen.

mfg,
Gerhard

von Jan M. (jan91)


Lesenswert?

Habe gestern endlich die alternativen Speicher von der Fa. ON 
Semiconductor(CAT24C512WI-GT3) bekommen und eingelötet. Diese sind 
deutlich günstiger als die Atmel.

Bisher laufen drei Platinen ohne Probleme im Dauertest.
Werde das weiter beobachten.

Habe da wohl eine "schlechte" Charge oder Fake Speicher erwischt.

Obwohl alle Speicher bisher von renomierten Lieferanten geliefert 
wurden.

Gruß
Jan

von Soul E. (Gast)


Lesenswert?

Gerhard O. schrieb:

> Ich kann das bestätigen. Ich testet mal so einen Speicherbaustein und
> brachte es auf fast 14^6 Page Schreibzyklen bis sich Fehler zeigten. Das
> waren allerdings AT24C1024s. Pattern war 0x55 und 0xAA. Die Ratings
> scheinen also sehr konservativ zu sein.

Eine Flash-Zelle gilt als defekt, wenn die spezifizierte Data Retention 
Time nicht mehr eingehalten wird. Du musst also nach dem letzten 
Schreibzugriff zehn Jahre warten, erst dann kannst Du beurteilen ob der 
Baustein defekt ist oder nicht.

Wenn der Baustein schon dermassen schrottreif ist, dass die Zellen 
direkt nach dem Schreiben einen Fehler liefern, dann wären Deine Daten 
darin auch schon etliche tausend Zyklen eher nich mehr sicher gewesen.

von Stefan (Gast)


Lesenswert?

Jan M. schrieb:
> Obwohl alle Speicher bisher von renomierten Lieferanten geliefert
> wurden.

Von wem konkret? Sind diese offiziell als authorisiertrr Distributor bei 
microchip gelistet? Wenn ja dann sofort eine failure analyse forden, 
wenn nein draus lernen und nur bei authorisierten distis kaufen. 
Dasselbe könnte dir mit jedem Bauteil schnell passieren.

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.