Open Programmer v0.8.x

Summary of Open Programmer v0.8.x


This article describes a free, open-source USB programmer for PIC microcontrollers and EEPROMs. It uses the HID class to avoid driver requirements and operates at up to 64KB/s. The device is self-powered, built from affordable components (~10€), and supports various chips including PIC10-24, dsPIC, and ATMEL micros via I2C, SPI, OneWire, and UNIO protocols. It functions as an ICD debugger without saturating the CPU.

Parts used in the Open Source USB Programmer:

  • PIC10-12-16-18-24 microcontrollers
  • dsPIC30-33 microcontrollers
  • EEPROMs type 24xxxx (I2C)
  • EEPROMs type 25xxx (SPI)
  • EEPROMs type 93xx6 (MicroWire)
  • DS24xx devices (OneWire)
  • 11xxx devices (UNIO)
  • ATMEL micros
  • USB 2.0 Full Speed interface
  • Generic I2C & SPI devices

Quick facts

  • Completely free and Open Source (including firmware)
  • Programs PIC10-12-16-18-24, dsPIC30-33, EEPROMs type 24xxxx (I2C), 25xxx (SPI), 93xx6 (MicroWire), DS24xx (OneWire), 11xxx (UNIO), some ATMEL micros, communicates with generic I2C & SPI devices (see supported devices)
  • Can work as ICD debugger
  • USB 2.0 Full Speed interface, HID class (same as keyboards, mice, etc.)
  • Self powered
  • Doesn’t need drivers
  • Built from easy to find components (estimated cost ~10€)
  • Hardware generated timings for maximum speed and reliability (writes a 18F2550 in 15s, 8s under Linux)
  • Doesn’t saturate your CPU and doesn’t suffer when other programs are running
  • Open source control programs for Linux and Windows
  • It’s not another PicKit clone

Open Programmer

Another programmer?

In the last few years, as serial and parallel interfaces have almost disappeared, electronics enthusiasts find even more difficult to program microcontrollers; old time programmers don’t work any more; common solutions include using USB to serial adapters (which can’t accept direct access but only slow API calls), or add-on interface chips, like FTDIxxxx, which appear substantially as serial interfaces and require custom or proprietary drivers.
So why not use PIC controllers and their native USB interface?
After searching a while I couldn’t find an USB programmer which was at the same time functional, free, and open source, so I decided to design one.
Open source means that all sources and schematics are given free of charge with the rights to modify and release them.

USB & HID firmware (v0.8.0)

In order to use the USB interface included in some PIC devices we need a firmware that implements one of the classes defined by the USB consortium or a new one; I opted for the HID class, which is supported natively by all operating systems and so doesn’t need any driver. Maximum allowed speed is 64KB/s, although with my application I measured something in the range 20-40 KB/s, certainly enough to program devices with memory of 100KB at most.

For more detail: Open Programmer v0.8.x

Quick Solutions to Questions related to Open Source USB Programmer:

  • Is this project completely free?
    Yes, it is completely free and open source, including firmware.
  • Does this programmer require drivers?
    No, it uses the HID class which does not need any drivers.
  • What is the estimated cost of building this device?
    The estimated cost is approximately 10 euros using easy-to-find components.
  • Can this device work as an ICD debugger?
    Yes, it can function as an ICD debugger.
  • What is the maximum allowed speed for the USB interface?
    The maximum allowed speed is 64KB/s, though actual speeds measured are typically between 20-40 KB/s.
  • How long does it take to write a 18F2550 chip?
    It takes 15 seconds on standard systems and 8 seconds under Linux.
  • Which operating systems have open source control programs?
    Open source control programs are available for Linux and Windows.
  • Why was the HID class chosen for the firmware?
    The HID class was chosen because it is supported natively by all operating systems.

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter
Scroll to Top