PIC Application

Read, program, erase PIC chips. Originally targetted at 16-bit families (i.e., PIC24H, dsPIC33F, PIC24F, and dsPIC30F), but now moving in the 8-bit and 32-bit directions.

Clients

goodfet.pic is a decent but unstable client. You can expect its command-line arguments to change as new chip families become supported and as the PIC app evolves.

A Python class that subsumes goodfet.pic (whereby goodfet.pic will become a mere frontend to several methods of the class) is in the works. Stay tuned.

Status

ICSP likely supported families

FamilyComments
PIC24F
dsPIC33F
PIC24H

Specific chips tested

ChipComments
PIC24FJ64GA002
PIC24FJ128DA106
dsPIC33FJ128GP708
dsPIC33FJ128GP710
PIC24HJ12GP201

Development

Coming soon!

Verbs

The following verbs are supported. Note that the standard verbs are currently not implemented in their < 0x80 address (confer the manual). The PIC app is still young and, given variations in access methods across chip families, it is not ready to commit to standard verbs.

Naming conventions:

Hex#defineDescription
0x81PIC_DEVID33FRead Device ID, application ID, and hardware revision.
0x82PIC_SIX33FICSP six command; execute instruction on target (sourcing clock from PGC).
0x83PIC_REGOUT33FRead out VISI register.
0x84PIC_START33FStart ICSP session.
0x85PIC_STOP33FStop ICSP session (basically, drop !MCLR pin and pause briefly).
0x86PIC_SIXLIST33FBuffer list of instructions to MSP430, then execute them over ICSP session with target dsPIC33F/PIC24H chip. This reduces overhead of UART communication between client and app.
0x87PIC_RESET33FReset attached dsPIC33F/PIC24H chip
0x88PIC_CMDLISTSame as PIC_SIXLIST33F, but with an ICSP command before each instruction.