Hallo, im Datenblatt (24LC64F) gibt es leider keine genaue Angabe über den internen Schreibprozess. Weiß jemand ob wiederholtes Schreiben jeweils der gleichen Daten z.B. immer 0x55 auf die gleiche Adresse z.B. immer 0x0000 als mehrfache Schreibzyklen zählt? Oder werden die Zellen dadurch nicht abgenutzt? Bin für jede Hilfe dankbar. Beste Grüße Marc
>Weiß jemand ob wiederholtes Schreiben jeweils >der gleichen Daten z.B. immer 0x55 auf die gleiche Adresse z.B. immer >0x0000 als mehrfache Schreibzyklen zählt? Ja, jeder Schreibzyklus zählt.
Danke für die schnelle Antwort. Bei mir hat sich nun aber eine weitere Frage aufgetan. Kann ich diese Zellenabnutzung wirklich für jedes einzelne EEPROM-Byte getrennt betrachten, oder betrifft es jedes mal die gesamte page? (Der 24LC64F ist intern in pages a 32 bytes organisiert. Wer weiß, ob er nicht jedesmal die ganze page löscht und die daten vorher im Puffer merged und dann die ganze page schreibt, auch wenn ich nur ein bestimmtes Byte addressiere?) Gruß marc
Hallo, Deine letzte Annahme ist richtig. Intern wird eine Page in einen Puffer gelesen, das Byte modifiziert, die Page gelöscht und der Puffer geschrieben. Gelesen wird vermutlich auch meist so, das die ganze Page gelesen wird und das Byte aus dem Puffer geholt wird, einfach, weil die Ablaufsteueerung dann nur wenige Zuständen können muß. Page-Read ist dann meist schneller, weil da die Page zwar auch komplett in den Puffer geholt wird (gleicher Ablauf), die Daten aber einfach gleich parallel auf die ausgegeben werden. Das erfordert dann nur einen Mux zusätzlich und spart sicher Silizium gegenüber völlig anderen Abläufen. Zumindest würde ich es wohl so anlegen, wenn ich einen EEPORM basteln wollte... Gruß aus Berlin Michael
Danke für die ausführliche Antwort. So eine Tatsache finde ich jedoch ohne genauere Angaben Seitens Microchip im Datenblatt (dort steht wirklich nur so lala "More than 1 Million Erase/Write Cycles" @ 25°C bzw. man solle das TotalEndurance-Tool für genauere Vorhersagen nutzen) fatal. Wenn ich es richtig verstanden habe spielt es keine Rolle, ob ich 500.000 mal auf Addr. 0x0000 und 500.000 mal auf Addr. 0x0001 schreibe oder ich gleich 1.000.000 mal auf Addr. 0x0000 schreibe. Für meine Anwendung reduziert sich dadurch der verfügbare EEPROM-Speicher um Faktor 32. Statt 8k --> 256 Bytes. Na super. Ist das wirklich so? Gruß Marc
marc schrieb: > Na super. Ist das wirklich so? Ich denke das wird Dir nur der Hersteller beantworten können - auch wenn er das ganz ungern tun wird. Ich gehe jedenfalls für unsere Applikationen davon aus - heißt: page cachen und erst wenn nötig schreiben. Grüße
marc schrieb: > Weiß jemand ob wiederholtes Schreiben jeweils > der gleichen Daten z.B. immer 0x55 auf die gleiche Adresse z.B. immer > 0x0000 als mehrfache Schreibzyklen zählt? Oder werden die Zellen dadurch > nicht abgenutzt? Man kann da einen Trick in seiner Software nutzen: Und zwar, wenn das EEPROM mit einem Wert beschrieben werden soll, prüft man vorher, ob nicht schon der selbe Wert in der Adresse drin steht. Steht der selbe Wert schon drin, spart man sich das Schreiben. Es gibt auch noch weitere Algorithmen, die das EEPROM mit ständig aufwärts zählenden Adressen beschreiben. Bis die Endadresse erreicht ist. Dann beginnt es wieder bei Null. Das sorgt wenigstens für eine gleichmäßigere Abnutzung aller Zellen. Sonst sind überwiegend nur die unteren Adressen abgenutzt. Ja, ich sah schon industrielle Schaltungen, wo das EEPROM Schrott wurde.
Wenn du ein EEPROM richtig auslutschen willst, kommst du nicht umhin, "wear leveling" zu machen. Für Grundlagen: http://en.wikipedia.org/wiki/Wear_leveling
marc schrieb: > Wenn ich es > richtig verstanden habe spielt es keine Rolle, ob ich 500.000 mal auf > Addr. 0x0000 und 500.000 mal auf Addr. 0x0001 schreibe oder ich gleich > 1.000.000 mal auf Addr. 0x0000 schreibe. Für meine Anwendung reduziert > sich dadurch der verfügbare EEPROM-Speicher um Faktor 32. Statt 8k --> > 256 Bytes. Na super. Ist das wirklich so? Warum willst du 1 Milion mal das gleiche an die gleiche Adresse schreiben? Lies doch einfach was drin steht, und wenn das schon richtig ist, kneif dir das Schreiben. MfG Klaus
Danke für die Antworten. @Klaus. Das war nur ein Zahlenspiel um den Sachverhalt wiederzuspiegeln. Das ist mir schon klar. Es liegt ja auf der Hand, dass man vorher liest und vergleicht. Allerdings kostet lesen über einen 400 KHz I2C Bus Zeit, steigert die SW-Komplexität, Test-Komplexität etc. Würde ein derartiger Datenvergleich innerhalb des EEPROM Bausteins stattfinden, worauf meine erste Frage abzielte, könnte ich mir dies sparen. Ach seufz, wieso hat heute nicht bereits jeder µC internes FRAM ohne Mehrkosten...
marc schrieb: > Allerdings kostet lesen über einen 400 KHz I2C Bus Zeit, Aber viiiiiiiel weniger als schreiben. Und da schreiben so lange dauert, gibts ja den page mode. marc schrieb: > Würde ein derartiger > Datenvergleich innerhalb des EEPROM Bausteins stattfinden, worauf meine > erste Frage abzielte, könnte ich mir dies sparen. Das Konzept dieser EEPROMS ist steinalt, war wohl einer der ersten I2C Bausteine. MfG Klaus
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.