Over the past few years I’ve worked with a number of different microcontrollers. I was introducted to the microcontroller world during a university class that used Freescale’s 68HC12. This was a great learning platform because it forced me to constantly dig through the datasheet for register definitions. I learned on a low-level how microcontrollers operate. The 68HC12 is a 16-bit CISC architecture. The class focused on embedded systems hardware.
The second class of the series used Freescale’s 32-bit ColdFire RISC microcontroller. This class focused on the software side of embedded systems. The ColdFire design is much more powerful than the 68HC12 microcontroller and much easy to use. However, both microcontrollers have the same flaw, they are made by Freescale! Freescale makes some very fine products but from my experience, they have two major flaws:
- Their register usage and configuration make the microcontroller hard to use and a pain to configure.
- Their datasheets are impossible to find the information you need, which makes it even harder to configure.
During the summer in between these two classes, I discovered the ultimately easy to use microcontroller, the Arduino. In case you don’t know, the Arduino is a development platform built around an 8-bit AVR microcontroller. The AVR alone is a pretty easy to use microcontroller. It isn’t terribly powerful because it’s only 8-bits. The Arduino environment adds an easy-to-use IDE with programming software. It also gives a bootloader and software libraries. If you want a quick and dirty (VERY dirty) setup, this is the microcontroller for you!
Once I decided to start a substantial programming project for an unmanned autonomous quad-rotor helicopter, I knew I wanted to find a great microcontroller to be my one and only. I did a lot of research and decided I should look into a 32-bit ARM solution. I found the LPC1768 ARM Cortex-M3 microcontroller by NXP Semiconductors. Of all the microcontrollers I’ve used, this is the only one that I’ve enjoyed every part of. The ARM Cortex-M3 core is simply amazing. I heavily doubt that there is a more efficient way to utilize 32-bits! NXP’s hardware peripherals compliment the ARM core in a perfect way. Each peripheral seems to have had countless hours of design. The setup for these complex peripherals is very easy! This is because the configuration registers are straight forward and the accompanying datasheet is precise and detailed. The development platform I use is the LPCXpresso LPC1768. $30 will buy you a tiny microcontroller development board, and a JTAG programming device. The IDE is Eclipse based easy to use and free.
For all you Arduino users out there, I suggest you give this a try. The Arduino environment is severely limiting and you’ll never learn efficient embedded system design. Don’t get me wrong, if I need a quick development test, I’ll use my Arduino, but for any real-time operation, I’ll stick to those who know it best, ARM.