The PICkit™ 1 FLASH Starter Kit is a little low cost development board manufactured by Microchip, supporting some 8 and 14 pins 8-bits PIC microcontrollers. The board was designed for learning and experimenting with PIC microcontrollers and only cost $35 (or €30).
The board is contains eight LEDs, a switch and a potentiometer which are directly connected to the chip. The chip is programmed by another PIC (a 16C745) connected to the computer through an USB link. All the board is powered by the USB link, there is no need for any external power supply. Two PICs are included: a 12F675 and a 16F684.
On the right, an unpopulated prototype board is present designed for interfacing an RS-232 connection with a PIC.
Schematics of the board, firmware source code and Windows programmer source code are available on the Microchip website.
Tools provided by microchip only work on Windows, that's why the existence of usb_pickit, an Open Source programmer for PICkit 1 working on Linux.
usb_pickit was originally written by Orion Sky Lawlor in 2003. Jeff Boly released the version 1.5 with some new features and Mark Rages contributions. This version is based on Jeff's one.
I (David Henry) was interested in how the programmer worked, and how I could eventually improve it or add support for some new devices, so I started to make some changes. I have fixed a libusb problem on 2.6.15 kernel and newers (the hid driver always claimed the interface). Writing to the device is now faster (the programmer sends two words by USB paquet instead of one). The code changed a lot too (program's architecture, coding style, comments, use of libpopt, etc.). I also looked at how to make it compile and run under Windows, with the help of various Xiaofan Chen patches and notes on the microchip forum. I included some examples for 12F675 and a 16F684 devices.
There are other programmers for PICkit 1 and this version probably doesn't bring revolutionnary changes, but since I modified it, I release it.
It should work with Linux kernels >= 2.6.15, but it really depends on the evolution of the Linux kernel and libusb... which often break. It was used to work on MacOS X, but since I haven't a Mac, I can't say if it's still the case. Any feedback about it would be appreciated.
NOTE: you need the firmware version 2.0.2 onboard of the programmer chip (any recent PICkit board will have it).
usb_pickit 1.6 is no longer released under “Public Domain” but under the MIT license. For respectful programers who don't remove the author names from the source files, nothing should change :)
You can download usb_pickit 1.6 for Linux here: (for Windows version, see below)
Here is the list of programmer's main features:
Here is the list of supported devices by the programmer. Devices marked with an “*” support OscCal regeneration. Some of them require an adapter:
usb_pickit 1.6 can work with libusb-win32. It compiles with MinGW and probably with nothing else. You need first to install the usb_pickit's libusb-win32 driver. Then you can run the program:
The Windows package contains the usb_pickit win32 binary and its dependencies (popt1.dll, libiconv-2.dll and libintl-2.dll). Popt for Windows and its dependencies have been taken from Popt's page.
The Windows version is not officially supported. Please don't wait from me to correct bugs unless you have a patch or know exactly what is broken and how it could be fixed.
The version 1.6 is based on Jeff Boly's version 1.5, which was based on Orion Sky Lawlor's original program. You may find some interesting links on these pages:
Some examples for the PICkit 1 are included in the usn_pickit 1.6 package. You can also grab them separately here:
The GPUTILS project provides tools for programming PIC microcontrollers, such as the gpasm assembler (compatible with MPASM) and gpdasm disassembler.
gpsim is a full-featured software simulator for Microchip PIC microcontrollers.
Any feedback, patch or suggestion about the usb_pickit version 1.6 is appreciated. You can contact me at tfc.duke, (AT) gmail, (DOT) com. (french/english).
Return to David Henry's homepage.