From: "Tony Duell" <ard at p850ug1.demon.co.uk>
Sent: Sunday, June 26, 2005 5:26 PM
Not just that, the programming algorithm is different
to most
other EPROMs. IIRC you have to program all locations in sequence,
giving each one a 1ms (IIRC) programming pulse, and repeat that
50 times.
Any bit in any byte can be individually programmed from 1 to 0.
There are no sequence requirements, the programming pulse is one
pulse of 50ms per location programmed.
Well, I'll admit that I was working from memory last night, but I've just
checked the Intel 1977 Data Catalog :
Under '2708/2704 family programming it says :
'The circuit is set up for programming operation by raising the CS/WE
input (pin 20) to +12V. The word address is selected in the same manner
as in read mode. Data to be programmed are presented, 8 bits in parallel,
to the data output lines (O1--O8). Logic Levels for address and data
lines and the supply voltages are the same as for the read mode. After
address and data set up, one program pulse per address is applied to the
program input (pin 18). One pass through all addresses is defined as a
rpgoram loop. The number of loops (N) requirded is a function of the
program pulse width (t_PW) addording to N * t_PW >= 100ms.
The width of the program pulse is from 0.1 to 1 ms. The number of loops
(N) is from a minimum of 100 (t_PW = 1ms) to greater than 1000 (t_PW =
0.1ms). There must be N successive loops through all 1024 addresses. It
is not pwemitted to apply N program pulses to an address and then chenage
to the next address to be programmed.
...'
You
can't program odd locations like you can in later EPROMs.
You can, it's EPROM microcontrollers like the 68705 that need to
be programmed in sequence.
Maybe other manufactures had simpler algorithms for their 2708s, but the
Intel data book makes it very clear you do have to program all locations.
(It gives examples where only some locations are to be changed. The
unchanged ones have to be reprogrammed with their existing contents, you
can't skip over them.
-tony
Intel changed the specifications of the 2708 a couple of times, later docs
state it does not require programming from address 0.
I have changed individual bits (only from a high to low, to go from low to
high the entire chip must be erased).
The later docs still state sequential writing but no longer require starting
at 0 but I have written non sequentially and can swear by that. I wrote a
program that verified before writing to speed up programming, this skipped
many bytes and I used it to modify previously written EPROM's. The buffer
in RAM was sequentially read but the writing was NOT sequential it would
skip bytes when a write was not needed.
Any byte can have high bits changed to low even if they were previously
programmed.
Randy