JDM-B:
A simple JDM Programmer Modification

The JDM (or Ludipipo) seems to be among the most popular PIC programmers used - and rightly so: it is simple, cheap and easy to build, can be run with the free and excellent IC Prog software by Bonny Gijzen, and will program pretty much any PIC microcontroller on the market.

However, an issue has arisen lately with some of the new PIC's, eg PIC12F675, 12F629, and some others with an internal oscillator.

When these chips are programmed the first time, everything goes fine. However, if you later try to read or re-write to them, they read as blank and cannot be written to. The problem only occurs when the PIC has been programmed for INTOSC and MCLR_OFF, but even in this situation sometimes it will re-program OK - there seems to be some other dependence on the program which has been loaded as well.

The cause of the problem is that the JDM programmer applies +5V Vcc to the chip all the time, and cannot effectively be turned off, as the serial port ground connection is actually used for Vcc. This means that when the PIC has been programmed for INTOSC, the program in it runs as soon as it is inserted into the programmer. Once the PC increments with the program running, the device is no longer in a reset state and will not enter program/verify mode. The other issue is that if the PIC program writes values to data EEPROM memory which depend on the state of the inputs, these values will be overwritten and lost when inserted. For those who have encountered these problems, the advice has been to build a new programmer, eg. the Tait programmer, or there is Feng's "RCD Programmer" which he develepod as a result of this problem, and is fully compatible with the JDM.

Having encountered this problem myself recently, and being in the middle of a project and not particularly wanting to build a new programmer just yet, I sought a simpler way to improve my existing JDM so that

a) Vcc COULD be controlled, solving the problem, and
b) It would be fully compatible with JDM,
i.e. not need any extra connections or control, so that IC Prog will work

The second requirement means that the programmer must automatically switch on Vcc when needed, then back off when it isn't, and without the software telling it to.

The solution I have come up with involves adding just one cheap, common component to the board, and cutting a couple of tracks. It can be installed on the track side of the board in minutes, leaves the programmer compatible with all PIC microcontrollers, and will work with any software written for the JDM. Basically, the 5.1V supply to the chip socket is cut, and the break is bridged with a MOSFET. This MOSFET is turned on (connects Vcc) by Vpp, the 13V programming voltage:

ie. Vcc turns on fractionally after Vpp (as per PIC programming specifications),
and is turned off as soon as programming/reading is complete, so program in PIC
does not run.

Schematic for JDM Modification

Modification Steps:
A. Cut the GND track near the serial connector, and connect it directly to the cathode of the 5.1V Zener diode. The only components that should be left connected are D2, D4, D6 and C3 (refer to schematic.
(Note that if your board has the track routed from the connector directly to this point WITHOUT going through any other connections, you can skip this step)

B. Cut the track joining the 5.1V zener cathode to all connections on the chip socket. Bridge this gap with with a 2N7000 or similar MOSFET, drain to Zener, source to PIC socket connection side of break. Ensure that the 3 diodes and capacitor mentioned above are all on the same side of the break (non-PIC side).

C. Run a wire from the gate to Vpp. This MUST be taken to the emitter side of Q1: the collector side will always have around 4.6V present, whereas the emitter side falls to zero when Vpp is turned off.

NEW! PCB design kindly provided by FENG3

Experiencing Difficulties?
Easy process to
track down problems with your modified JDM.

HOME

Hits since 7th April, 2004
FastCounter by bCentral

Let me know what chips you've tried this on,
and if you've had any problems.

Feedback appreciated: