More Than Just A Hobby
Whilst I have been playing (and I can't think of a better word) with microcontrollers on and off for a few years, as I am beginning to incorporate custom embedded hardware design into my business, I have had to start re-evaluating both the parts I use and the tools with which I develop the necessary firmware.
Nearly seven years ago - when this was very much a hobby - I wrote in this journal of my plans to evaluate different families and manufacturers of 8-bit microcontrollers. The first part of my evaluation was to look at the sampling performance of the shortlisted manufacturers. My report on this attracted a response from Freescale Semiconductor and it is that response, the ongoing correspondence and support that came from it, that has made me comfortable with my decision that Freescale parts will be specified first in the designs for my major projects.
The Other Contenders
It's not going to be Freescale all the way. For one, I don't think that vendor lock-in is wise in any business, but the main reason is that I just want to have experience with other families of devices.
AVR
Up to this point, just about all the work I have done has been with Atmel AVR parts. AVR has an excellent Open Source toolchain but, otherwise, I don't really seen any particular advantages. I think that I have only persisted with them to date is because any other family presents a learning curve, and I have a few parts to hand looking for gainful employment.
From a commercial perspective, the fact that the ATMega128 costs twice as much from my distributor (Element 14) as does the very similarly specified Freescale MC90S08AC128 makes me wonder whether I have been working with AVR only on the strength of said toolchain. (Although the AVR community, particularly AVR Freaks, is pretty good.) I have a design which I have built (but not programmed) with AVR parts - but this will be my last, other than quick "junk box" projects.
MSP430
The Texas Instruments MSP430 range of 16-bit devices has much to recommend it, and I will be using it in my Solstice Clock project, when I finally have the time to get back to it. I am drawn to this line partly by the excellent low-power performance of these devices - and thus suitability for running for long periods of battery - the excellent and inexpensive, nay, dirt-cheap, LaunchPad development board, which can also serve as a JTAG programmer for other devices and other low-cost and interesting development products, such as the very hackable EZ430 Chronos sports watch.
Last, but not least, it was the book MSP430 Microcontroller Basics by John H. Davies that sold me on the line. It's possibly the best-written microcontroller book I have ever read, and gave me more than a few 'Eureka' moments on concepts with which I had formerly struggled.
The let-down of MSP430 is that the development tools provided by TI are Windows-only. To run anything on Linux, I need to use GCC for MSP430 - not an issue. However, the mspdebug tool, which is required to - via the LaunchPad - programme devices, does not keep pace well with new parts, making development on Linux a tricky affair.
8051/8052
I still have Dallas samples of 8052-based devices. I will be using these more for my own education than anything, because not having worked with anything from the 8051 family is a bit like studying English literature without including Shakespeare.
And The Winner Is Freescale Semiconductor
Why Freescale? If I consider the entire product range, rather than just microcontrollers, my reason for going the Freescale route may be summarised thus:
- A very broad range of microcontrollers.
- CodeWarrior - an IDE which actually runs natively on Linux which covers everything from simple 8-bit HCS08 up to the 32-bit Kinetis (ARM Cortex M4) parts.
- A very interesting range of digitally-interfaced sensors.
- Very important: the exceptional level of support that I have received from Freescale, despite my being a one-man operation, and even when I was really just in hobby-mode. The Kinetis samples I was given recently only being the latest part of this - and I can't wait to get board designed for them.
For the time being, I will be working with HCS08 devices for my main projects, with some stuff brewing in the background based on the Kinetis ARM parts - the mixed-signal capabilites of which I am planning to incorporate into synthesizer modules.
Whilst in hobby-mode, I have always tried to use only Open Source tools, for reasons of cost as much as anything. When I first started looking at Freescale devices, all those years ago, my only feasible tool option was SDCC - and whatever programming tool was available then. CodeWarrior was a Windows-only affair, and thus out of the question.
Re-visiting now, I am delighted to find that CodeWarrior is now Eclipse-based, and will run under Linux natively. Whilst there was a time when I was all about idealism (using Open Source,) I have become somewhat more pragmatic with age, and now focus on task completion rather than noble causes. CodeWarrior looks like it will do the job for me, both with HCS08 and Kinetis parts. The free version is code-size restricted - if that becomes an issue, I will buy an appropriate license - if I am ever able to figure out all the licensing options and what exactly they entail. (Black mark there, guys.) I have already been down this route with the Cadsoft Eagle PCB design software, and feel quite comfortable with paying for these things, albeit somewhat lighter in the wallet regions. This is, after all, business - and I am sure that the time that I save using a development environment tailored for the parts I am using should more than recompense me for the financial outlay.
Conclusion
It is the merits of a broad choice of products, a single development environment that takes care of all those in which I am interested and - above all - the peace of mind that there is a Big Company that gives a damn about the small operator that has created my brand loyalty for Freescale Semiconductor. 2012 will see the development of systems for one project, already underway, using HCS08 parts and some interesting designs I have in mind for my precious Kinetis parts - finally I can get my hands dirty with some ARM!