Shahid Sheikh wrote: > Hi all, > > I was looking at the programming specifications for the PIC12C5xx chip ... snip... Shahid: I made my own programmer about a year ago, and it's still working very well for me, so I likely understand the specs correctly... -> The recommended minimum programming pulse width is 100 microseconds, as stated in section 2.2, and is controlled by software, NOT by any logic level applied to the chip. -> The 100 nanosecond pulse you refer to in the timing diagram is the minimum pulse (logic level) that will be recognized at a 12C5XX input pin when you are transferring data or commands to it. Don't transfer data any faster than this. -> EACH TIME you write to a memory location with a 100 microsecond pulse, you must issue a Load Data command, send 16 bits of data ('0'+14 bits+'0'), send a Begin Programming command, wait enough time to give 100us programming time (100us minus the time to transfer the begin programming command), then send an End programming command. -> Each 100us programming 'exercise' is followed by a Read data command to see if the location has received enough 100us pulses yet or not. DO NOT issue an Increment address command. Once the data reads back correctly, it is considered to be 'marginally' programmed, and 3 times as many pulses as it took to get this far are then applied to over-program the location. I actually repeat the 100us pulse subroutine 3N times - I've never tried actually issuing one 'long command'. -> If the chip ever needs more than 25*100us pulses to get to the 'marginal' state then it is faulty and should be failed and tossed out with the trash. -> Once that location has been programmed, the Increment Address command is issued to step to the next sequential location. Everything is repeated for the next word... Make sure you have a big return stack, as you'll be doing a lot of looping! -> P5 and P6 are correctly given as 1 microsecond minimum in the table. The timing diagrams incorrectly show 1 millisecond. -> Note 2 does not contradict section 2.1.1. Section 2.1.1 says that you must use ~13V when writing locations in the chip. Note 2 is telling you that you can reduce the Vpp supply and still remain in the programming mode, where normal program execution is inhibited, and the pins are assigned their programming functions. You better get it back to 13V before programming the next word, however. -> Section 2.1.1 part 5 incorrectly refers to a speed verify mode. Microchip tells me this is wrong - the 12C5XXs do not support this mode. Hopefully this is of help to you. If you read the docs carefully, I think you can trust them. The main problem that Microchip seems to have with their docs seems to be with their symbols for micro and ohm, not with the content. If only they used a Macintosh like so many of us... Jim