How does the Microchip ICD Work?

Myke Predko says:

When I was doing the second edition of my PICmicro microcontroller book, I did some hacking of the ICD Interface and I found that in "ICD mode", all the hardware registers could be written to, but any changes to them didn't take effect until *after* a "return" instruction was executed.

While the PICmicro MCU was in ICD mode the only hardware resources that could be accessed correctly were:

  1. RB6/RB7 via 0x0106. Only the Programming "Data" pin's TRIS bit could be changed. The Clock bit stayed in input mode.
  2. Program memory flash read/write controls.
  3. ICKBUG and BIGBUG (according to DS51242A - I didn't have this document when I was playing around with it so I called the registers "Reserve_E" and "Reserve_F") could be read and written before executing a "return" to return to the executing application.
  4. STATUS, PCLATH, FSR
  5. All File Registers

If you are interested in seeing what I found, Take a look at pages 650 to 652 of the book. On the CD-ROM, in the EMU-II directory, you will find the source code that I created from the 256 instructions inserted into the ICD by the controller.

Questions:

Comments: