Recently I retired my old Circuit Cellar home built eprom programmer and a parallel port Willem version and wanted a more modern USB based one so I bought this programmer due to the need for an inexpensive eprom programmer for various projects that didnt need a parallel port but soon found a couple issues that I wanted to rectify. The first was the ability to program vintage eproms at 21 or 25 volt. Second, there was an issue specifically with burning 2732 eproms. I searched on the web for some solutions but only found some external complex circuits needing an external power supply which defeats the purpose of having a "universal" programmer
. Anyhow, this is my contribution to the effort.
This is a very simple mod that only requires a couple small gauge wires, a 6.2Kohm or 6.8kohm resistor and a 2 pin jumper. This will give this programmer the lacking high voltage vpp needed by vintage eproms that some of us still play with at times. Currently, i've only used this mod with some 21 volt 2764 and 2732's. I have not used it with 25volt eproms as I dont' have any so am interested to know if it works well with those. I also use a powered usb hub to ensure i have adequate current.
I don't know why the developer did not provide this function to the programmer since the hardware is fully capable of supporting it. Please note that if you are concerned about voiding your warranty , don't do it. Personally, for a 50 dollar item from overseas, I just treat it like having no warranty since shipping costs to return it are not worth it.
This mod involves adding another resistor to the voltage divider circuit that controls the output vpp voltage. It basically adds a +7 volt boost to the indicated vpp voltage.
The current firmware has 4 software controlled resistor values that it uses to produce various voltages from 9 to 18 volts in various combinations. This mod adds a 5th one, which changes the range from 9 to 25 volts.
If anybody is interested, the formula to calculate the output voltage from the resistor values is 1.25(1+r8/r9p) where r9p is actually the calculated parallel resistance value of the applied range resistors in parallel. For example to achieve 18 volts currently, the firmware puts 33k,15k,9.1k and 51k in parallel with the 5.1k fixed value to give the r9p for the calculation above. r8 =33k. For 9 volts, no software controlled resistances are added to the circuit so r9p=5.1k
Using the calculation set for 25 volt, I determined that 6.2k in parallel with the other 5 resistors will give us the value we need.
I didnt have any 6.2k but did have 6.8k which gives a slightly lower voltage output (24.75) instead of 25.33 (calculated). Close enough.
I did try a 5.6k but that seemed to overdrive the circuit and caused read errors so there looks to be a max voltage ceiling here.
As to the install, the case is very tight and there are very limited locations to put a jumper and wire connection. I chose to put the jumper in a corner as there was enough room there to drill a 5mm hole and hot glue the jumper pin block. I soldered the resistor in series with one wire and covered it with heat shrink.
You solder the wire with the resistor to pin 5 of U3 and the ground wire you solder to a convenient ground location. I used the anode of D14 as it was easy to solder to. You can also solder it to pin 4 of U3 but I felt it was a bit tight at that location for another wire.
I routed the wires along the side of the ICSP header as there was a better gap there to fish them through to the header location without pinching. See the attached pictures below for more details.
I then ran the wires through to the drilled hole and soldered them to the jumper pins. The pin block was then hot glued into the corner just sticking out enough allow the jumper to be installed.
To use this mod, when you need vpp voltages higher than 18v, just put the jumper in and this will add a +7 volt boost to whatever the ouput vpp is set to. In other words, to get 21 volts out, you set the program vpp value on the screen to 14 volts (14+7=21) and for 25 volts, you set the program vpp value to 18 volts (18+7).
To return to normal, simply remove the jumper. I recommend removing the jumper when you're done right away so that you don't forget next time and apply a too high value to your next victim!
For the other issue with the failure to burn vintage 2732 eproms, I hooked up my logic analyzer to VPP and to the CE(low) lines to check out the timing. What I saw was that the CE line was going high with VPP and going low during the read cycle. This was the problem. With the 2732, the CE line has to be low for writes as well as reads. Technically it's the CE line being pulsed low with vpp at 21v that programs the chip. This was not happening here.
What I did to solve the issue was to simply put a jumper wire between pin18(ce line) and gnd right on the zif with the eprom in place. This forces the chip enable (ce) line low always. This won't hurt the programmer as there is a 510ohm resistor between each pin and the PIC processor. With ce low and vpp being pulsed to 21 volts,this is perfectly adequate to burn the eprom even if it is not technically the sequence recommnended in the data sheets.
Also, with CE being low always, this does not affect reads as this is also required. I did reach out to the manufactuer via the support email and via their forum but we all know that sometimes these things fall on deaf ears. I have not heard back. At least there is workaround for this issue.
I should also add that the way the fast program algorithm works as used by this programmer is that using the set program pulse width value it will run a cycle of a write immediately followed by a verifying read up to 60 times (what I counted anyhow with the 2732. Might differ with other ic's) in a row for each address location. If the value fails to be written after that, the sequence fails. If the write succeeds before the max count, it moves on to the next address.
Anyhow, I hope this helps those of you that enjoy working with vintage equipment.
Edit: The same mod can technically also be done to the Tl866CS or tl866A by using a 10K resistor to add 25v ( a +4 volt boost)
Alain