Release Notes for PICkit™ 3
Development (nonproduction) Programmer &
In-Circuit Debugger
MPLAB® X IDE v2.20
DLL and Firmware versions:
PICkit 3 Suite (OS, FW) | v01.33.20 | (PK3FW_013320.jam) |
September 2, 2014
Table of Contents
5 Repairs and Enhancements Made in v2.20
9 Number of Hardware Breakpoints per Device
Click the link below to see device support for “PICkit 3 Debugging” (PK3D) and “PICkit 3 Programming” (PK3P).
For device family feature support, see the debugger on-line help file, “Device and Feature Support”.
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 be 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.
See the Readme for MPLAB X IDE.htm for other support information.
The following documents may be found on our website:
· Using PICkit 3 In-Circuit Debugger for MPLAB X IDE (DS52010)
· PICkit 3 Programmer/Debugger User's Guide for MPLAB X IDE (Help Only)
· Development Tools Design Advisory (DS51764)
· Header Board Specification (DS51292)
· Transition Socket Specification (DS51194)
On-line help may be found in MPLAB X IDE under Help>Help Contents.
· PK3-354 - PK3 fails to connect to device after the VDD "warning" message appears, even though the measured voltage is well within the allowed voltage range 12F607
· PK3- 352 - MPLAB X IDE reports Failed to get Device ID for certain devices when powering the device from PICkit 3. (PIC16F1503, PIC16F1507, PIC16F1508, PIC16F723A)
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 PICkit 3.
Some applications, plug-ins or widgets may take control of, or interfere with, the system provided HID USB driver, which can cause problems communicating with the PICkit 3. If you cannot connect to the PICkit 3, review the Task Manager for these types of programs and close them.
For more information, see forum posts:
http://www.microchip.com/forums/m614572-p2.aspx
http://forums.ni.com/t5/Multifunction-DAQ/No-supported-devices-found/td-p/1856299/page/2
On PIC16F88X devices it is necessary to pull the RB3/PGM pin low for ICSP programming. This is due to a silicon issue.
If you cannot enter debug mode with one of the devices listed below, set the PWRTE (Power-Up Timer Enable bit) to DISABLED.
PIC16F1937 / PIC16LF1937
PIC16F1936 / PIC16LF1936
PIC16F1934 / PIC16LF1934
For the following Processor Extension Pak products:
AC244026 - PIC16F727-ICE Processor Extension Pak
AC244027 - PIC16LF727-ICE Processor Extension Pak
Physically isolate the Processor Extension Pak’s target /MCLR signal from any connection(s) to the board being debugged. (For example, if a simple pull-up resistor reset circuit is connected between /MCLR and Vdd, completely isolate it by removing the pull-up resistor.)
Watch window – It will take 1 cycle for the watch window to update properly for PORTx registers. Use an instruction that reads the port such as ‘MOVFF PORTx, PORTx_copy’ before the breakpoint is reached. This affects the following devices:
PIC18F4620 |
PIC18F84J90 |
PIC18F65J11 |
PIC18F63J90 |
PIC18F84J95 |
PIC18F83J11 |
PIC18F64J90 |
PIC18F85J90 |
PIC18F84J11 |
PIC18F64J95 |
PIC18F63J11 |
PIC18F84J16 |
PIC18F65J95 |
PIC18F64J11 |
PIC18F85J11 |
PIC18F83J90 |
PIC18F64J16 |
PIC18F8722 |
For the PIC18F14K22 family, MPLAB X IDE debug/programming tools will not work below 1.9v. The work-around is to run the device above 1.9v.
PIC18F2520 MCUs: Table Read Protect (EBTRx) will not work unless Code Protect (CPx) is enabled. Also, once Table Read Protect is enabled, you cannot perform a Verify on the protected block.
For PIC18F8720, MEMCON cannot be read if in a microcontroller mode. This is a silicon issue.
PIC18F45K20/46K20 MCU family: There is a silicon issue that prevents some device revisions from being programmed with "power from programmer". The workaround is to use "power from target" OR increase the capacitance across VDD, VSS (for example to 47uF.)
See Section 6.6 SSRs (System Service Requests).
PICkit 3 does not support preserve EEPROM memory during programming.
Stopwatches don’t work on PICkit 3.
If there is a Software breakpoint on a function that is in Auxiliary memory, single stepping over that breakpoint will not work properly.
Verifying Auxiliary memory sometimes will proceed even when verifying Program Memory has failed.
When programming in Debugger mode, a message may come up that protection bits need to be turned off even though they show as being turned off in the Configuration Bits window.
The following is a list of issues that are being tracked for this tool.
Key |
Summary |
Device |
PK3-355 |
Issue entering debug mode at or below 2.0V on some 'LF' enhanced Mid-Range devices. |
PIC16LF1613, PIC16LF1614, PIC16LF1618 |
PK3-353 |
PICkit3 unable to set certain voltages for dsPIC30F2011 when powering the target from PICkit 3. |
dsPIC30F2011 |
PK3-348 |
Low-Voltage Programming will not work on the following devices. This is because of a known errata on some versions of the devices. Device Revision Errata Document PIC12F/LF1822 Rev 6 DS-80502 Rev E PIC16F/LF1823 Rev 6 DS-80502 Rev E PIC16F/LF1824 Rev A1 DS-80000510 Rev J PIC16F/LF1828 Rev A1 DS-80000510 Rev J PIC16F/LF1933 Rev A1, A2, A3 DS-80000490 Rev M Errata Summary: Bulk Erase Feature not available with Low-Voltage Programming mode. A bulk erase of the program Flash memory or data memory cannot be executed in Low-Voltage Programming mode. Workaround: Method 1: If ICSP Low-Voltage Programming mode is required, use row erases to erase the program memory, as described in the Program/Verify mode section of the Programming Specification. Data memory must be over-written with the desired values. Method 2: Use ICSP High-Voltage Programming mode if a bulk erase is required. |
PIC12F1822, PIC12LF1822, PIC16F1823, PIC16LF1823, PIC16F1824, PIC16LF1824, PIC16F1828, PIC16LF1828, PIC16F1933, PIC16LF1933 |
PK3-345 |
For dsPIC30F4012, error message 'Failed to read device' rendered when attempting to read the device in a debug session (debug mode read). |
dsPIC30F4012 |
PK3-343 |
Cannot debug using the AC162054 (PIC16F716) header on PICkit 3. |
PIC16F716 |
PK3-342 |
PICkit 3 Failed to Get Device ID for PIC16F690 on the DM164120-1 - PICkit Low Pin Count Demo Board at 5V. Works at 4.75 V. |
|
PK3-341 |
Invoking MPLAB X IDE Reset in debug mode fails to reset the part to the device reset vector at Vdd min. |
All Enhanced Mid-Range Parts and related headers. |
PK3-328 |
Communications to PICkit 3 fails if programming with preserve EE is checked for the dsPIC30F devices. |
dsPIC30F6011A |
PK3-316 |
PK3CMD.exe operation without PICkit 3 connected locks up PK3CMD.exe |
|
PK3-314 |
MPLAB IDE debug mode reset fails around Vdd minimum voltages. |
PIC16F1939 (affects entire Enhanced Midrange firmware) |
PK3-310 |
PICkit3 cannot program PIC18F97J94 device if a 64 MHz oscillator is connected. As the frequency is reduced the occurrence is less frequent. |
PIC18F97J94 device family |
PK3-303 |
The last Program memory location is ignored for a verify cycle if “Allow PICkit 3 to select memories” option is selected under programmer settings. Workaround: Go to programmer settings, and manually select memories and ranges. Check the appropriate memories to verify and ensure to click full range for program memory. |
PIC12F1822 |
PK3-291 |
MPLAB reports errors sending image to the PICkit 3 in the
'Programmer To Go' (PTG) mode for the PIC24EP256GU814 device if the user
selects "automatically select memories and ranges". |
PIC24EP256GU814 |
PK3-284 |
PICkit 3 fails to program the ID memory in debug mode for the PIC18F46K22 and PIC18F46K80 family devices. |
PIC18F46K22, PIC18F46K80 family |
PK3-245 |
"[MPLAB IDE 8] If you select the PICkit 3 as a programmer in MPLAB IDE but the PICkit 3 is not physically connected, selecting 'Reconnect' will give you the incorrect message that PICkit 3 was detected and failure to connect is reported. |
|
PK3-116 |
For the PIC24FJXXGA00X family of devices, the unimplemented upper bits in the configuration word are programmed to a "0" instead of "1". |
PIC24FJ64GA004 and most likely the whole family |
The following is a list of issues that are being tracked for other tools but are related to this tool.
Key |
Summary |
Device |
||||||||||||||||
ICD3-369 |
For PIC16F570 (header AC244062), there is no debug visibility into GPR banks 4, 5, 6 and 7, although user access to these banks works. |
PIC16F570 |
||||||||||||||||
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 : : : }
|
PIC24F |
||||||||||||||||
TBAA0-199 |
When reading a device with a programmer, code or write protection applied to either the General or Auxiliary Segment is being applied to both; therefore all flash memory will read back as zero. Only devices with no code or write protection applied can be successfully read using a programmer. This limitation applies to revision B1 (0x4002) of the following devices: PIC24EP512GU814 PIC24EP512GU810 PIC24EP256GU814 PIC24EP256GU810 dsPIC33EP512MU814 dsPIC33EP512MU810 dsPIC33EP256MU814 dsPIC33EP256MU810 dsPIC33EP256MU806 PIC24EP512GP806 dsPIC33EP512GP806 dsPIC33EP512MC806 |
PIC24EP/ dsPIC33EP |
||||||||||||||||
SPI001-113 |
SPI misses SDI input when single-stepping with freeze in debug enabled. |
General |
||||||||||||||||
RI-412 |
PIC24FJ256DA210 Family: Data Memory not functional unless 96 MHz PLL is enabled. This is a silicon issue that is being worked on. |
PIC24F |
||||||||||||||||
RI-400 |
If you are not able to enter debug mode when power-up timer is enabled for the following devices, please disable power-up timer during the debugging session. (If the final application firmware requires power-up timer enabled, please enable it after the debugging session is complete and program the part with the final application firmware.) PIC18F4620/4610/2620/2610 PIC18F4680/2680/4681/2681 PIC18F4520/4420/2520/2420 PIC18F4550/2550/4455/2455 PIC18F8490/8410/6490/6410/8390/8310/6390/6310 PIC18F8722/8627/8622/8527/6722/6627/6622/6527 PIC18F2525/4525 PIC18F87K90/PIC18F86K90/PIC18F85K90/PIC18F67K90/PIC18F66K90/PIC18F65K90 PIC18F87K22/PIC18F86K22/PIC18F85K22/PIC18F67K22/PIC18F66K22/PIC18F65K22 |
PIC18 |
||||||||||||||||
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. |
PIC24F |
||||||||||||||||
26344 |
Below 4.5 V, PICkit will not overprogram User ID's on these devices:
|
PIC12/16 |
||||||||||||||||
UART002-175 |
Don't read the FIFO when single stepping in debug mode. The FIFO should get set back to the user mode pointer when exiting debug, but instead it just keeps incrementing on its own. Work-around: Always reads the full FIFO. |
dsPIC33EP512MC20x, dsPIC33EP512MC50x, dsPIC33EP512GP50x |
For the following Processor Extension Pak products:
AC244026 PIC16F727-ICE Processor Extension Pak
AC244027 PIC16LF727-ICE Processor Extension Pak
Full debugging support is not available for the PICkit 3 at this time when using the above Processor Extension Paks. Full PICkit 3 support is planned for a future MPLAB release.
Workaround: use either the MPLAB ICD 3 or MPLAB REAL ICE tool if debugging support is needed for these products.
The following ETNs are related to the PICkit 3 in-circuit debugger. Please see the product webpage for details.
ETN-32: Applies to Assembly #10-00424-R4 or below.
1.
RB0 and RB1 pins:
If the PICkit 3 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
PICkit 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 ICE operation.
10. SPLIM
register:
When using the PICkit 3 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 PICkit 3 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.
14. For PIC16F616 devices PICkit 3 does not row erase the device below 4.5V. A bulk erase will be required which must take place with Vdd above 4.5V. (ICD3-125)
Due to the built-in in-circuit debugging capability of some devices, and the ICSP function offered by the debugger, the PICkit 3 in-circuit debugger uses on-chip resources when debugging, i.e., some device resources are reserved for use by the debugger. For a list of reserved resources by device for the debugger, click the link below.
PICkit 3 In-Circuit Debugger Reserved Resources
To see the number of breakpoints supported for your device and the number of breakpoints used in your project, use the Dashboard window (Window>Dashboard).
Breakpoint support per device is as follows:
Devices |
Number of Breakpoints |
PIC12F/16F |
1 |
PIC16F1xxx enhanced |
3 |
PIC18F |
1 |
PIC18F enhanced |
3 |
PIC18FxxJ |
3 or 5 (Note 1) |
dsPIC30F |
2 |
dsPIC33F/PIC24H/F |
4 |
dsPIC33EP/PIC24EP |
2 |
dsPIC33EP/PIC24EPxxxxx8xx: |
3 |
PIC32MX |
6 |
Note 1: There is a limitation for these devices that only 1 data capture is available.