What CPU?

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?


June 03, 2010
URL:http://www.drdobbs.com/embedded-systems/what-cpu/228700486

Terms of Service | Privacy Statement | Copyright © 2024 UBM Tech, All rights reserved.