Ik heb een vraagje over de eeprom 24c256, deze hebben na het schrijven naar het geheugen een wachttijd van 5 ms (die van microchip in ieder geval), maar nu zit er ook een soort van buffer in van 64 byte, wat nu als ik dat hele buffer vol schrijf en dan de chip het laat opslaan in het vaste geheugen, duurt het dan 64x 5 ms of 1x 5 ms?

Is da nie in de datasheet te vinden?

64x5ms, dus 320ms. Hele geheugen beschrijven duurt 256x5ms = 1.28 sec.

De schrijf actie duurt 5 ms. Dus ongeacht of het een byte-write of page-write betreft.

edit: Soms wordt het in het datasheet vermeld (niet altijd even duidelijk), niet bij alle fabrikanten, maar het werkt wel bij alle types.
@res: wat een onzin, in die chip zit 256kbit, dus 32kbyte...

[Bericht gewijzigd door JoWi op ]

Op 8 juli 2005 11:58:22 schreef JoWi:
De schrijf actie duurt 5 ms. Dus ongeacht of het een byte-write of page-write betreft.

edit: Soms wordt het in het datasheet vermeld (niet altijd even duidelijk), niet bij alle fabrikanten, maar het werkt wel bij alle types.
@res: wat een onzin, in die chip zit 256kbit, dus 32kbyte...

Klopt onzin. :)

ok, dit betekent dus dat ik beter page-write kan gebruiken, dit is dan veel sneller? Ik vond het inderdaad nogal vaag staan in de datasheet, zo is het in ieder geval opgeheldert.

hartelijk bedankt in ieder geval :)

[Bericht gewijzigd door wouter van der vinne op ]

Op 8 juli 2005 12:30:19 schreef wouter van der vinne:
ok, dit betekent dus dat ik beter page-write kan gebruiken, dit is dan veel sneller?

Nee.

haha, ok nog niet opgeheldert dus, maar als het 5ms is, dan duurt hetbeschrijven van het hele geheugen 256000 * 5 ms = 1280 sec is ongeveer 20 min..... Nu gebeurt het natuurlijk niet zo veel dat het hele geheugen moet worden beschreven, maar ik vind het toch wel absurd lang eigenlijk.

[Bericht gewijzigd door wouter van der vinne op ]

Op 8 juli 2005 12:30:19 schreef wouter van der vinne:
ok, dit betekent dus dat ik beter page-write kan gebruiken, dit is dan veel sneller? Ik vond het inderdaad nogal vaag staan in de datasheet, zo is het in ieder geval opgeheldert.

Er zijn twee voordelen met page-writes:
1) Wanneer je bijv. 50 bytes per keer schrijft en het duurt nog steeds 5 msec dan komt dat op neer op 100 usec per byte, dus 50* zo snel (alhoewel je de I2C transfer tijd er nog bij moet optellen)
2) Zo'n chip heeft een beperkt aantal write cycles. Dat betekent dat je hem bijvoorbeeld 100.000 keer kan schrijven. Dat geld niet per lokatie ! (Je kan dus niet elk adres 100.000 keer schrijven en dus op 100.000 * 32k = 320.000.000 schrijf akties terecht komen). Dus door page-write te gebruiken gaat je chip langer mee.
Ik heb het hier versimpeld, de echte berekening is wat moeilijker en heeft o.a. met de layout van de chip te maken, zoek eens op "EEPROM endurance". D'r moet nog een application note van Microchop rondhangen op hun site over dit onderwerp.

ok, bedankt, dit gevonden in die eeprom endurance datasheet:

Page mode writing is a popular feature on many new
designs of EEPROM memory products. This feature
allows up to 8 bytes of data to be written to the memory
in the same time that one byte would normally take. In
this mode, the write time for a 64K Serial EEPROM can
be cut from eight seconds to one second.
put out by the charge pump will be reduced slightly if
more bytes are being written. If the whole array is being
programmed then the charge pump voltage will be
significantly reduced, but the programming current Ipp
will be very high.

Op 8 juli 2005 12:45:55 schreef JoWi:
[...]
2) Zo'n chip heeft een beperkt aantal write cycles. Dat betekent dat je hem bijvoorbeeld 100.000 keer kan schrijven. Dat geld niet per lokatie ! (Je kan dus niet elk adres 100.000 keer schrijven en dus op 100.000 * 32k = 320.000.000 schrijf akties terecht komen).

Stel dat je een Atmel 24C256 hebt, die heeft dus 32K bytes geheugen en 100K write cycles. Als je losse bytes schrijft, zou je deze dan maar 3 keer kunnen volschrijven?

Mja, beetje vreemd en dan te bedenken dat ik een keer een loop programmaatje had gemaakt om die eeproms te testen, die heb ik toen wel 10x het hele ding laten beschrijven, byte voor byte, die kan dus wel in de prullenbak :P

Op 8 juli 2005 14:12:40 schreef madwizard:
[...]
Stel dat je een Atmel 24C256 hebt, die heeft dus 32K bytes geheugen en 100K write cycles. Als je losse bytes schrijft, zou je deze dan maar 3 keer kunnen volschrijven?

Nee, het zit veel ingewikkelder in elkaar, maar doe eens wat zoekwerk op het web. Bovendien: Die specs zijn natuurlijk absolute minima onder slechte omstandigheden. Het zou me niet verbazen als je in de praktijk minimaal 10 keer zo hoog komt voor er een cel stuk gaat. Sommige EEPROMS hebben trouwens een high-endurance stuk waar je meer write cycles op los kunt laten.

Een single byte write is intern hetzelfde als een page lezen, de byte wijzigen en de hele page terugschrijven. Het maakt daarom niet uit of je 1 byte of de hele page schrijft. Intern wordt altijd de hele page teruggeschreven, of er nu gewijzigd is of niet. Voor elke page gelden 100.000 (of volgens spec) write cycles.

Op 8 juli 2005 14:38:59 schreef Fuzzbass:
Een single byte write is intern hetzelfde als een page lezen, de byte wijzigen en de hele page terugschrijven. Het maakt daarom niet uit of je 1 byte of de hele page schrijft. Intern wordt altijd de hele page teruggeschreven, of er nu gewijzigd is of niet. Voor elke page gelden 100.000 (of volgens spec) write cycles.

Een page write-is ook voordeliger omdat de lading over een groter oppervlak verdeeld wordt en de levendoor bepaald wordt door de migratie van elektronen door het isolatiemateriaal heeft (En bij een kleinere veldsterke is dat minder).
Microchip, die ik trouwens ook 1.000.000 tot 10.000.000 write cycles zie speccen voor sommige modellen, heeft daar een programmaatje voor, zie de volgende quote van hun site:

To help users predict the erase/write endurance required by a serial EEPROM design, Microchip offers the Total Endurance modeling software. Users input specifications such as serial EEPROM device type, bytes per cycle, cycling mode, data pattern, temperature range, erase/write cycles per day and application life or target PPM level. The model responds with FIT rate, PPM level, application life and a plot of the PPM level vs. the number of erase/write cycles, allowing a user to predict the performance and reliability of the serial EEPROM within his or her application.

Het hangt dus van nogal wat parameters af...

Wat ook kan is eerst kijken of de byte idem is aan de de byte die erin moet worden geschreven, indien idem die byte niet schrijven, zo bespaar je ook schrijfacties.
Op 1 MHz duurt het communiseren niet lang.

Ach het zou geen ramp zijn bitje verkeerd, maar het zou eigk wel vervelend zijn als elke 130 bytes een halve seconde write tijd nodig zou zijn, maar dat is dus niet zo

even een en ander ophelderen.

je kan een EEProm zoveel ERASEN als je wilt. daar staat geen limiet op.
Het is het schrijven wat gelimiteerd is. Als een fabrikant opgeeft 10.000 write cycles dan kan ELKE bye 10.000 keer geshreven worden maar .... opgelet met die seriele dingen !
onafhankelijk of je nu 1 of 4 of 5 byte schrijft in ene pagina wordt de ganse pagina geschreven !.
bij laden van de data addresseer je de pagina. de pagina wordt geladen in de shadow RAM, daar wordt jouw data bovenop gezet en de ganse zwik wordt teruggeschreven. Dit is alleen zo als je PAGE operaties uitvoert

Je moet goed kijken in de datasheet of er gespecifieerd staat of je individuele bytes kan schrijven of als het altijd page operaties zijn.

Je kan dit zelf testen. Wis een pagina, en lees wat er staat. normaal allemaal FF
Laad een complete pagina met checkerboard (55-AA)
schrijf daarna 2 byte met inverse checkerboard(AA-55)
lees de eerste byte terug . als je 00 terugkrijgt kan je byte operaties doen. als je AA terugkrijgt gebeurt er telkens een page erase en kan je dus geen byte operaties doen. dit soort roms slijt dus rapper bij byte operaties.

Voor de mensen die niet weten wat checkerboard is: dit is een testraster
55 en aa zijn hexadecimale getallen
55 in binair is 01010101 en
AA in binair is 10101010

dus als je een pagina (stel 1 pagina is 8 byte) checker 55-aa schrijft staat er dit in:

01010101
10101010
01010101
10101010
01010101
10101010
01010101
10101010

bij Checker aa-55 staat er dit in

10101010
01010101
10101010
01010101
10101010
01010101
10101010
01010101

Bij het schrijven van een EEPROM cel kan je aleen bits op NUL zetten. Wissen zet ze op 1. dus wat doet die test nu :

we zeten eerst dit patroon in de eeprom
01010101. als de eeprom een echte byte write doet ( e niet de eeprom naar shadow ram copiert , die laat aanpassen met jouw data , een page erase doet en e boel terugschrijft )
wordt bij de volgende opdracht de resterende 1'en ook op nul gezet.

@Free elektron: Je haalt FLASH en EEPROM door elkaar.
Bij Flash kan je inderdaad alleen nullen schrijven en om een bit weer op 1 te krijgen is een ERASE cycle nodig (over die hele pagina). De page size is trouwens niet noodzakelijk de row-size (waarover je programmeert). Voordeel van Flash is natuurlijk de hogere density, maar helaas minder cycles.

Op 8 juli 2005 22:22:23 schreef JoWi:
@Free elektron: Je haalt FLASH en EEPROM door elkaar.

bij flash geldt dit ook, maar doe de proef maar met een PCF8582 , 93C06 93c46 en ik dacht zelfs de 2401 ook.