Take the 2-minute tour ×
Electrical Engineering Stack Exchange is a question and answer site for electronics and electrical engineering professionals, students, and enthusiasts. It's 100% free, no registration required.

There are numerous MCU platforms and once somebody has gotten used to one, they are generally reluctant to switch to another platform.

My question is: If one started using a MCU for general purpose tasks today, how would one go about choosing one? What are the unique selling points of the different platforms?

share|improve this question
    
Let us know the kinds of projects and volumes you have in mind, and it will help us answer the question. –  Rocketmagnet Aug 9 '12 at 9:10
2  
General-purpose is much too wide. It makes little sense to use the same uC for flashing a bike LED and for an RTOS with a hi-res touch color LCD. –  Wouter van Ooijen Aug 9 '12 at 18:31
1  
Yes, you would ideally have several chips you are familiar with for different size problems - and be ready to pick up a new one if it is uniquely suited for a task. –  Chris Stratton Aug 11 '12 at 21:56
1  
@WoutervanOoijen The idea with this question was as follows: there are many tasks that any of the platforms can handle easily (i.e. general purpose tasks). One is then completely free to choose between platforms. In this case, the "soft factors", e.g. ease of use, external component count, etc. become dominant. - I wanted to find out what different platforms do well/poorly compared to others. –  Arik Raffael Funke Aug 11 '12 at 22:29
2  
R E L I G I O N –  vicatcu Aug 21 '12 at 17:19
add comment

6 Answers

Since this question has not quite produced the platform comparison I was hoping for, I have attempted to create one myself by studying the literature as well as the other answers. Maybe this can help somebody else in future.

Please let me know if there are any mistakes or if there is information I can add.


Platform Comparison

Notes regarding the comparison:

  • IDE: comments relate to the free version

PIC:

  • by far the cheapest entry-level chips
  • many have internal voltage regulators
  • at given price, typically have more and better peripherals
  • quasi industry standard: very good libraries and developer support
  • IDE: NetBeans-based, outstanding, inkluding full offline simulation and debugging
  • third-party debuggers: about $25
  • very wide range of packages
  • unique selling points: 1. XLP = extra low power devices available; 2. many modern chips have the Capacitive Sensing Module for touch buttons, etc.

AVR:

  • AVR generally lags behind regading peripherals and is slightly more expensive. On the whole, however, AVR is very similar to PICs in functionality and price.
  • 8bit AVR chips are faster than 8bit PIC chips
  • third-party emulators: about $20
  • very wide range of packages

Arm Cortex-M:

  • modern processor architecture: no memory banking, good multi-tasking
  • by far the cheapest 32 bit devices
  • fairly easy to move between different chips and different manufacturers
  • devices generally require more external components than PICs
  • very cheap USB devices with ROM bootloader: NXP LPC1342/LPC1343
  • reasonable library support
  • IDE: reasonable, no offline simulation
  • SWD interface allows in-system programming, debugging and tracing with easy-to-build hardware (
  • inexpensive NXP chips only come in small-pitch or pin-less packages
  • selling points: 1. cheapest 32bit platform; 2. cheapest platform with USB ROM bootloader

PSoc: (from Rocketmagnet's answer)

  • king when it comes to analogue peripherals: a given chip can be re-configured internally to provide different analogue and digital peripherals
  • significantly more expensive than PICs
  • IDE: excellent
  • $88 programmer (does it allow debugging?)
  • only SMD packages

Propeller: (from Rocketmagnet's answer)

  • multi-core MCU: different cores can work simulateously on different tasks
  • eliminates/reduces(?) need for traditional interrupts
  • few hardware peripherals, must be explicitly coded to run on one of the cores, provides incredible flexibility
  • weak when it comes to analogue peripherals
  • IDE: excellent
  • DIP package available

Comparison by Application

USB:

"Legend" for the list below:

  • bootloader = preprogrammed USB bootloader
  • voltage regulator = can be powered from bus without external regulator
  • pullups = no need for external pullup
  • impedance matching = no need for external matching resistors
  • precision oscillator = no need for external crystal

Properties of least expensive device: (in approx. order of price)

  • PIC: 8bit, low- and full-speed, voltage regulator, pullups, impedance matching, ESD protection
  • NXP: 32bit, bootloader, full-speed only, ESD protection
  • Freescale: 8bit, low-speed only, voltage regulator, impedance matching, ESD protection
  • Atmel: 8bit, bootloader, full-speed only, voltage regulator, pullup, ESD protection
  • STM: 32bit, bootloader, full-speed only, pullup, impedance matching, ESD protection
  • Silicon Laboratories: 8bit, low- and full-speed, voltage regulator, pullups, impedance matching, precision oscillator
  • TI: 32bit, bootloader, low- and full-speed, other properties unknown
  • PSoc: configurable as module, other properties unkown
  • Propeller: 32 bit, bitbanging only

Ethernet:

  • PIC: cheapest device with integrated PHY
share|improve this answer
1  
Few notes here: Propeller doesn't have interrupts at all and there's no support for debugging in the official IDE. Instead, the preferred debug mechanism seems to be to connect the thing to a TV and use a provided library which displays variables on the screen. Also there's no code completion, no simulator, no integration with code management systems, unusual implementation of includes... Also there are no hardware peripherals except the two counters per core, as far as I know. –  AndrejaKo Aug 11 '12 at 19:48
1  
@AndrejaKo I was thinking of the Olimex AVR-USB-JTAG. Thanks for the notes on the Propeller. I will include them in my next edit. –  Arik Raffael Funke Aug 11 '12 at 22:33
2  
Note about the propeller - It has NO interrupts. At all. If you need something that resembles a traditional interrupt, you spin up a additional CPU core, and have it spin-wait. –  Connor Wolf Aug 12 '12 at 0:36
1  
Also, having worked with the propeller fairly extensively, I would disagree on your rating of the IDE. Personally, I think it's kind of a turd, it's at best mediocre (You can't use tabs! It has no option to turn off tab-space conversion). –  Connor Wolf Aug 12 '12 at 0:39
1  
Such a list is almost inevitably pointless and out of date. All the manufacturers are competing with each other all of the time and most try to offer something in each category - you do a survey when you have a need, pick a solution, and and if it works you run with it until you have a need for which there is a better solution. –  Chris Stratton Aug 13 '12 at 4:38
show 7 more comments

A year go, I gave a talk on the subject of picking microcontrollers (it took about 1.5 hours). The audience were high-level software programmers and makers. Majority of the audience didn't have prior μC experience, the remainder has played with Arduino only. The head count in the audience was about 30. So, this was a multicast, as opposed to a one-on-one clinic.

The key slide in the talk was this:

Dimensions

for comparing microcontrollers. The list is in descending order.

  • Development environment (tool chain)
  • Development environment
  • Did I mention development environment?
  • Support
    • Application notes
    • Peer support: friends, tribal knowledge, forums, teh codes [sic]
  • Features
    • Memory
    • Peripherals
    • Computation prowess
  • Power consumption
  • Cost
share|improve this answer
    
You focus on the development environment. Makes sense to me. What were your conclusions? –  Arik Raffael Funke Aug 9 '12 at 2:21
    
@ArikRaffaelFunke Well, those bullets in my post above are the conclusions. Not conclusive enough? –  Nick Alexeev Aug 9 '12 at 2:24
    
@ArikRaffaelFunke The point of the talk was to: (1) Provide a minimum list the questions, which need to be asked during the selection process. (2) Show where and how to look for answers. I have specifically avoided making hard conclusions along the lines: family X is good if..., family Y is good if... –  Nick Alexeev Aug 9 '12 at 2:37
    
For small volumes and typical requirements, yes. But sometimes you have to pick the best technology. Or if volume is huge, fairly substantial headache in development can be justified if it saves a few cents per widget - including having solutions based on competing parts tested and ready to jump to. –  Chris Stratton Aug 11 '12 at 21:57
4  
The focus on dev environment is absolutely right. You could have the best chip in the world but if you can't program & debug the damn thing it may as well be a brick. I've heard good things about NXP, but no direct experience. I thought Freescale were poor, but then I tried TI (MSP and then DM36x) and now Freescale are a shining beacon of brilliance in my eyes. Best advice with ANY dev environment: Build/install it in a virtual machine and keep a backup of it in fully-working state so it won't break when moving computers / upgrading OS etc... –  John U Jan 10 '13 at 9:16
show 2 more comments

Your choice of MCU depends a lot on the kind of projects you're going to be working on. Are you making high-volume, super-cheap and simple devices like flashing bike lights? Are you developing complex prototype robots which have to deal with numerous bizarre IO devices and sensors?

I mostly work on the latter. The main problem for me is trying to find microcontrollers which have the peripheral set I want. This is very difficult as our requirements don't seem to be mainstream. We want things like 5 PWM channels, 5 Quadrature decoders, 2 non-standard SPI ports and a UART with negated IO.

The only MCUs I have seen which can handle those kind of requirements with ease are the PSoC and the Propeller.

Propeller chips

The Propeller is basically eight 32-bit MCUs in a single chip. If you want some type of peripheral, you simply program one of the MCUs to perform that job. So you can have whatever you want.

PSoC

The PSoCs come on two flavours, 3 and 5. The 3 is an 8051 core, and the 5 is an ARM cortex M3. Also included on the chip are re-configurable digital and analogue blocks which can be made into a wide range of peripherals: ADCs, filters, op-amps, DACs, SPI, UART, quadrature decoder, CRC generator, etc.

The development environment is fantastic. You have the usual source code editing of a typical IDE, but you also have a schematic editor. You can literally wire up any digital circuit you like, connecting up the peripherals with gates, flipflops, etc. Need 5 PWMs? Easy, just put them into the schematic, wire them up, and away you go. You can even write your own peripherals in Verilog if you want something that's not provided. A great deal of your application can simply be implemented in this sort of hardware.

The real benefit is that you can stick with one chip, knowing that it can tackle a great many of the projects you'll want to do in the future. What I found annoying about PICs was constantly trawling through dozens of devices looking for the one which had the particular peripheral set I needed. Now I don't have that problem.

share|improve this answer
    
The Propeller is a curious concept. I have to think a bit about that one. Regarding PSoC: I have considered those in the past due to the incredible flexibility but the need for a $250 programmer made it pretty much a non-starter for me. –  Arik Raffael Funke Aug 9 '12 at 2:20
    
@ArikRaffaelFunke - The programmer is only $88, less than half the price of the ICD3. –  Rocketmagnet Aug 9 '12 at 9:08
    
@ArikRaffaelFunke -- another consideration is packaging. If you plan on building your own prototypes, then it is much easier to work with DIP packages. Most PICs and ATmel AVRs come in DIPs, as does the Propeller. The PSoC 3 and 5 do not. –  tcrosley Aug 9 '12 at 22:59
    
@tcrosley - Yes, that's another good point. It's something a lot of people have been asking Cypress for. –  Rocketmagnet Aug 9 '12 at 23:08
2  
schmartboard has an easy to use smt to dip solution:youtube.com/watch?v=-32orELxkpE –  hulkingtickets Aug 10 '12 at 14:13
show 1 more comment

For me the most important requirement was if the device / the IDE is well supported on my non-Windows PC (Linux). Turned out that for me Atmel AVR's had better (open source) support than PIC.

share|improve this answer
add comment

Microcontrollers are a fast changing world, there are many advantages of learning on the current "in" chips and most popular IDE's most notable is getting help from the community. As a PIC person I would say the Aduino probably has the best IDE and development boards for newbies at the moment and you can add a lot to a basic aduino board without touching a soldering iron.

Anyone using an aduino for real life stuff may soon want to move on but by that time you will have learnt a lot of basic digital electronics and a good sub-set of C to easily use something more suitable.

As someone has mentioned you choose the chip for your project, I have seen a few projects using ARM chips as simple temperature sensors or AD converters, same way I have seen aduinos and PIC 16's pushed to their limit to generate a space invaders game, FPGA's are galso reat and its good to understand HDL if your seriously going into electronics design.. but unfortunately there are not many projects out there in the real world where you will need to use one most jobs are low volume, rapid design and price constrained and this is where the 8 bit uC reigns supreme

share|improve this answer
add comment

Using more than one platform is okay. Selecting the best one for each job and also availability of code and examples related to the job.

Most of them have good development tools, arduino has visual studio, pic has a great tool and so do others. So, for me, it is how quickly and easily can I get the job done well, + how many open source people working on the same thing?

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.