Channels ▼

Al Williams

Dr. Dobb's Bloggers

What CPU?

June 03, 2010

What makes you pick one CPU over another? That's a great way to start a fight at a hockey game. Well, perhaps a poor choice of metaphor, but you know what I mean. I was recently trying to justify to someone why I have four different development systems right up on my desk. One for Microchip PIC, one for ARM, another for Atmel AVR, and one for the sadly soon to be gone Scenix SX chip.

I suspect it would seem to any sane person that you should probably just pick one vendor and stick with them. Yet here I am with 4 different systems from 4 different vendors.

When you ask people if they are better than average drivers, most of them will respond that they are. The reason is because you can construe "better" in whatever way is important to you. Maybe I drive faster than most people, or with fewer accidents, or I don't get lost. All of those things could be "better" -- or not, depending on your point of view.

I like the PIC 16F family. They are cheap and the development tools are cheap. You can always pick up the phone and get them on a moment's notice. The PICs I used 10 years ago are either still available or I can get pin- and software-compatible new versions for less money with more capability.

The SX is basically a PIC but it runs at 50 MIPS or more. You can do a lot of things with a processor running that fast that you can't easily do with a slower one. Of course, they eat power like crazy at that speed. Oh, and they've decided to quit making them. I'm actually eyeing some of my SX programmer boards for parts.

So the PIC and PIC-like CPUs are available and cheap. On the other hand, they are annoying to program and not well suited to C and other high level languages. Atmel's 8-bit AVR has a great (and free) gcc implementation. But I have had problems getting them in modest quantities sometimes (although not so much lately). And, in my opinion, they don't always have direct "drop in" replacements as much as I'd like when the obsolete parts.

Many vendors make ARM-based stuff. I'm partial to NXP only because I have some prototyping boards with NXP chips on them, although I've used STM and a few other vendors too. The gcc implementation is good, but not as nice as the AVRs. JTAG debugging is cheap enough. And for about $25 I can get a nice PCB with a 32-bit ARM Cortex M3 running at 72MHz and with a 1/2 meg of program memory, 64K of RAM, and a raft of I/O. If I just want to program it, the onboard bootloader works great with a serial cable. I've had PCs with less power than this, and I can get it for $25. The chips, of course, are even less. For really big projects, I pick up little ARM-based boards with an LCD touchscreen and Linux for about $100. What a deal! So things I used to think about doing on a PC, I often turn to an ARM processor now.

Don't get me wrong -- I've used other processors for special things. I have a nice emulator for the Cypress PSoC (the CPU with analog and digital "function blocks" that I wrote about way back in 2004). I've used several DSP chips where I needed them. And I have a host of other development systems in my storage closet waiting for me to have the urge to use them.

So at the risk of starting a hockey game, what CPUs do you use and why? Is it just foist upon you? Or did you make a choice? Do you stick with one vendor for your whole range? Why or why not?

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.