chipKIT® Development Platform

Inspired by Arduino™

Warning to PICkit 3 Users!!!

Created Fri, 09 Mar 2012 22:34:57 +0000 by Sal Ammoniac

Sal Ammoniac

Fri, 09 Mar 2012 22:34:57 +0000

I recently bought a chipKIT Max32 and PICkit 3 from Digilent and had a frustrating morning tearing my hair out when I kept getting constant "Device ID" errors in MPLAB X.

The Digilent documentation says:

"Unloaded connector J11 on the left side of the board is used to connect to a Microchip development tool, such as the PICkitâ„¢3. The holes for JP3 are staggered so that a standard, 100mil spaced, 6-pin header can be press fit to the board without the need to solder it in place."

**This is bad advice!**I thought so when I first read it, but thought, "what the heck, let's try it." This turned out to be the reason for all my "Device ID" errors. When I properly soldered the six-pin header to the board the errors went away. Even if this advice does work sometimes, it'll be flakey and cause problems when you least expect it.

Break out that soldering iron and solder that puppy!!!


Sat, 10 Mar 2012 05:08:33 +0000

An additional data point - I've used these exact same staggered holes in several of my designs, over the course of several years, and build hundreds of boards this way (with staggered ICSP holes) to program with PICKit2 or 3. And in all cases, I've found that you must put a certain amount (not much) pressure on the PK2/PK3 so that good solid contact is made. But I've never experienced any problems or difficultly programming this way as long as the pressure is there. (Sometimes you can route the USB cable to put the pressure on the PK2/3, sometimes you just have to hold it with your hand.) True, soldering is better. But if you have 50 boards to program in a night, and the only time you need the connector is just to put the bootloader on, there's no use soldering it in. . .


Sal Ammoniac

Sat, 10 Mar 2012 06:22:56 +0000

If I had to program hundreds of boards, I'd use something that was designed for the task, such as this [url][/url].

Like you say, I'm sure the press-fit header can be made to work by applying pressure to it, but I wouldn't want to count on that. It might suffice for a quick one-time programming of a board, but for a lengthy debug session it's a failure waiting to happen. This is likely to confuse beginners and probably cause lots of support calls to Digilent.

Speaking of the PICkit 3 connection the the Max32, a little further down on the same page from the description of the press-fit header, there's this:

"Typically, a right angle male connector will be used in J11 so that a PICkit3 can be attached coplanar with the Max32 board. If the connector is loaded from the top, the PICkit3 will be upright (button and LEDs visible). Alternatively, the connector can be loaded from the bottom. In this case, the PICkit3 will be upside down."

This is also confusing. It doesn't matter whether the header is loaded from the top or bottom of the board--pin one is still in the same place and the PICkit 3 will plug into it in the same orientation, not right-side up if the header is mounted from the top of the board and up-side down if the header is mounted on the bottom of the board. Digilent need to clarify this section of the manual so as not to confuse beginners.


Sat, 24 Mar 2012 20:03:13 +0000

Sorry for my bad, I'm just a beginner so my question can be stupid. Only PICkit3 can use for ICD or can I use a PICkit2 as well? And have someone good or bad experience with any sort of PICkit clone?


Wed, 28 Mar 2012 21:31:06 +0000

A PICkit 2 isn't suitable, you will need a PICkit 3. I've used an ICD 3 with the UNO32.


Wed, 28 Mar 2012 21:39:19 +0000

PICkit2 can write program to UNO32 PIC , I used the PK2 standalone software with the most up to date device file from Microchip PK2 site. The PIC32MX795F512 on chipKitMax however is not currently supported in device file 1.62.14


Thu, 29 Mar 2012 05:37:51 +0000

I do believe some smart people on the figured out how to change the device file to support programming the MX795, but I could be mistaken. Worth a look anyway. *Brian


Fri, 18 May 2012 05:34:51 +0000

I use the IDE version 8.85,It can support PICkit3!but it can't running, Who Knows Why ?


Fri, 18 May 2012 21:25:54 +0000

Hello ukonline,

There are several situations that would allow you to program a part, but not to enter debug mode. These include:

  1. Wrong PGEC/PGED pair selected in device config bits. For example, the example, I believe the Uno32 uses PGEC2/PGED2. So the correct configuration bits would be ICESEL = ICS_PGx2.

  2. The clock isn't running properly. Ensure you have either a crystal mode selected (POSCMOD = HS or XT and FNOSC = PRIPLL), or internal oscillator (FNOSC = FRCPLL)

  3. PGC/PGD functions are disabled in code and pins are used for other functions. On the Uno32, PGEC2 and PGED2 are shared with ports RB6/RB7. Ensure that you aren't changing the TRIS or LAT bits that correspond with these pins in your code.

  4. The watchdog timer is enabled. Disable with

Here is an example of some configuration bits for the PIC32 that may be useful.

// Config settings
// PBDIV = 8 (default)
// Main clock = 8MHz /2 * 20    = 80MHz
// Peripheral clock = 80MHz /8  =  10MHz

// Configuration Bit settings
// PBCLK = 10 MHz
// Internal Osc w/PLL (FRC+PLL)
// Clock out on OSCIO pin
// Other options are don't care

Regards, Josh


Sun, 20 May 2012 15:11:54 +0000

Thank you Josh, It seems to work now!


Mon, 21 May 2012 15:28:25 +0000

Hello ukonline,

If you wouldn't mind, please share what the problem was, so that it may help other user's who experience similar problems.




Thu, 24 May 2012 04:01:07 +0000

Hi Josh, My problem is not program Uno32 before running! Childish mistakes :lol:

Regards, ukonline