Release Notes for MPLAB(R) ICD In-Circuit Debugger
Software DLL Version 1.43
Firmware Version 2.31
November 9, 2001

-----------------------------------------------------------------
Table of Contents
-----------------------------------------------------------------
* Device Support List
* Operating System Support List
* What's New in FW v2.31, SW v1.42
* What's New in FW v2.30, SW v1.41
* What's New in FW v2.04, SW v1.31
* Repairs and Enhancements Made in FW 2.31, SW 1.42
* Repairs and Enhancements Made in FW 2.30, SW 1.41
* Repairs and Enhancements Made in FW 2.04, SW 1.31
* Errata on Revision 2 of MPLAB ICD Header Board (ETN 20)
* New Revision of Low Voltage Technical Notice (ETN 21D)
* Known Problems
* Important Notes
* Low Voltage Operation

-----------------------------------------------------------------
Device Support List
-----------------------------------------------------------------
PIC16F870      PIC16F871      PIC16F872      PIC16F873      
PIC16F874      PIC16F876      PIC16F877    

* Indicates new part support in this release

IMPORTANT: If you have a firmware version older than 2.00,
contact your sales office to obtain a firmware upgrade in order
to use MPLAB ICD in-circuit debugger with the PIC16F870/871/872/
873/874.  See KNOWN PROBLEMS in this readme for more information on
limitations of using the older firmware.

-----------------------------------------------------------------
Operating System Support List
-----------------------------------------------------------------
Windows 3.1x   Windows 95     Windows 98     Windows NT
Windows 2000

-----------------------------------------------------------------
What's New in FW v2.31, SW v1.42
-----------------------------------------------------------------
The MPLAB ICD in-circuit debugger dialog may not be closed while
the debugger is enabled. This prevents accidently disabling of
debugger operations. To exit ICD mode or to change to another 
mode, use the Development Mode dialog.

Message reporting has been improved.

-----------------------------------------------------------------
What's New in FW v2.30, SW v1.41
-----------------------------------------------------------------

PIC16F870/871 devices supported.

PIC16F872 devices with date codes the same or greater than 0034
are now supported.  Devices with a date code earlier than 0034 are
subject to Errata DS80076, and will not function unless the MPLAB ICD
is modified as described by the errata.

PIC16F873/874 correctly saves RP0,RP1 on entry/exit of debug
mode. MPLAB ICD in-circuit debugger now checks for target device
in circuit before attempting an operation.

User is now allowed to select firmware file to download to the
MPLAB ICD in-circuit debugger. MPLAB ICD will further verify that
the firmware version matches that indicated by the filename and
warn the user if there is a mismatch.

Programming time improves from 5 minutes @ 5V and 10 minutes @
3.3V to 3 minutes for both voltages.

-----------------------------------------------------------------
What's New in FW v2.04, SW v1.31
-----------------------------------------------------------------

The MPLAB ICD in-circuit debugger now support PIC16F873/874 devices.
They require firmware version 2.00 or later.

Be sure to check the on-line help for important information on
using the MPLAB ICD in-circuit debugger, including a list of
reserved resources. The help also contains instructions on using
the MPLAB ICD in-circuit debugger header or connecting the
MPLAB ICD in-circuit debugger module directly to your target board.

The MPLAB ICD in-circuit debugger now consists of two dialogs.
The MPLAB ICD in-circuit debugger dialog (which must remain open
while the debugger is enabled) is now smaller and movable. The
ICD Options dialog contains the ICD programming and debugging
options. It is accessed by clicking Options from the MPLAB ICD
dialog, and can be moved or closed without closing the debugger.
To save your MPLAB ICD in-circuit debugger dialog frequency and
upload options, change development modes.

-----------------------------------------------------------------
Repairs and Enhancements Made in FW 2.31, SW 1.42
-----------------------------------------------------------------
There is no error report when 1FF is reached.

Erase check errors if only low byte of a word was erased

Update All Registers was not working

-----------------------------------------------------------------
Repairs and Enhancements Made in FW 2.30, SW 1.41
-----------------------------------------------------------------

SSR 4282: Select Debug > Animate. ICD stops animation and halts
if it encounters a hardware breakpoint.

SSR 4283: The BRK ON and BRK OFF in the Status bar at the bottom of
the MPLAB desktop do not work do not turn break points off for the
MPLAB ICD; the breakpoints are always on.

SSR 4536: When a hex file is imported, MPLAB ICD in-circuit debugger
programs it immediately. It should wait until you click the
Program button.

SSR 14229 MPLAB-ICD settings are not saved when you exit MPLAB.
To save your settings, change the development mode before
exiting

-----------------------------------------------------------------
Repairs and Enhancements Made in FW 2.04, SW 1.31
-----------------------------------------------------------------

SSR 4543: The MPLAB ICD in-circuit debugger is now compatible with
Windows NT.

SSR 4404: The Options > Hardware menu item has been removed. Its
functionality has been consolidated under Options>Development Mode.

SSR 4226: Logic has been added to make the MPLAB ICD in-circuit
debugger is more robust.

SSR 4227: If you attempt to perform debugging operations without
enabling the debugger, an error message is displayed. An error
message is also displayed when change projects and the end range
is now shorter than the program length.

SSR 4259: Debug > Clear All Points works properly with MPLAB ICD
in-circuit debugger.

SSR 4293: The Change Program Counter feature has been disabled.

SSR 4522: Startup communications issues have been repaired.

SSR 4537: A read from MPLAB ICD in-circuit debugger now updates
the Program Memory window.

SSR 4539: The COM port are now retained when you restart MPLAB IDE.
Previously, the default setting was being used on startup.

SSR 4541: The MPLAB ICD in-circuit debugger dialog now closes when
you switch to a development mode other than MPLAB ICD in-circuit
debugger.

SSR 4651: After you rebuild a project and attempt to debug, message
reminds you that you must reprogram the  device. A check box in this
message window allows you to disable this message.

SSR 4654: A Reconnect button in the MPLAB ICD in-circuit debugger
dialog allows you to reconnect the ICD with the PC's serial port.

SSR 4720 and 4721: RP0 cannot be cleared while single stepping with
the PIC16F873 and PIC16F874 devices.

SSR 14855: Reading after programming sometime displays "No Target"

-----------------------------------------------------------------
Errata on Revision 2 of MPLAB ICD Header Board (ETN 20)
-----------------------------------------------------------------
Technical Notice ETN 20  which can be downloaded from the Microchip
web site www.microchip.com (go to Development Systems, then to the
MPLAB ICD in-circuit debugger section) covers some incorrect routing
connections on Rev. 2 MPLAB ICD header boards. Briefly, RB6 and RB7
are routed to pins that connect to the target (and so could cause
ICD communication interference on some targets) and the line for
RB3 is not connected properly. This technical note details how these
can be corrected. The newly published revision of the MPLAB ICD
in-circuit debugger User's Guide reflects this information.

-----------------------------------------------------------------
New Revision of Low Voltage Technical Notice (ETN 21D)
-----------------------------------------------------------------
ETN 21 on low voltage was revised March 3, 2000. The revised version
describes the resistor changes necessary to replace the PIC16C73B on
the MPLAB ICD module with a reprogrammable PIC16F876. This allows
you to upgrade the MPLAB ICD module's firmware (operating system)
within MPLAB by using the Download ICD Operating System button in
the MPLAB ICD Options dialog.

-----------------------------------------------------------------
Known Problems
-----------------------------------------------------------------

The following is a list of known problems, some by SSR number.
For a list of limitations, please see MPLAB ICD Help, 
Troubleshooting, Device Debug Limitations.


PRE-2.00 FIRMWARE PROBLEMS
--------------------------
Only the PIC16F876/877 are supported with the pre-2.00 firmware.
You must upgrade your firmware in order to get new device support.

If you have a firmware version older than 2.00, you will get a
communications error if you perform a blank check on a non-blank
device.

The older firmware versions experience communications errors when
entering the ICD development mode with debug mode disabled. If you
encounter this problem, first click the Reconnect button in the
MPLAB ICD dialog to attempt to re-establish communications. If this
doesn't work, check mark Enable Debug Mode in the MPLAB ICD in-circuit
debugger Options dialog, select Options > Development Mode. Select
Editor Only and click Apply, then select MPLAB ICD and click OK
to re-enter the MPLAB ICD mode and resume debugging.

Contact your sales office to obtain a firmware upgrade to resolve
these problems.

SSR's
-----
SSR 4284: Debug > Break Settings should only allow users to checkmark
one breakpoint with the MPLAB ICD in-circuit debugger. The ICD mode
only supports one breakpoint.

SSR 9182: MPLAB ICD executes user code during a Reset operation.

SSR 14642: Error on MPLAB ICD operating system download causes MPLAB
ICD to no longer function. If, while downloading a new MPLAB ICD
operating system, a communications error occurs, the download will
fail and MPLAB ICD in-circuit debugger will no longer function.

Fix: Reprogram the PIC16F876 on the MPLAB ICD module with another
programmer (i.e., PRO MATE II development programmer). Use the file
MPL876.HEX from the MPLAB IDE installation directory. The PIC16F876
must be removed from the module to reprogram, and then reinserted
after programming.

SSR 14465: PIC16F872 devices must have a date code of 0034 or later to
work in MPLAB ICD.

SSR 14429: If user's program occupies last available address
(before the debug code), an error is displayed when the Program
button is hit. The error is erroneous.

SSR 14627: LED on ICD module sometimes goes solid before communications
are established. If you are unsure, hit the Reconnect button.

SSR 14357: When in MPLAB ICD mode in MPLAB IDE, hot keys do not work.

SSR 14723: Versions of MPLAB IDE greater than 5.11.00 (5.11.02 &
5.11.03) can have the MPLAB IDE status bar and the OPTIONS > DEVELOPMENT
MODE > TOOLS processor window display one processor and the MPLAB ICD
options window display a different processor. What effect this has
on the performance of the MPLAB ICD in-circuit debugger at this time
is unknown. For example, in a Microsoft Windows 98 environment, the
MPLAB ICD in-circuit debugger options window shows PIC16F877, but the
MPLAB IDE status bar and the OPTIONS > DEVELOPMENT MODE > TOOLS processor
window show a PIC16F874. The problem can be consistantly reproduced by
performing the following steps:

1. Open the OPTIONS>DEVELOPMENT MODE > TOOLS dialog and select NONE
(Editor Only) or the MPLAB SIM Simulator mode. Select any processor
other than the PIC16F877. Do not hit the OK or Apply buttons.

2. In the OPTIONS>DEVELOPMENT MODE>TOOLS dialog, select the MPLAB ICD
Debugger mode. Do not select a processor, it will default to the
PIC16F877. Click the OK or Apply buttons. (To see the problem in the
OPTIONS > DEVELOPMENT MODE > TOOLS PROCESSOR window, you need to close
and reopen the OPTIONS>DEVELOPMENT MODE>TOOLS dialog.)

The key factor in reproducing this problem is not selecting a processor
in MPLAB ICD debugger mode, but to use the default processor, PIC16F877.

The work-around for this problem is to always select the processor
when going into MPLAB ICD mode, even if the processor is the PIC16F877.

SSR 14855: The "NO TARGET" message comes up and you can not perform the
function you are trying to perform with out using the "RECONNECT"
button and trying again. This seems to happen every other time you
try to perform a function if both the "CONFIGURATION BITS" and "ID
LOCATIONS" Program Options are turned OFF.  This problem is occurring
with both the MPLAB IDE 5.11.02, MPLAB ICD 1.32.03, MPLAB ICD F/W
2.21.02 and MPLAB 5.11.11, MPLAB ICD 1.40.00, ICD F/W 2.30.00. The
Following describes how to recreate the problem:
1)  Started MPLAB IDE and set mode for MPLAB ICD.
2)  Turned all Program Options OFF except "EEPROM Data."
3)  Clicked on the "PROGRAM" Button - It worked OK.
4)  Clicked on the "READ" Button - Got "NO TARGET" error.
5)  Clicked on the "RECONNECT" Button
6)  Clicked on the "READ" Button - It worked OK.
7)  Clicked on the "PROGRAM" Button - Got "NO TARGET" error.
8)  Turned ON either the "CONFIGURATION BITS" or "ID LOCATIONS"
    Program Options and it repeatedly worked OK.
9)  Turned OFF  the "CONFIGURATION BITS" and  "ID LOCATIONS"  and
    the above problem returned.
10) AT one point for no apparent reason that I could determine the
    problem disappeared but if I exited from MPLAB IDE and started
    from scratch again it came back. When the problem disappeared it
    seemed to be programming the program memory even though the
    "Program Memory" Program Option was turned off.  I have not been
    able to get it back in this mode.

SSR 14807: The operating frequency range of the MPLAB ICD will revert to
the default setting, 2MHZ-10MHz, each time you start MPLAB IDE. If you 
choose another setting, it will be in effect only until you exit and 
restart MPLAB IDE. Then the MPLAB ICD dialog window will still display 
the last setting you chose, but the actual operating frequency range will 
revert to 2MHz-10MHz. You must reselect the operating frequency range 
each time you launch MPLAB IDE.

SSR 16138: When changing development mode from a smaller memory device 
to a larger memory device, the Program Options End Address is not changed.

SSR 16155: A single step when RCIF is set will clear the bit.

-----------------------------------------------------------------
Important Notes
-----------------------------------------------------------------
- When single stepping, the timers will not advance properly. Due
to the internal software monitor, extra cycles execute on debug
functions.

- You cannot single step through code that writes to the internal
program or EEDATA area. Either incorrect data will be written to
the memory, or no data will be written.  You must execute the
writes in Run mode in order for them to execute properly.

- With the design of the MPLAB ICD, it is IMPOSSIBLE to single step
through an interrupt. Due to hardware restrictions, it is IMPOSSIBLE
to jump to the interrupt vector memory location while doing a single
step function.

- You cannot perform a Debug > Run > Step Over operation with the
MPLAB ICD in-circuit debugger. This is an inherent limitation due to
the designs of the Step Over function and the MPLAB ICD in-circuit
debugger.

- See the Microchip Tech Brief TB033, "Using the PIC16F877 to Develop
Code for PIC16CXXX Devices" (Microchip number DS91033A) for information
on using the MPLAB ICD to do code development for other Microchip
PICmicro MCUs.  This document is available from the Microchip web site,
www.microchip.com.

- Do not execute a SLEEP instruction when using MPLAB ICD in-circuit
debugger in debug mode. Executing a SLEEP instruction causes MPLAB ICD
to hang, issuing an "MPLAB ICD communication failed" error. You must
perform a RESET to restore debugging operations when this occurs.

- MPLAB IDE provides a separate linker script file that reserves
the resources used by the MPLAB ICD in-circuit debugger (16f877i.lkr).
Customers that are using the MPLAB ICD should use this file instead
of the standard linker files.

-----------------------------------------------------------------
Low Voltage Operation
-----------------------------------------------------------------
When using the MPLAB ICD with a target voltage of less than 4.5v,
be sure to do the following:
 1.Turn off the Erase All Before Program feature under the
   Program Options.
 2.Make sure all code protect features are turned off. Once the
   device has code protect turned ON, you will need a 4.5v target
   voltage to clear it.
 3.It is recommended to set the End Address under the Program
   Options to a little past the end of your code to save
   programming time.

CAUTION: DO NOT USE the ERASE or Erase All Before Programming
Function. If you do, you will not be able to reprogram the device
until you supply a 4.5v target voltage.
