Release Notes for MPLAB® ICD 3 In-Circuit Debugger
MPLAB® IDE v8.30
MPLAB ICD 3 DLL v1.0.0
MPLAB ICD 3 Suite (OS, FW) v1.20.09
March 25, 2009
Table of Contents
5 Repairs and Enhancements Made in v8.30
7 Powering the Debugger and Target Board
8 Setting Up the Debugger and Target Board
9 Device Programming Considerations
13 Number of Hardware Breakpoints Per Device
Click the link below to see device support for “ICD 3 Debugging” (IC3D) and “ICD 3 Programming” (IC3P).
The following devices use a Programming Executive to improve programming speed:
|
dsPIC33FJ128GP202 |
|
dsPIC33FJ128GP204 |
|
dsPIC33FJ128GP802 |
|
dsPIC33FJ128GP804 |
|
dsPIC33FJ128MC202 |
|
dsPIC33FJ128MC204 |
|
dsPIC33FJ128MC802 |
|
dsPIC33FJ128MC804 |
|
dsPIC33FJ64GP202 |
|
dsPIC33FJ64GP204 |
|
dsPIC33FJ64GP802 |
|
dsPIC33FJ64GP804 |
|
dsPIC33FJ64MC202 |
|
dsPIC33FJ64MC204 |
|
dsPIC33FJ64MC802 |
|
dsPIC33FJ64MC804 |
|
dsPIC33FJ32GP302 |
|
dsPIC33FJ32GP304 |
|
dsPIC33FJ32MC302 |
|
dsPIC33FJ32MC304 |
|
PIC24HJ128GP202 |
|
PIC24HJ128GP204 |
|
PIC24HJ128GP502 |
|
PIC24HJ128GP504 |
|
PIC24HJ32GP302 |
|
PIC24HJ32GP304 |
|
PIC24HJ64GP202 |
|
PIC24HJ64GP204 |
|
PIC24HJ64GP502 |
|
PIC24HJ64GP504 |
|
dspic33fj06gs101 |
|
dspic33fj06gs102 |
|
dspic33fj06gs202 |
|
dspic33fj16gs402 |
|
dspic33fj16gs404 |
|
dspic33fj16gs502 |
|
dspic33fj16gs504 |
See section 10 for special device programming considerations to avoid damage these devices:
|
PIC24F/H |
dsPIC33F |
For low pin-count devices (8 to 28 pins), a Header board is usually required. See the Header Board Specification (DS51292) or Header help file (hlpHeader.chm) for a list of available headers by device.
For high pin-count devices (40 to 100 pins), a Header board may available, but is not required. See the Header Board Specification (DS51292) or Header help file (hlpHeader.chm) for a list of available headers by device.
This tool has been tested using the following operating systems:
Windows® 2000 SP4, Windows XP SP2, and Windows Vista™ (32-Bit)* OSs
NOTE: Windows NT® and Windows 98/ME OSs are NOT supported.
The following documents may be found on our website or MPLAB IDE CD-ROM:
· MPLAB ICD 3 In-Circuit Debugger User's Guide (DS51766)
· MPLAB ICD 3 Design Advisory (DS51764)
· Using MPLAB ICD 3 In-Circuit Debugger poster (DS51765)
· Header Specification (DS51292)
· Transition Socket Specification (DS51194)
On-line help (Help>Topics) is also available for this tool:
· Debuggers>MPLAB ICD 3
The default location of the Help file is:
· C:\Program Files\Microchip\MPLAB IDE\ICD 3\hlpMPLABICD3.chm
Peripherals not starting after a halt – A firmware issue was found where certain peripherals were not restarting after a halt had occurred during a debug session. This affected 16-bit devices (PIC24 MCUs/dsPIC DSCs).
Intermittent programming for PIC24FGA/GB devices – A firmware issue was corrected where some members of the PIC24FGA/GB families were reporting programming failures.
Programming failure when Software Breakpoints enabled – A programming problem has been found when Software Breakpoints are enabled and the device is programmed. This happens on PIC18F MCUs, except for PIC18FxxJ devices. The failure signature is the Debug Executive will fail to program.
|
ICD3-164 |
Single Stepping through a RESET instruction causes the PC to branch to 0x0028 and not 0x0000. |
|
ICD3-162 |
PCL value in SFR window does not change causing incorrect debugging behavior. |
|
ICD3-158 |
MPLAB should not allow the user to set MCLR and the oscillator both to internal simultaneously for the 12F675 device using ICD 3. |
|
ICD3-148 |
MPLAB ICD 3 Help's Index tab is missing the PIC24FJ192GA110 and 106. |
|
RI-360 |
Programming failed when software break point is enabled for devices such as PIC18F8722, 6722, 18F4620. |
Installation and setup instructions are dependent on your operating system. Open the appropriate file for your OS in a web browser and follow the instructions to install the driver(s).
Notes:
Find detailed instructions at:
C:\Program Files\Microchip\MPLAB
IDE\ICD 3\Drivers\ddicd3.htm
Basic instructions are as follows:
Win XP 64/Vista/Vista 64
Find detailed instructions at:
C:\Program Files\Microchip\MPLAB
IDE\ICD3\Drivers\ddicd3.htm
or for Win XP 64 only:
C:\Program Files\Microchip\MPLAB
IDE\VistaXP64\ddxp64.htm
Basic instructions are as follows:
The MPLAB ICD 3 debugger is powered through its USB connection to the PC.
The target board is powered from its own supply. With some devices, the debugger can provide power to the target board, but is limited to a voltage range of 3-5v and current of 100 mA.
1. Install the USB drivers on your PC, as discussed above (USB Port Setup). When this is complete, MPLAB ICD 3 debugger should be plugged into a USB port of the PC.
2. If you have not already done so, connect to a target, either directly or through a header board. See on-line help or the user's guide for ways to connect the debugger to a target board.
3. Power the target.
4. Start MPLAB IDE.
5. In MPLAB IDE, select either Debugger>Select Tool>MPLAB ICD 3 or Programmer>Select Programmer> MPLAB ICD. The debugger will automatically connect. Also, the debugger can automatically detect if it has been disconnected/reconnected and if the target has been disconnected/reconnected.
6. The debugger will now be ready for use.
For CodeGuard™ Security Devices
Several 16-bit devices allow customers to define up to 3 programming segments: Boot, Secure and General. The purpose is to allow a customer to place proprietary data (libraries, IP address, etc.) into a protected boot or secure segment. That customer may then transfer these preprogrammed devices to another customer who would use the unprotected general segments.
For more details on CodeGuard Security functionality, please refer to the CodeGuard Security reference manual for 16-bit devices (DS70180) and dsPIC33F/PIC24H and dsPIC30F device programming specifications found on our website.
To program the preprogrammed devices, MPLAB IDE v8.00 and above provides a Secure Segment tab on the Settings dialog, accessed under either the Programmer or Debugger menu. This tab contains the following options:
· Full Chip Erase/Program
· Segment Programming
· Boot, Secure & General Segments
· Secure,General Segments
· General Segment.
The programming function of this tool is now capable of identifying various device segments and their sizes upon connecting the device. Hence, these options allow you to selectively program the program memory segments and thus avoid accidental eraser of preprogrammed proprietary data (Libraries, IP, etc.)
For Non-CodeGuard Security Devices
When programming these devices, bulk erase commands should be issued between successive programming operations, i.e., erase, then program, then erase, then program, etc. Therefore, Microchip advises against multiple-stage programming sessions which may fail to verify. For example, you should NOT do the following sequence with these devices:
The following is a list of known problems. For information on common problems, error messages and limitations, please see Troubleshooting in the online help file for the MPLAB ICD 3 debugger (hlpMPLABICD3.chm).
· Do not connect to more than one MPLAB ICD 3 unit at a time or attempt to connect two MPLAB IDE sessions to the MPLAB ICD 3 debugger.
· If you do not use the included cables, make sure the cables you do use are: (1) not longer than 6 inches for standard communications or errors could result and (2) USB 2.0 compliant if you will be using USB 2.0 communications.
· Using the USB connection on a laptop PC with hibernate mode enabled will lock up the debugger if hibernate mode is entered. Unplug the USB cable from the MPLAB ICD 3 debugger and then plug the cable back in to resume debugging. You may want to disable hibernate mode while using the debugger. From Control Panel, select "Power Options" and disable hibernate mode.
· Freeze peripherals on Halt is checked and grayed, but some peripherals do not freeze. This is a silicon issue.
ICD3-55: Code gets executed at address 0x01 and 0x02 after reset. Workaround is to add 3 NOPs at the reset vector so if code gets executed there are no adverse effects.
· Freeze Peripherals for PIC16F devices are not supported at this time.
|
PIC18F4620 |
PIC18F84J90 |
PIC18F65J11 |
|
PIC18F63J90 |
PIC18F84J95 |
PIC18F83J11 |
|
PIC18F64J90 |
PIC18F85J90 |
PIC18F84J11 |
|
PIC18F64J95 |
PIC18F63J11 |
PIC18F84J16 |
|
PIC18F65J95 |
PIC18F64J11 |
PIC18F85J11 |
|
PIC18F83J90 |
PIC18F64J16 |
PIC18F8722 |
· For the PIC18F14K22 family, MPLAB IDE debug/programming tools will not work below 1.9v. The work-around is to run the device above 1.9v.
· RI-371: Programming fails on PIC18F13K50/18F14K50 with software breakpoints enabled.
SSR 29399: PIC24F devices can start to run after programming but before verification. This can result in a verification failure if the code performs self-write to either program memory or Data EE.
ICD2-81: For PIC24F devices during a programming/verify operation (or subsequent verification operation) of user code that performs self-writes and/or self-erases to program space, a verify sequence may fail if the code execution occurs within the first execution cycles following reset.
Workaround:
Place a delay in your code before the code section that performs the self-write and/or self-erase. The specific delay value may need to be adjusted, but 100 ms would be a conservative value to start out with. Here is a C language example that illustrates the workaround:
int main (void)
{
// Place 100 ms delay here before any self-write/self-erase code
: : :
}
· When running in debug mode, selecting Debugger>Reset resets the program, goes to the zero location, and halts. The program does not automatically re-run.
· If porting an existing project using MPLAB ICD 2 to the MPLAB ICD 3 debugger, you must do the following:
· Select Project>Build Options>Project. When the dialog opens, click OK. This is necessary to save new Build Options in the project. Previously there had been a checkbox option for "Link for ICD2" on the MPLAB LINK30 tab. This is now gone and has been replaced by a Build Configurations selection (see below.)
· On the Project Manager toolbar select "Debug" from the Build Configurations drop-down list, or from the Project menu select “Build Configurations” and then “Debug”.
· Rebuild the project (Build All).
· Make sure that table reads/writes are not code protected.
· At low Vdd, bulk erase will not erase code protect bits.
Before setting the Stopwatch between any 2 Software breakpoints, ensure that the total number of Hardware breakpoints being used is always 2 less than the Maximum number of Hardware breakpoints available for the device.
1.
RB0 and RB1 pins:
If the MPLAB ICD 3 debugger is selected as a debugger, it initializes all the
A/D input pins - AN0 (RB0) through AN15 (RB15) pins - as "digital"
pins, by setting all 16 bits in the ADPCFG register.
For example, if EMUD3 and EMUC3 are used as the debug pins on a dsPIC30F2010 device, then bits 0 and 1 of the ADPCFG register must remain set at all times. Similarly, if EMUD and EMUC are used as the debug pins on a dsPIC30F5011 device, then bits 6 and 7 of the ADPCFG register must remain set at all times. In such cases, you must also take proper precaution to isolate the application circuitry from the corresponding A/D pins during debugging.
For example, if AN4 and AN5 are required as analog input pins, then bits 4 and 5 of the ADPCFG register must be cleared.
2.
SLEEP, IDLE, WDT, Clock Switching:
For dsPIC devices, debug operations can be executed on programs which use SLEEP
or IDLE mode, Watchdog Timer, and/or Clock Switching.
3.
Debug during SLEEP or IDLE Mode:
When the device is in SLEEP and IDLE mode and a Halt command is issued, the
MPLAB ICD 3 debugger will wake up the device and halt execution on the
instruction immediately following the PWRSAV instruction.
4. Interrupts:
5.
Break Point Behavior:
If a break point is set on an instruction that follows a taken branch, the Breakpoint
will be triggered even though the branch went elsewhere.
6.
Break Point Behavior and Skidding:
It is possible that a breakpoint halt will exhibit program memory skidding in
that the execution stops N instructions after reaching the breakpoint. The following
definitions are provided and referred to:
· One skid - A breakpoint occurs AFTER the instructions is executed (PC+2)
· Two skid - A break point occurs AFTER the NEXT instruction (PC+4)
Break Point Behavior:
· If a Non-Program-Flow, modifying, Single-Word, Two-Cycle instruction (such as Table or PSV) precedes a break point instruction, then the breakpoint occurs BEFORE the instruction at the breakpoint address is executed (ONE SKID).
· All other instructions have a "TWO SKID", which means the break occurs AFTER the NEXT instruction is executed.
7. The CAN module, unlike the other peripherals, does not get frozen in the following situations:
· during a Halt
· during a stop on a Breakpoint
· after a Single-Step
For example, if you set a Breakpoint and run to it, the CAN module continues to run in the background, and it may seem that data transmissions and receptions have completed immediately.
8.
DISICNT register:
In five dsPIC30F devices (dsPIC30F6010, dsPIC30F6011, dsPIC30F6012,
dsPIC30F6013 and dsPIC30F6014), since the DISICNT register continues to
decrement even when the device is halted by the debugger, the DISICNT value
will always be seen as 0x0000 in the Watch, SFR and File Registers windows. To
monitor the DISICNT value, add code to copy the DISICNT register contents to a
W register or memory location and monitor the value of the corresponding W
register or memory location in the Watch, SFR or File Registers window.
9.
ADCMD bit in PMD1 register:
The user application must not set the ADCMD bit (bit 0 of PMD1 register). This
would lead to incorrect ICD operation.
10.
SPLIM register:
When using the MPLAB ICD 3 debugger as a debugger, your software must
initialize the Stack Pointer Limit register (SPLIM) before using the stack
(device errata).
11.
Single-stepping a DO loop:
In five dsPIC30F devices (dsPIC30F6010, dsPIC30F6011, dsPIC30F6012,
dsPIC30F6013 and dsPIC30F6014), single-stepping through a DO loop in dsPIC30F
assembly code results in the loop getting executed one less time than expected.
12.
Pass Counter feature in Advanced Breakpoints:
For a specified Pass count of 'N', the code will break after 'N+1' occurrences
of the breakpoint instead of 'N' occurrences.
13. If you need to use the Fail-Safe Clock Monitor feature on a dsPIC device when using the MPLAB ICD 3 debugger for debugging your application, a Watchdog Timer Device Reset will occur, even if the Watchdog Timer has not been explicitly enabled in the application. To work around this issue, use the "CLRWDT" instruction in the main loop of your application code. This will ensure that the Watchdog Timer gets cleared before it causes the device to reset.
Refer to the data sheet for more information.
Due to the built-in in-circuit debugging capability of ICE devices, and the ICSP function offered by the debugger, the MPLAB ICD 3 in-circuit debugger uses on-chip resources when debugging, i.e., some device resources are reserved for use by the debugger.
Refer to the on-line help for the most up-to-date list of resources used by the debugger.
To see the number of breakpoints supported for your device and the number of breakpoints used in your project, use the Device Debug Resource toolbar. For more on this toolbar, see MPLAB IDE on-line help.
Breakpoint support per device family is as follows:
PIC18F devices – 1 breakpoint
PIC18F Enhanced devices – 3 breakpoints
PIC18FXXJ devices – 3 or 5 breakpoints*
dsPIC30F devices – 2 breakpoints
dsPIC33F/PIC24 devices – 4 breakpoints
PIC32MX devices – 6 breakpoints
* There is a limitation for these devices that only 1 data capture is available.