This is a simple serial based JDM2 PIC Programmer for programming PIC18F chips. The Programmer is powered by the RS-232 port and it works with RS-232 levels at only < ±8.6V. It programs PIC12C5XX, 12C67X, 24CXX, 16C55X, 16C61, 16C62X, 16C71, 16C71X, 16C8X, 16F8X and ISO-CARD's with ASF. The high Vpp is obtained by using negative voltage to drive the chip. The voltage is stabilized with zener diodes. They do not need voltage drop as if a voltage regulator, or has much offset current. This makes it possible to use extra low input voltage. Transistor driver guarantee output level > ±3V. The programmer is supported by PICPgm and WinPic programming software.
If you do not have a PIC programmer around many PIC programmer schematics available on the Web due the ease ICSP protocol. Surprisingly enough the most of them using parallel port interface, like EL Cheapo programmer. Accessing parallel port programmatically under Windows 2000/XP is a real pain and requires special kernel-mode driver. I have opted in favor of the serial-port based JDM2 as the most simplest one. The programmer schematic was shown in below with all the updates required to program PIC18F chips.
Programmer can be built on the small prototype stripboard. All the traces are cut at holes with 9/64 drill bit rotating by fingers. The next step was trying to use the different software. WinPic800 failed miserably, even thought it claims to support JDM interface and PIC18F2450 and 18F2455 chips but WinPic done well, see the picture below.
Using WinPic for programming PIC18F245X controllers got some pitfalls. First, it requires the Microchip device files to be installed in WinPic devices folder. Those files are part of Microchip IDE and not included in WinPic installation. Basically you have to download and install Microchip IDE, locate the file you needed and copy them to WinPic devices folder. For programming PIC18F2455 you would need PIC18F2455.dev file. Note, then WinPic would complain if the device file for particular chip is missing if you try to program without it. Second, WinPic it doesn't check the configuration word properly, as the devices have user-configurable memory space from 300000h-30000Dh, see table below. Two config registers are missing, namely CONFIG3L(300004h) and CONFIG4H(300007h). PICkit2 is aware about that and handles it properly, but WinPic is trying to program it as contiguous memory block and failing on verification.
The simple solution would be just inject two extra lines in Hex file to avoid WinPic confusion:
Another free PIC Programmer can be used with this interface is PICPgm. It is working "out of the box" and doesn't require Microchip IDE device files.