PIC12F635/PIC16F636/639
12.15 In-Circuit Serial Programming
12.16 In-Circuit Debugger
The PIC12F635/PIC16F636/639 microcontrollers can
be serially programmed while in the end application
circuit. This is simply done with two lines for clock and
data and three other lines for:
Since in-circuit debugging requires the loss of clock,
data and MCLR pins, MPLAB® ICD 2 development with
a 14-pin device is not practical. A special 20-pin
PIC16F636 ICD device is used with MPLAB ICD 2 to
provide separate clock, data and MCLR pins and frees
all normally available pins to the user.
• Power
• Ground
Use of the ICD device requires the purchase of a
special header. On the top of the header is an
MPLAB ICD 2 connector. On the bottom of the
header is a 14-pin socket that plugs into the user’s
target via the 14-pin stand-off connector.
• Programming Voltage
This allows customers to manufacture boards with
unprogrammed devices and then program the
microcontroller just before shipping the product. This
also allows the most recent firmware or a custom
firmware to be programmed.
When the ICD pin on the PIC16F636 ICD device is held
low, the In-Circuit Debugger functionality is enabled.
This function allows simple debugging functions when
used with MPLAB ICD 2. When the microcontroller has
this feature enabled, some of the resources are not
available for general use. Table 12-9 shows which
features are consumed by the background debugger:
The device is placed into a Program/Verify mode by hold-
ing the RA0 and RA1 pins low, while raising the MCLR
(VPP) pin from VIL to VIHH. See the “PIC12F6XX/16F6XX
Memory Programming Specification” (DS41204) for
more information. RA0 becomes the programming data
and RA1 becomes the programming clock. Both RA0
and RA1 are Schmitt Trigger inputs in this mode.
TABLE 12-9: DEBUGGER RESOURCES
After Reset, to place the device into Program/Verify
mode, the Program Counter (PC) is at location 00h. A
6-bit command is then supplied to the device.
Depending on the command, 14 bits of program data
are then supplied to or from the device, depending on
whether the command was a load or a read. For
complete details of serial programming, please refer to
the “PIC12F6XX/16F6XX Memory Programming
Specification” (DS41204).
Resource
I/O pins
Stack
Description
ICDCLK, ICDDATA
1 level
Program Memory Address 0h must be NOP
700h-7FFh
For more information, see the “MPLAB® ICD 2 In-Circuit
Debugger User’s Guide” (DS51331), available on
Microchip’s web site (www.microchip.com).
A typical In-Circuit Serial Programming connection is
shown in Figure 12-11.
FIGURE 12-12:
20-Pin PDIP
20-PIN ICD PINOUT
FIGURE 12-11:
TYPICAL IN-CIRCUIT
SERIAL PROGRAMMING
CONNECTION
In-Circuit Debug Device
To Normal
1
20
NC
ICDMCLR/VPP
VDD
ICDCLK
ICDDATA
VSS
RA0
RA1
RA2
RC0
RC1
RC2
Connections
2
3
4
5
6
7
8
9
19
18
17
16
15
14
13
12
External
Connector
Signals
*
RA5
RA4
RA3
RC5
RC4
RC3
PIC16F636
+5V
0V
VDD
VSS
VPP
MCLR/VPP/RA3
RA1
RA0
CLK
10
11
ICD
ENPORT
Data I/O
*
*
*
To Normal
Connections
*Isolation devices (as required).
© 2007 Microchip Technology Inc.
DS41232D-page 147