Learning to program and work with micro controllers is the fundamental step towards developing applications for quadcopters. Therefore I am going to spend some time on micro controller programming and share my new knowledge with my dear readers.
This first post will describe the micro controller that I chose to use and the preparation steps – what to buy and how to set it up.
I chose to work with the Microchip family of PIC micro controllers.
Why use Microchip PIC controllers?
I decided to accept my friend’s advice and start using PICs from the beginning. The main reasons for using PICs and not other controllers are:
- Price – they are cheaper then Atmel chips for example
- They exist for many years and are very reliable and stable
- Variety – there is a large number of controllers with different capabilities, so it should be possible to find a cost-effective controller for every application. Or, as Microchips says on their site: “Microchip provides solutions for the entire performance range of 8-bit, 16-bit, and 32-bit microcontrollers, with a powerful architecture, flexible memory technologies, comprehensive easy-to-use development tools, complete technical documentation and post design in-support”. And no, I don’t work for Microchip (but maybe I’ll ask them to put a link to my blog from their site).
- Tomer, my friend, uses PICs for his projects, so I can learn from him and ask for help when I get stuck. I think that at the end, this is the main reason for choosing PICs.
We have to buy a few things and set them up before writing the first line of code for a PIC.
Stuff to buy
First of all you should decide which PIC micro controller you want to use and then buy one or two. You can get them from many sites on the net and in real stores. I decided to accept Tomer’s advice and use the PIC12F1822 just because it is cheap, simple and sufficient for my first project (a LED controller for my quadcopter) and … Tomer gave me two of them so I didn’t have to buy any.
The full shopping list is:
[table id=2 /]
Regarding the PICKit 3 programmer – Instead of buying the original Microchip product I bought a clone from eBay. It is cheaper but my MAC OS on two computers (Yosemite – running on a Mac Mini (mid 2011) and on a Macbook Pro 15 mid 2012) does not recognise it. I will describe a bad workaround below.
Tomer suggests putting the chip in a socket and moving it around inside the socket.
This is how this stuff looks like:
Installation and set up
Download and install the Microchip MPLab X IDE and the XC 8 compiler. Both are free.
Download the data sheet for the PIC and start reading it. It is a fascinating ~400-page reading. In fact, you don’t have to read it all at once, but at least find the locations of the following pins of the chip that you need for programming:
- VDD – power
- VSS – ground
- MCLR – I’m still figuring out what this is
- ICSPDAT – programming data
- ICSPCLK – programming clock
Download the PICKit3 user’s guide from here.
The IDE installer will offer to install the IDE and the IPE – the Integrated Programming Environment. Install both.
Connect the 6-wire programming connector to the PICKit 3 module (the red box) and connect the PICKit3 to the USB port of your PC.
Place the chip into the ICSP adapter and connect 5 wires of the programming connector to the corresponding pins of the adapter. The pinout of the programming interface are listed in page 10 of the PICKit3 user’s guide.
Then start the IPE – the integrated programming environment. Here is a screen shot of my IPE.
You should select the correct chip (Device) by first selecting the family and then selecting the chip from the drop-down menu. In the “Tool” field you should see the serial number of your PICKit 3. As you can see, the program does not identify my fake PICKit 3 so it says “Default_pk3”. This is not good but I have a work around for now and I intend to find the reason later.
Press on “connect” and it should connect (unlike my IPE above).
Once it is connected you are ready to go.
Workaround for using my clone PICKit3 on a MAC
The only workaround I found so far is to run a virtual Windows 7 guest on VirtualBox on my Mac. I place the project in a folder that is permanently shared with the guest machine. I run the IDE on the MAC and the IPE on the virtual Windows machine. I hope to find a solution before I need to use the debugger features of the PICKit 3.