Microchip(tm) PIC(tm) Microcontrollers
UPDATE (2006/01)
My little usb_pickit program sparked a lot of interest.
Several other people are now maintaining newer, better versions:
- Jeff Boly's
usb_pickit 1.5 supports programming many more chips than my version,
works reliably with the 2.0.2 firmware, and provides up-to-date
Mac OS X and Linux binaries for command-line access.
- Andrew
Rahn's 2004/12 version supports the 2.0 firmware on Mac OS X, and
includes a basic GUI.
- Eric Brunstad has yet
another version of the code with a simple Mac OS X graphical interface.
- Jeff Post's
pk2 supports Microchip's newer PicKit 2.
Benjamin Brooking has a Mac OS X binary at picosx.
- Mark
Rages' pyk is a Python program to talk to the pickit 1 or 2.
- The pickit-devel
mailing list hosts discussions and announcements on drivers
for the USB pickit family.
Introduction
A microcontroller
is a little programmable chunk
of silicon, often used to provide the logic behind
an appliance like a microwave or washing machine.
They're generally tiny, self-contained, stripped-down,
cheap, and highly robust machines. Most consist of
exactly one chip, which includes ROM, RAM, CPU, and I/O.
Microchip is one
of the larger microcontroller manufacturers.
Until a month ago, I'd never played with any of their
stuff.
Microchip(tm) PICkit(tm) 1 FLASH Starter Kit
Microchip recently released this little self-contained
USB chip programmer, the "PICkit 1".
It's a pretty standard box as far as device programmers
go-- you plug in a tiny chip into the socket in the middle,
and send the tiny chip's program to the programmer from a
real computer. The cool thing is the price-- just $35!
It comes with a bunch of Windows software, available
at
the Microchip driver page. I prefer HI-TECH's free
PICClite
compiler, which works with Linux.
I've written a little UNIX command-line utility program to
control the PICkit 1 device programmer over the USB port
called "usb_pickit". It can upload or download programs
from standard Intel .hex files to/from the PICkit's chip.
usb_pickit includes source, and is issued under my
totally free licence.
I'm in no way affiliated with Microchip, so don't think
this is a supported product.
ChangeLog
- 2004/11/12: USB PICkit 1.21.tgz.
Added *beta* support for version 2.0 of the PICkit
onboard firmware. Thanks to Mattew Wilson for sending
me a v2.0 16C745! Dunno if it'll work with new 10F devices.
WARNING: *programming* 12F and 16F devices seems to work;
but --extract hangs a new board hard: you've got to unplug
and replug the USB connector to make it work again.
I'll read the new documentation and try to make 2.0 really
work within a few months; patches are certainly welcome.
Added small startup bugfix pointed out by Curtis Sell.
Previously, if the chip power was not off, programming
or even configuration read could fail intermittently.
usb_pickit now turns power off before doing anything.
Added --on and --off commands, as suggested by Rogier Wolff
to turn off the annoying blinking lights.
Fixed command-line handling so USB isn't touched unless
you've specifically asked usb_pickit to do something.
MacOS X version is unchanged, since my OS X machine has
moved to Alaska, but I haven't (yet!).
- 2004/2/6: USB PICkit 1.2.tgz.
Updated to latest libusb to use USB interrupt mode.
This should fix an "invalid argument" error using
the latest Linux kernels. Thanks to Steven Michalske
for diagnosing the cause of this problem.
RANT: In an excellent example of sacrificing backward compatability
for conformance to some proported "standard", the latest Linux
kernel USB drivers (uhci-alternate in 2.4.24+, and uhci in 2.6.x)
no longer support low speed bulk mode transfers-- they give
"invalid argument", errno=-22, on any attempt to do a low speed
bulk write. The fix is to use USB interrupt mode transfers, which
requires users to install the latest libusb.
- 2004/2/3: USB PICkit 1.11.tgz.
Source code is identical; the README file is updated
and the Linux executable now linked against the older
glibc 2.2.4.
- 2004/01/19: USB PICkit 1.1.tgz.
Now works great under Linux or MacOS X, thanks to Joseph Julicher,
a friendly Microchip engineer who (out of the blue!) recommended
the usb_set_configuration technique. On MacOS X, requires
libusb-0.1.7.olawlor.tgz,
an improved version of libusb for MacOS X.
- 2003/08/03: USB PICkit 1.0.tgz.
This version only ran on Linux, and barely ran on that.
Back to Orion's Oeuvre.
Back to Orion's Home Page.
Orion Sky Lawlor, August 2003