PiKdev Download

PiKdev can drive parallel port programmers, serial port programmers, or USB PicKit2 programmers.

Since parallel an serial interfaces are now obsolete, Tait and JDM programmers will soon disappear. A good response to this situation is to use the PICkit 2 from Microchip. Second sources exist for this small and well designed programmer, which works very well under piKdev.
The original Microchip PICkit 2 next to a Chinese clone.

The parallel port programmer I use is the classic, simple and cheap programmer designed by David Tait. It is not the simplest one and needs an expernal power supply, but, AFAIK, it works perfectly and does not use any unreliable trick.
This is an image of my parallel port programmer. The power connector has been moved from botton right to top right (see copper-side view). I stuck a 8 pins DIL connector with epoxy glue for programming 12CXXX devices, and a SIL connector for ISP other devices. The PC connector is a 25 pins DB25 male connector : you can plug it directly in your PC board, or use a standard cable.
The sticked connectors are connected by thin wires. Note that the ground plane is cutted to receive the (moved) power connector. The power supply is a 12V non-regulated standard unit, which delivers 17V when it is not loaded. The 10k resistor prevents devices with low-voltage programming capability to accidentally enter low-voltage programming mode.

I also use a JDM style serial programmer. Many variants of this programmer are available on the Web. The version I use (aka JDM-1) implements the following schematic:

This is an image of my hand-made serial port programmer, with sockets for 8, 18 and 28 pins devices and a connector for extensions. The PC connector is a DB9 female connector : you can plug it directly in your PC board, or use a standard cable.
An example of spaghetti style technology.

Here is a tarball containing a modified version of this programmer (aka JDM-2) (from alan lecorre).
CAUTION: This version of JDM have been reported to fail with 12F675 and 12F629 already programmed with internal clock enabled. See here details about this story. From my own tests, the programmer I use (JDM-1) does not suffers from this problem, but this question might be device-dependant. Please send me informations if you know more details.
Connecting a device adapter to Tait or JDM programmers
To cope with various device packaging, it might be necessary to connect (remote) adapters to programmers. This is also the case if you use in-situ programming. I use for this purpose a simple SIL connector (6 pins but only 5 really used) for both Tait and JDM, as you can see it on previous pictures. Unfortunatly, it might be not very reliable (or fully unsuccessful) because of glitch or interferences in connexion cable. Some devices are sensitive to this problem, other are not. I didn't analyse very deeply this phenomenon, but here are some advices to avoid it.
  1. Use short cable
  2. Choose a pinout with CLOCK and DATA lines separated by GND (I suppose it will reduce interferences)
  3. Decouple both DATA and CLOCK to GND with 33pF to 47pF capacitors on adapter board. Capacitors must be placed as near as possible from PIC pins. This technique has been proven to be very successful for me.
  4. Terminate DATA and CLOCK lines with 100 or 75 ohms resistors (not tested, but I have read something about this and this is a classic solution in computer busses)
  5. For Tait programmers, use 4.7K or 1K pull-up resistors instead of 10K ones. Signals will be more strongly pulled up. (not tested, but some commercial programmers use 1K resistors)
  6. Add anti-interference ferrite arount DATA and CLOCK lines. not tested, just an idea
I am not a specialist about transmission lines problems, so any ideas or experience feedbacks are welcome.
Other hardwares
The following hardwares have been reported to work (this list is under construction, please contact me if you use a board which is not mentionned here)
Multi Pic programmer A low cost programmer based on JDM design (from HamRadioIndia). The circuit diagram and pcb layout can be found here.
Velleman K8048 experimentation board A good quality kit board from Velleman. This board has a serial interface and is JDM compatible (excepted for pin polarity). It has its own power supply.
HOODMICRO programmer A JDM variant, packaged under a DB25/DB9 connector hood. This commercial programmer has been reported to work with PiKdev.
brenner5 A Tait variant, with a more sophisticated power up design. Good quality PCB available.
P16pro40 Another Tait variant by Bojan Dobaj, with support for 40 pins devices. PCB available.
BAJ's THVP Trivial High Voltage Programmer by Byron Jeff. Simple enough to be builded with flying wires.
Propic2 A parallel programmer with 3 Vpp control lines (Like P16pro40, this programmer uses the same ZIF socket for all PIC devices) .
Asix Piccolo/Piccolo Grande A parallel programmer with direction control for data line. The kind of hardware is only supported since version 0.6.5. Compared to other programmers, Piccolo actively drives data line up and down (with bidirectional buffer), so this signal is perhaps more robust if wires between device and programmer are long (ICSP).
PIC Elmer A serial progarmmer which is part of a project board, from the American QRP club. This is not a JDM variant because it needs a 12V power supply.
EPIC+ A parallel programmer with battery supply. This card is designed to work with variable VPP (13V and 13V/2). Unfortunatly, it produces 13V/2 by default. As PiKdev does not drive the VPP control line (Centronics pin 6), you must disconnect pin 2 of 7404 buffer in order to have PiKdev working. Another solution is to replace 7407 by 7406 (hex open collector inverting buffer) so the default behaviour of the card will be to produce 13V VPP. Of course you have to modify PiKdev configuration (invert all pin polarities). See schematic here.