How do you choose a micro-controller for your project? My hardware requirements are :

  1. I2c
  2. SPI
  3. ADC channels
  4. SMD package
  5. 3.3V operating voltage
  6. A few GPIOs.

There are so many microcontrollers available from various companies which satisfy these hardware requirements(almost all I know of satisfy 1,2,3,4,6)? So then should I choose the microcontroller based on my familiarity with the controller and resourses/documentation available about it or is there any other method to choose one?


closed as primarily opinion-based by Rev1.0, Dmitry Grigoryev, Elliot Alderson, pipe, Wesley Lee Jan 10 at 13:29

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • \$\begingroup\$ If you consider Atmel/Microchip without using the Arduino platform, I suggest choosing the XMEGA series instead of the ATMEGA. XMEGA is better documented, easier to use from a hardware-register perspective and there are lots of ready-to-use libraries from the ASF (Advanced (a.k.a. Atmel) Software Framework). The Atmel Studio IDE is pretty good as well and integrates all the ASF stuff and supports lots of development/evaluation boards. \$\endgroup\$ – Rev1.0 Jan 10 at 12:41
  • 2
    \$\begingroup\$ Possible duplicate of How to choose a MCU platform? \$\endgroup\$ – Rev1.0 Jan 10 at 12:43
  • \$\begingroup\$ This is a thinly veiled request for a product recommendation...you provided the specific needs of your project in the question. Voting to close. \$\endgroup\$ – Elliot Alderson Jan 10 at 13:10
  • \$\begingroup\$ This spec meets thousands of different MCUs. Notably, you never just need ADC, but ADC of a certain resolution. This might narrow down the results. \$\endgroup\$ – Lundin Jan 10 at 13:41

Almost all microcontrollers have / can support the features you list. So in my opinion you will not find what you need by looking at the features in your list.

A very important feature (for me) is how easy it is to use and develop using a microController. The Arduino IDE is easy to use (I think) and free. Also you will find loads of examples for that platform.

But then you're "stuck" with the uCs that are supported by that platform. So that's mostly the ATMega uCs. Is that an issue? For me it is not as I use uCs only for hobby projects. I simply buy an Arduino-NanoPro clone on ebay for less than $2 and use that.

If you need a uC for some gadget and it needs to be mass produced and as cheap as possible then there are uCs that cost only 3 cents each. But these need a special development platform and can only be programmed once.

But to learn about uCs for hobby projects: just use an Arduino. With the knowledge you gain from doing that you will be able to make better use of any uC you will be using in the future.


I think it depends on many things, like:

You mentioned already:

  1. Capabilities/features
  2. Familiarity (yourself)

Others can be:

  1. Cost
  2. Familiarity in your company
  3. Expected support from the manufacturer
  4. Swappability (how easy it is to later convert to different models when hardware requirements change)
  5. Software/tools/IDE support (thanks to Peter Smith)

This list can probably be much longer.

  • 4
    \$\begingroup\$ Software tools and environments come to mind. Some are better than others in this regard. \$\endgroup\$ – Peter Smith Jan 10 at 12:02

Nano won't do 3.3V that I know of.

But a 3.3V/8MHz Promini will, plug on an FTDI Basic or equivalent clone to program/debug it. Same Atmega328P uC as the Nano and Uno.

  • \$\begingroup\$ If by "Nano" you mean Arduino Nano: those use ATMega328 and similar MCUs which have a 1.8 V to 5.5 V supply voltage range! So they can work at 3.3V. Also: 3.3 V is such a common standard that it would be foolish not to support it. It can be that some MCUs have their brownout detection set to a somewhat high voltage. If you program that detection properly you can make an ATMega MCU work at 1.8 V without problems. I know that as I have done that myself. \$\endgroup\$ – Bimpelrekkie Jan 10 at 14:10
  • \$\begingroup\$ Yes, except they are shipped with 16 MHz resonator. Operating at 3.3V (by powering from 3.3V on the 5V pin, and bypassing the 5V regulator) means the chip is then operating out of spec - ~10.xMHz is the max for 3.3V to be fully compliant, and errors may occur, often seen in hardware serial communications. Many folks do not have a Programmer to reset the fuses to alter the brownout detection level. Or the knowledge to do so based on questions seen here and in Arduino stack exchange (and often in the Arduino forum). Best bet then is to start with a 3.3V/8MHz board such as Promini. \$\endgroup\$ – CrossRoads Jan 10 at 15:38

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