
The D0 and D1 lines drive the pull-down of SDA and SCL, they have a yellow and green LED to display their states. The C1 bit drives a power indicating red LED (or a "don't remove chip" warning if you prefer).
SERIAL EPROM PROGRAMMER DRIVER
The driver was also modified to pre-clock it as per the requirements in its datasheet to get it into the bi-directional operation mode.Ī bi-directional parallel port is not required as the SDA and SCL lines are read through the Error and Paper-Out status bits (S3 and S4). The 24LC21A's /VCLK signal has the opposite sense to the usual /WP, as do several others designed for plug-n-play data service. This was added after support for the 24LC21A was requested by Miika Ahdesmäki. Note the switch/jumper in the diagram that allows selection of the state of the /WP signal on most devices. The diodes will protect the port if external power is supplied, especially if you intend to use the programmer as a generic I2C interface. If all else fails, supply an external 5 V supply. If yours is one of them, or you suffer other power problems, you can try pulling power from D2-D7 and C2-C3 with extra diodes, they are all pulled up by the software. Power is sourced from the C0 bit, on some weird parallel ports this may be open collector rather than being capable of sourcing current.

That is cutting it a bit fine, but in practice it has worked perfectly on several different PC parallel ports. The programmer is port powered but the parallel port outputs are specified to source only 3.5 mA.
SERIAL EPROM PROGRAMMER GENERATOR
The 24LC16B and other similar chips pull just a little more than 3 mA when writing to power the internal programming voltage generator (less when reading, and virtually nothing in standby).

Adding an extra device is generally just a matter of adding an extra struct near the top of 24xx.c and recompiling. It should work fine with other 24X I2C EEPROM devices, perhaps with slight changes to the addressing logic and sizing for larger devices like the 24LC512 (and 24LC1024 when it becomes available). The original prototype and control software was developed against a 24LC16B device, but has since been extended and tested against the 24LCX range with X in. I built it to program 24XX devices, but it can, in principle at least, talk to any I2C device with a suitable adapter or fly-lead, it implements a complete I2C bus interface.
SERIAL EPROM PROGRAMMER SERIAL
Here is a simple serial (I2C) EEPROM programmer for the PC parallel port.
