Pic24f programming with Raspberry Pi


I’ve recently got my Raspberry Pi and started to experiment with it afterwards. As an operating system, i choose the latest raspbian image from official Raspberry Pi website. In the future i also want to try to Adafruit’s distro as well. In this post i’ll try to explain how you can program a Pic24f microcontroller by using your Raspberry Pi with the help of Little Wire.

First, make sure that you upgraded your Little Wire‘s firmware to V1.1!

I used my FTDI usb serial converter board to connect to the Raspberry Pi since i don’t have an HDMI supported monitor at hand :)

You should install the libusb development package to compile the Little Wire examples on your Raspberry Pi.

sudo apt-get install libusb-dev

After this, we should install Little Wire package to the device. There are two ways. If you want to use git, you can do

git clone git://github.com/kehribar/Little-Wire.git

Or do this way:

wget http://nodeload.github.com/kehribar/Little-Wire/zipball/master
unzip master 

After you installed the library go to ./v1.1/computer_interface/C folder and hit Make

Now you have the pic24f program , along with the other examples for Little Wire, compiled. You can browse the content of this program from gitHub.

Example usage is like this:

sudo ./pic24f main.hex => This programs the device with main.hex and tries to read the configuration bytes from the hex file.
sudo ./pic24f 0x3F7F 0xF9DF => This programs the device with main.hex and writes 0x37FF as Config#1 and 0x79DF as Config#2.

Currently the programmer is compatible with only those devices:

"PIC24FJ16GA002", "PIC24FJ16GA004", "PIC24FJ32GA002", "PIC24FJ32GA004", "PIC24FJ48GA002", "PIC24FJ48GA004", "PIC24FJ64GA002", "PIC24FJ64GA004", "PIC24FJ64GA006", "PIC24FJ64GA008", "PIC24FJ64GA010", "PIC24FJ96GA006", "PIC24FJ96GA008", "PIC24FJ96GA010", "PIC24FJ128GA006", "PIC24FJ128GA008", "PIC24FJ128GA010"

Pinout between the Little Wire and the pic24f is like below:

pin2 -> MCLR
pin4 -> PGC
pin1 -> PGD

I might try to update the program such that it doesn’t require any other hardware than GPIOs of the Raspberry Pi.

Here is the video of an example ‘blinky’ program uploading :) Sorry for the bad quality and the quicktime. If you can’t see the video, you can download here.

Some notes:

  • Actually this blog post applies to any Linux installed computer.
  • This application has not been tested extensively with all the devices listed, please aware of it and also if you test it please let me know!
  • This programmer is almost 10 times slower than a Pickit and doesn’t support program reading and verification. Therefore, don’t think to use it as a main programmer for big projects. This might be suitable for uploading a bootloader to a micro, developing a small application or occasional firmware flashing purposes.

I hope someone find this useful!


Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>