Review of the Microchip ICD2 Programmer/Debugging Tool
Introduction
This is a quick and dirty review of the Microchip ICD2 debugging and programming device for Microchip PIC processors. ICD2 offers relatively high end debugging features such as break points and triggers on very low end PIC processors for a very low cost
What Do You Get ?
A small round colourful widget with various holes around it for connecting to the target system and a PC. Plus various bits of paper which show how and what to do to allow ICD2 to connect to the target hardware. The software comes on a CD and there is a not quite upto date version of the MicroChip MP LAB.
Installation
First make sure you have newish version of the MP LAB IDE installed and working on the target system. Then as long as follow the instructions it works straight out of the box. Be especially careful if you are using the USB option with the order of plugging in and loading of drivers. This is a real RTFM moment.
Features
The ICD can operate either as an in-circuit programmer or as an in-circuit debugging tool. The device list covers most of the PICs and dsPICs, unfortunately the popular 16F72, 16F73, 16F74, 16F76, 16F77, 16F83 and 16F84A are not supported.
For use as a general purpose programmer Microchip offer an additional header with a ZIF socket and some jump leads, or the ICD can be used as an in-circuit programmer.
For debugging the ICD uses the programming interface to communicate with logic embedded in the target device. Thus the number of break points and the facilities available are determined by the target device.
Minor Gripes
The debugging a faulty module to target interface is not easy. The ICD cannot seem to discriminate between ‘not connected at all’, ‘connected and not running’ or ‘slightly connected’.
The target device must capable of being up and running code for the ICD to work. For example the PIC must be being clocked and not be in reset.
The ICD system uses some code and register space.
Two pins on the target device have to be allocated to the ICD during debugging.
We made our own cable to connect from the ICD2 to the target PCB, using a 6 pin telephone cable at one end and a simple 0.1″ pitch 6 way header at the other.
There seems to be a mode where the ICD2 refuses to allow debugging. The fix seems to be making the first 4 locations of EEPROM = 0x01,0x02,0x03,0x04. This can cause problems if your target code over writes these locations by design or mistake.
When used with the CCS C compiler there are restrictions on breakpoint locations in code. We often resorted to adding in “do nothing code” to get the breakpoint where expected.
Its not as real time as it seems. We found that its usage it debugging RS232 ports for example was limited.
Conclusions
Despite the above caveats this a very useful piece of kit for the hobbyist and small electronics company. It would justify its place on my bench just as an in-circuit programmer, the additional debugging facilities on offer being an excellent bonus.
For the cost ( current price is £85 +VAT) it is difficult to find fault.