Summary
An all-in-one debugger/programmer solution: MPLAB®
ICD 2 is a low cost, real-time debugger and programmer for selected PIC®
MCUs and dsPIC® DSCs. Using Microchip Technology's proprietary
In-Circuit Debug functions, programs can be downloaded, executed in real time
and examined in detail with the debug functions of MPLAB. Set watch variables
and breakpoints from symbolic labels in C or assembly source code, and single
step through C source lines or into assembly code. MPLAB ICD 2 can also be used
as a development programmer for supported MCUs.

The secret behind In Circuit Debugging is two dedicated hardware lines
(microcontroller pins used only during debugging mode) that control In Circuit
Serial Programming™ (ICSP™) of the device and, afterwards, debugging through
proprietary, on-chip firmware. The ICD 2 debug features are built into the
microcontroller and activated by programming the debug code into the target
processor. There is some shared overhead expense that includes one stack level,
some general purpose file registers and a small area of program memory when in
the debug mode.
IMPORTANT NOTE: MPLAB ICD 2 requires minimal design guidelines be followed
to ensure stable communications between the unit and the target. Check this page
for some useful tips:
http://www.microchip.com/icd2help
Features
 | USB (Full Speed 2 M bits/s) & RS-232 interface to host PC
 | Real time background debugging
 | MPLAB IDE GUI (free copy included)
 | Built in over-voltage/short circuit monitor
 | Firmware upgradeable from PC
 | Totally enclosed
 | Supports low voltage to 2.0 volts. (2.0 to 6.0 range)
 | Diagnostic LEDs (Power, Busy, Error)
 | Reading/Writing memory space and EEDATA areas of target microcontroller
 | Programs configuration bits
 | Erase of program memory space with verification
 | Peripheral freeze-on-halt stops timers at breakpoints |
| | | | | | | | | | |
The MPLAB
ICD 2 connects using USB or RS-232 between the design engineer's PC operating
with MPLAB IDE and their product board (target) being developed. It acts as an
intelligent interface/translator between the two, allowing the engineer to look
into the active target board's microcontroller, viewing variables and registers
at breakpoints with MPLAB watch windows. A breakpoint can be set to halt the
program at a specific location. The program can be single-stepped or run at full
speed. At breakpoints, data and program memory can be read and modified.
Additionally, the MPLAB ICD 2 can be used to program or reprogram the
Flash-based microcontroller while installed on the board.