??? 06/02/08 18:58 Modified: 06/02/08 21:22 Read: times |
#155414 - but, Gary, we HAVE been talking about it... Responding to: ???'s previous message |
http://www.8052.com/forum/read.phtml?id=155313 in the "addendum"
http://www.8052.com/forum/read.phtml?id=155317 http://www.8052.com/forum/read.phtml?id=155391 It is a relatively smart approach from Temic/Atmel to make the flash quasi-byte-programmable, together with the relatively small FLASH page (block, sector - the terminology is not established) size. The following is the description of what happens when you use the program byte or program block IAP call: After an appropriate SFR bit is set, and a MOVX is performed, the programming hardware internally reads (caches) a FLASH page into which the MOVX address falls, into an user-inaccessible RAM array of 128 bytes and latches the high address. Subsequent writes go into this cache and don't modify the latched high address (this is why attempts to write beyond the page boundary end up in circular writes into the same page). Then, when the programming sequence is activated setting the appropriate SFR bits, the page in question gets erased and then rewritten by the content of the cache. Here are also the caveats of this process: - due to the full erase/reprogram cycle is performed for each programming, byte or partial page write take always the same, relatively long, time (milliseconds, as compared to microseconds for a write to a previously erased FLASH in the Philips chips) - a single byte write wears the whole page, i.e. counts into the total endurance of the whole page JW |
Topic | Author | Date |
Now I can't get "Erase Block" to work, 89C51RC2 | 01/01/70 00:00 | |
PLEASE, pretty please | 01/01/70 00:00 | |
Atmel 89C51RC2-UM Erase Block | 01/01/70 00:00 | |
if there is no prefix on the chip... | 01/01/70 00:00 | |
FLIP says it is an AT89C51RC2 | 01/01/70 00:00 | |
Oh, everybody remembers all previous posts, | 01/01/70 00:00 | |
Well I remember all of yours! :) | 01/01/70 00:00 | |
why wouldn't be that? | 01/01/70 00:00 | |
Have I misinterpreted the documentation? | 01/01/70 00:00 | |
WHICH documentation? | 01/01/70 00:00 | |
BAD documentation! | 01/01/70 00:00 | |
oh, THAT one IS bad indeed! | 01/01/70 00:00 | |
I'd say this the reason why erase does not work... | 01/01/70 00:00 | |
No erase is needed, why did I think it was? | 01/01/70 00:00 | |
but, Gary, we HAVE been talking about it... | 01/01/70 00:00 | |
I know, I have been missing that | 01/01/70 00:00 | |
when I came accross IAP for the first time... | 01/01/70 00:00 | |
Not How - but the Before/After | 01/01/70 00:00 | |
Run In Simulation![]() | 01/01/70 00:00 |