dsPIC33F/PIC24H PROGRAMMING SPECIFICATION
FIGURE 3-3:
ENTERING ENHANCED ICSP™ MODE
P6
P19
P7
P14
VIH
VIH
MCLR
VDD
Program/Verify Entry Code = 0x4D434850
0
1
0
0
1
0
0
0
0
...
PGD
b31 b30 b29 b28 b27
b3
b2
b1
b0
PGC
P1A
P1B
P18
3.4
Blank Check
3.5
3.5.1
Code Memory Programming
The term “Blank Check” implies verifying that the
device has been successfully erased and has no
programmed memory locations. A blank or erased
memory location is always read as a ‘1’.
PROGRAMMING METHODOLOGY
Code memory is programmed with the PROGP
command. PROGPprograms one row of code memory
starting from the memory address specified in the
command. The number of PROGPcommands required
to program a device depends on the number of write
blocks that must be programmed in the device.
The Device ID registers (0xFF0000:0xFF0002) can be
ignored by the Blank Check since this region stores
device information that cannot be erased. The device
Configuration registers are also ignored by the Blank
Check. Additionally, all unimplemented memory space
should be ignored from the Blank Check.
A flowchart for programming code memory is shown in
Figure 3-4. In this example, all 88K instruction words of
a dsPIC33F/PIC24H device are programmed. First, the
number of commands to send (called ‘RemainingC-
mds’ in the flowchart) is set to 1368 and the destination
address (called ‘BaseAddress’) is set to ‘0’. Next, one
write block in the device is programmed with a PROGP
command. Each PROGP command contains data for
one row of code memory of the dsPIC33F/PIC24H.
After the first command is processed successfully,
‘RemainingCmds’ is decremented by ‘1’ and compared
with ‘0’. Since there are more PROGP commands to
send, ‘BaseAddress’ is incremented by 0x80 to point to
the next row of memory.
The QBLANKcommand is used for the Blank Check. It
determines if the code memory is erased by testing
these memory regions. A ‘BLANK’ or ‘NOT BLANK’
response is returned. If it is determined that the device
is not blank, it must be erased before attempting to
program the chip.
On the second PROGP command, the second row is
programmed. This process is repeated until the entire
device is programmed..
Note:
If a bootloader needs to be programmed,
the bootloader code must not be pro-
grammed into the first page of code mem-
ory. For example, if a bootloader located at
address 0x200 attempts to erase the first
page, it would inadvertently erase itself.
Instead, program the bootloader into the
second page, e.g. 0x400.
© 2007 Microchip Technology Inc.
Preliminary
DS70152D-page 35