# What are good microcontrollers available today? [closed]

I have experience with assembly and C programming for microcontrollers, but I'm not familiar with the various MCU and DSP families offered by today's companies. (eg: Texas Instruments, Atmel, Renesas)

I'd like to know about the good microcontrollers / DSPs, and what its like to develop with them. Please summarize your understandings about the various MCU / DSP families, one family per answer.

It would be very interesting also if you detail what is(are) the main application(s) for this(ese) microcontroller please.

(This is a "community-wiki", so anyone with >100 reputation can refine and improve answers)

• I'm starting off with a few answers, please fee free to add your own! or edit existing families to add in your wisdom. Special thanks to Jason S for all the TI MCU/DSP wisdom. chiphacker.com/users/330/jason-s – Edward Dec 22 '09 at 0:06
• @Edward, This site is in bootstrap mode so everyone can edit CW posts – Earlz Apr 25 '10 at 2:27
• I'd like to see/hear which ones are available from where and especially if any are available as samples. – XTL Jun 27 '10 at 8:43
• This whole question is pointless and not constructive. As expected, you are getting largely biased opinions for and against various processor lines. Voting to close. – Olin Lathrop Jun 24 '13 at 23:32
• @Ricardo I actually remember writing that comment. Somebody was going for Archaeologist badge or something. Regardless, this old question does not fit the scope of the sight anymore and needs dispatched. – Matt Young Aug 28 '15 at 16:36

ARM is the industry standard for 32-bit controllers, although the PIC32 has some nice features. They are quite easy to use. I like the NXP LPC2000 and LPC1000 ARM chips, but the new Energy Micro ARM Cortex-M3 chip is very interesting because of its very low power consumption - as good as the MSP430 [Youtube]. Support is very variable, the NXP chips have the LPC2000 group which I run, which people seem to like - we have over 8,000 members!

• the PIC32 uses a MIPS M4K core - similar to ARM in that the core is licensed to other manufacturers - such as microchip to pack and add peripherals to. – smashtastic Dec 15 '10 at 13:26
• I vote ARM as well. completely standard compilers and debuggers, an almost-universal JTAG interface, no dependence on proprietary binary stuff like PICASM and C18. :-) – akohlsmith Dec 16 '10 at 18:51
• Another ARM fan here. I prototyped a project and then designed and assembled a PCB for the TI Stellaris LM3S6965. Decent docs and software libraries, I had a software background before that project and the docs provided by TI were enough to learn how to program the device and using their sample schematics as a template I taught myself how to do the board layout and built something that works. Tons of features and power for the money. Today I would look at the various Cortex M4 offerings, TI just released their M4 micros but I wouldn't hesitate to look around at other vendor's offerings. – Suboptimus Oct 14 '11 at 23:28

Atmel AVR, perhaps in a Arduino: I'd disagree with Leon, and say that Atmel's AVR line is a great family to start with. It's pretty diverse, ranging from the ATtiny, through the ATmega, to the Dragon (which I haven't worked with.) I'd say that the AVR32 and Xmega are different families.

AVRfreaks is one of the best electronics forums on the web (soon to be surpassed by Chiphacker :), the Arduino community also exists, which is targeted to hobbyists. Arduino is great for learning microcontroller hardware, although it won't help you with programming (The OP stated that they knew ASM and C).

The WinAVR suite is easy as pie compared to other toolchains. Just download, push Next a few times, enter some code and hit F5. It doesn't get any easier than that. Sure, the AVR Studio editor doesn't have all the features it should have, but a lot of vendor IDEs are no better, or even worse (*cough*MPLAB*cough*).

I'm not sure about delivery, but I'd say the 6-pin SOT23 ATtiny is a niche chip, and the SO8 or DIP version is very much available. On a related note, they also do a great job of sourcing them both in DIP (for prototyping) and compact SMT packages.

• If you use Linux, you can probably have a fully working toolchain in under half a minute with "sudo apt-get install gcc-avr avr-libc avrdude". Winavr is essentially fully compatible. I've been keeping shared codebase between the two without even a single change in a Makefile. If you have a hardware parallel or even serial port, complete ISP hardware consists of a few off the shelf connectors and a couple of passives (resistors). There's several USB options available and the $30 (shipped worldwide) Bus Pirate directly does AVR ISP and so much more. – XTL Jun 27 '10 at 8:49 • AVR is also one of the very few chips your nearby electronics store may actually also have on the shelf. – XTL Jun 27 '10 at 8:50 • You can program for WINAVR (i.e. avr-libc) from the Eclipse IDE using the AVR Eclipse plugin. Eclipse makes everything better! – vicatcu Dec 16 '10 at 20:01 TI MSP430 series Hardware The variety of hardware peripherals is not as flexible as the Microchip PICs, but the software debugging toolchain support is much much better than Microchip's parts. TI recently released their new version of Code Composer for the MSP430 microcontrollers and TMS320F28xx DSPs, which uses Eclipse. The debugging support is excellent. These are also very easy to setup the control registers, much easier than the 28xx DSPs. The MSP430 can be excellent for timing intensive applications as it will normally have more Capture/Compare Registers available for use. This can greatly simplify systems where you need to deal with many many timing intensive peripherals. Development You can buy a development system for$150 (there's a cheaper $20 MSP430-on-a-USB-stick variant, but it's kinda limiting), and you get a real hardware + debugger prototyping system. You can also get the new TI launchpad which comes with 2 chips, and costs on$4.30.

• GCC is available. mspgcc.sourceforge.net (old) mspgcc4.sourceforge.net (new) – XTL Jun 27 '10 at 8:42
• The problem with TI lately seems to be that their "e-store" simply doesn't work and the new kits are always sold out or otherwise not in stock. There would seem to be a lot of demand for Chronos and Launchpad as well as the EZ and EZ RF kits, but they are occasionally nearly unattainable unless you find a store that has some in stock. Hopefully this will clear up soon. – XTL Jun 27 '10 at 9:07
• TI also apparently offers samples of their chips. – XTL Jun 27 '10 at 9:07
• Elektor also offers a board that will extend the ez430 towards a more traditional devkit. elektor.com/products/kits-modules/modules/… – XTL Jun 27 '10 at 9:09
• We didn't have any trouble getting Launchpads this Summer. Supply issue may have been short-lived. – Brian Knoblauch Oct 14 '11 at 20:24

Microchip PIC 16F/18F

Target market

Inexpensive 8-bit microprocessors. The 16F is one of Microchip's earlier lines of processors and is not particularly amenable to programming in C / C++ due to:

• its instruction set core and memory architecture
• the necessity of switching banks
• lack of support for common pointer operations
• poor performance in C / C++ due to architecture
• requires larger program size to implement algorithms

The 18F series is newer and should be considered if you can afford it for your project. It's similar in target market, peripheral set, IC packages, development tools, and price to the 16F series. The 18F core was designed to be more amenable to C and C++, due to:

• support for indirection
• particular RAM banks that are always accessible (no need of bank switching)

Software

Quite easy to program, you can write using its set of 30 assembly instructions, or use a C compiler. These are 8-bit MCUs so if you want to work with values >255 you will have to find/write 2 byte addition / subtraction / multiplication / division code yourself. Its RAM has 4 "banks" so if you write in assembly, you have to keep switching back and forth to access variables stored in banks other than the current.

Hardware

These MCUs run quite slow, with a typical speed of 4 MIPS and maximum speed of 20 MIPS. They have a few in-built hardware features that work okay if configured properly, like the ADC, Serial port, Parallel port, CAN bus, I2C bus, SPI bus, Voltage comparison, EEPROM, and of course, all purpose I/O ports.

Documentation

• Datasheets have all required info (pinouts, registers for configuration, etc) neatly categorized and well documented. A manual also explains in-depth about the features.

Development tools

• Microchip has a new tool, the VDI that makes it easier configure the MCU's various hardware features, which generates assembly or C code. Better than pouring over the datasheets.

• Microchip has offered its MPLAB IDE for many years, and although the program has been slowly improving, compared to PC development tools (Visual C++, Eclipse/NetBeans for Java/etc) the user interface is very poor and the software is still particularly buggy. It also does not support C++, despite the fact that the difference between C and the majority of C++ features (excluding dynamic-memory allocation, virtual functions, and a few other features) is very slight and C++ encourages programming modularity. There are 3rd-party IDE vendors, particularly IAR, but they are pricey. (Hi-Tech got bought out by Microchip recently.)

• In-circuit debugging is offered in some parts by Microchip's ICD interface, a 2-pin serial interface that can be accessed through debugging adapters ICD2, ICD3, REAL ICE, PICkit2/3, etc. Be sure to check if the part you choose has the ICD features! The debugging features are somewhat limiting and have "skid" where you set a breakpoint on one instruction and the program stops a few instructions later. However, ICD is better than nothing.

Support

• Application notes describe code and circuitry for various common applications
• Active community of users at the Microchip Forums
• Free 24/7 Tech Support website where you send in your problems (tickets) and technical staff will respond free of cost, and even let you call if you need more help
• Presentations (web seminars) which explain the various modules and applications
• SDCC also supports PIC, I think. – XTL Jun 27 '10 at 8:44
• Yes, SDCC works very well for PIC18 and upwards. Note that the syntax is slightly different from Microchip's C compilers though so you may have to do some porting if you want to reuse code. – Wim Jun 27 '10 at 19:13
• I've been reluctant to use sdcc as the documentation seems to describe the pic code generation as experimental. – John Burton Jun 28 '10 at 8:02
• I second the PIC16 comments. Old, quirky, memory organised in banks, not C-friendly. Microchip uses the fact that it has very few instructions to learn as an asset, which is just stupid, IMO. MPLAB IDE is a joke, it feels like it's still 1998. – Gauthier Dec 15 '10 at 12:27

Blackfin by Analog Devices The Blackfin family is a hybrid DSP/microcontroller with a strong RISC core as well as support video/signal processing instructions. Some instructions support SIMD.

Hardware

It has a RISC core. Speeds range from 200MHz single-core to 600MHz dual-core. It has may peripherals: 10/100 Ethernet MAC, UARTS, SPI, CAN controller, Timers with PWM support, Watchdog Timer, Real-Time Clock, and a glueless synchronous and asynchronous memory controller. It has dynamic power management - automatically shutting down parts of the processor that are not used.

Development

The two primary development tools are AD's VisualDSP++ and the GNU toolchain. There is also an SDK with plenty of code and application notes. The SDK code serves either as a framework or as good code examples. There are several operating systems, including uCLinux, that will run on it. There are a number of eval boards available. The manuals are indispensable.

Pricing currently from 2$in quantities of 1000 units. • Blackfin doesn't have a MIPS core! – Leon Heller Dec 22 '09 at 1:27 • What about pricing? – bjarkef Jul 24 '10 at 22:43 The Parallax Propeller is an oddbird 8-core (eight "cogs" plus a hub) microcontroller that can do very interesting/impressive things including SD/VGA video generation. It has its own development environment including a language called SPIN. Assembly (PASM) is naturally available. There is considerable community support and visible projects using the chip. There isn't a wide range of models, but the chip appears to be the result of very careful design and long development run done by some extremely talented and competent people. It may be available for around$8.

(In-system) programming hardware apparently consists of TTL-level serial port and reset line. There is a dongle called Prop Plug available.

http://parallax.com

http://en.wikipedia.org/wiki/Parallax_Propeller

How about the STM32, another Cortex-M3 based mcu family?

It's cheap to get started since I found some good stuff from Olimex.

Then I use gcc as a compiler, and OpenOCD to control the jtag.

dsPIC33F and PIC24: Microchip has a family of 16-bit, 40 MIPS microcontrollers called dsPIC33F which combine their PIC24F instruction set and peripherals with DSP features such as two 40-bit accumulators with rounding and saturation options; single-cycle multiply and accumulate; and up to ±16-bit shifts for up to 40-bit data. Prices are low (as low as $2 in volume). One thing I like about Microchip microcontrollers is many of their devices are available in DIP packages which are ideal for breadboarding. I have used one of these in a project where I needed to decode DTMF signals; it was more cost-effective than a dedicated DTMF decoder hardware solution. A PIC24 is used in the amazing uWatch, "The world's most powerful (and only!) programmable RPN/Algebraic scientific calculator watch". • Big vote for the pic24 series. You don't see nearly as much online for them as the 8 bit pics but they are faster, more powerful and easier to use and don't cost any more than the 8 bit ones of similar spec. – John Burton Jun 28 '10 at 8:05 Cypress PSoC1 (CY8C29466) has a simple 8-bit CPU core surrounded by FPGA-like digital and analog blocks. It has both analog inputs and analog outputs. Many projects that would require a bunch of external parts with any other microcontroller -- op-amps, PGAs, etc. -- can be done with a single PSoC chip. Lots of computer mice use a PSoC1. For example, it can decode DTMF tones coming in one input pin, and directly generate independent analog DTMF signals on two output pins -- true analog, not PWM. The digital and analog blocks can be set up to do things completely independently of the core -- and therefore with guaranteed fixed response time, even if the CPU is busy handling some interrupt during that time. Fairly low power. Comes in both DIP and SMT packages. The 8-bit, 24 MHz core is roughly equivalent to the PIC16F core, quirky bank-switching and all. Proprietary C compilers are available, but GCC is unlikely to ever be ported to either one. The "Gainer.cc" project programs PSoC1-based systems using Processing over a USB cable, very similar to the later "Arduino" project. The http://www.psocdeveloper.com/ forum is friendly. There are some utilities available for doing development on Linux: http://m8cutils.sourceforge.net/ . • PSoC1 drives me insane. The new PSoC3s, however, are awesome. – Rocketmagnet Oct 14 '11 at 13:42 Freescale HCS08 micros are direct competitors to PIC10-18s and AVRs, generally of lower-cost but still with a fairly rich peripheral set. Their library of app notes and reference material is quite good. Their CodeWarrior IDE (free compiler for up to 32k code) includes some useful "Device Initialization" libraries for a GUI-driven approach to flipping bits, and a more advanced "Processor Expert" which can generate higher level drivers for peripherals. You are not obligated to use either, and can simply do everything in straight C code if desired. TI TMS320F28xx series of DSPs. Target market Motor control and digitally-controlled power converters: they have very flexible PWM peripherals and fast ADCs. Hardware These DSPs have two major drawbacks: • More complex to setup -- the linker files and all the registers (memory wait states, etc.) have too many options and you really have to know what you're doing to make sure you're doing it right • Needs two power supply voltages, 3.3V for I/O and peripherals, and 1.8-1.9V for the DSP core. Development tools Real-time debugging through JTAG port, using Code Composer v4 (Eclipse-based!!!). Supported by MatLAB simulink for automatic code generation (no programming experience required) TI's DSPs used to be really expensive to prototype because you needed a$1500 real-time-debugging pod (JTAG adapter), but the price of that has come way down (there's an inexpensive one for $150-200) and they sell eval boards with built-in JTAG adapters. • An interesting thing about these is that each individually numbered memory address holds a 16 bit word. – JustJeff Jun 18 '10 at 22:37 • 16-bit ​​​​​​byte? – Nick T Dec 21 '10 at 18:26 XMOS makes a range of very powerful 32-bit parallel processing chips (1600 MIPS from four cores with 32 hardware threads). They are fast enough to do high-speed USB and Ethernet in software. Their tools are very good, the chips are superb, they are reasonably priced (they start at$7.50), and the people there are very helpful. They have two very good support forums; one is run by the company, the other is independent.

• I use XMOS; I am happy with their products. – Paul Nathan Mar 17 '10 at 18:57

I'll have to vote for the Cypress PSoC3. I've been using PICs for about 10 years (PIC16, PIC18, dsPIC and PIC32). They do kind of drive me crazy with their irritating peripheral configuration, and constant searching through the datasheet to find that one bit which needs to be cleared to make some pin work.

On the other hand, the experience I've had so far with the PSoC3s has been a delight. Most importantly, configuring the digital and analog peripherals is a total joy. Serial ports, clocks, interrupts, drivers, comparators ADCs and DACs can all be wired up on a schematic sheet, and they work perfectly.

For example, you can wire up your PWM to trigger the ADC to sample in the middle of a pulse, making motor current measurement more accurate. Try doing that on a PIC.

Want 5 PWMs, 5 quadrature decoders, an ADC, SPI port and a CRC generator on the same chip? You got it. You want to configure the ADC to sequentially sample the current in each motor at the centre of the pulse? You got it. Plus you can connect all of these inputs and outputs to almost any pin you want.

Oh yeah, AND, if there isn't a peripheral available in the library, you can write your own in verilog!

Cypress PSoC5 has a 32-bit ARM Cortex M3 surrounded by FPGA-like digital and analog blocks.

20-bit resolution analog ADC and DAC.

The digital and analog blocks can be set up to do things completely independently of the core -- and therefore with guaranteed fixed response time, even if the CPU is busy handling some interrupt during that time.

Fairly low power.

The 32-bit, 80 MHz ARM Cortex-M3 core is roughly equivalent to ...

The http://www.psocdeveloper.com/ forum is friendly.

• I wouldn't trust 20-bit A/D on the same die as a microcontroller. Noise from the uC will probably render at least 4 bits useless. – stevenvh Dec 15 '10 at 12:23
• You might believe it if you knew it was only 180sps. – Rocketmagnet Jan 23 '11 at 16:42

Atmel's own support for the AVR isn't very good and their hardware tools are a bit flaky.The chips are nice, though, and the AVR Freaks forum is very good. They have serious delivery problems with their newer chips like the XMega and the 6-pin Tiny chips.

• Please elaborate on the hardware tools and delivery problems. I've been using AVR chips for a while and they were very nice and easy to get into the world of physical computing. – Earlz Apr 25 '10 at 2:28
• Have a look at the AVR Freaks forum - people are always complaining about the Dragon and other tools, and the non-availability of many chips. They also complain about the lack of support from Atmel. – Leon Heller Apr 25 '10 at 10:56
• Not sure if you're supporting or voting against the AVR. Can you post some of your own personal experiences? It's easy to find negative reviews from frustrated posters, but harder to find nice chips and a good support forum. I don't think there would be a community capable of generating 500,000 posts on 75,000 topics if the general consensus was negative. – Kevin Vermeer Jun 18 '10 at 22:46
• Open-source support for Atmel AVR is very nice (avr-gcc and avrdude). – starblue May 25 '11 at 19:42

Zilog also has some microcontrollers. Personally I have not tried to program the Z8 Encore line of chips, but they do send samples. They have a lot of different chips ranging from 1 KB to 16 KB (maybe more) with peripherals including UART, ADC, I2C, SPI, etc.

In my opinion, this is not a very good hobbyist microcontroller.

I used several families of processors, The main issue in learning a new processor is learning to code hundreds of configuration registers of peripheral registers, this will be the main time consuming process when u switch from one family to another. the main application code being written in c, it does not matter whichever family we r using, I wish there should have evolved a standard for the peripheral registers. If anyone is aware of any development in this direction pls share it.

I use PIC, ARM, MSP430, AVR and a few others.

Microchip has excellent support and good hardware and software tools, debugging is especially easy and fast. The 8-bit architecture is a bit dated. Their newer 16-bit chips are excellent. They are the market leader in 8-bit MCUs.

• If you have any wisdom to share I suggest editing the community-wiki answers instead. All of your points have already been mentioned in the 18F answer. – Edward Dec 22 '09 at 3:08