Selecting a Microcontroller Architecture for your Embedded Project

comparing 8051,PIC,AVR and MSP430 architecture for embedded projects

Selecting a Microcontroller architecture for your embedded system project can be one of the easiest or difficult decisions you will ever face as an electronics engineer or as a casual hobbyist.There are bewildering arrays of micro controllers from hundreds of vendors with different price points and feature sets.

The best and easiest advice i will give to any person is to go with an architecture or microcontroller you are already familiar with.Most of your embedded projects can be implemented with your favorite micro controller architecture.However this approach will not work when you are working on a project with strict constraints on Power,Space or project budget.In such cases we have to select a custom microcontroller architecture that will suit our unique needs.

This article written for students or hobbyists who  are starting out on embedded systems and wants to select their first microcontroller.

I have used the below criteria  in choosing a microcontoller for your embedded system project.

  • microcontroller architectures,
  • their features,
  • programming tools,
  • software tool chains etc

I have included Arduino platform along with other microcontroller architectures as it is widely used.

When i say a particular microcontroller is widely available,I am talking about the Indian market, more specifically SP road in Bengaluru(Bangalore).




8051 Architecture(Intel MCS-51)

choosing 8051 microcontroller for your project

8051 is one of the popular architecture used in the embedded system community.Compared to other architecture it is relatively simple and comes with few peripherals.

8051 architecture is  taught  widely in engineering colleges as an introductory material to learning embedded systems.

There are lot of companies that sell 8051 based microcontrollers,Here iam going to list only the most commonly used ones.

AT89S51/AT89S52 - This is the most common 8051 derivative that is available on the Indian market.The microcontroller is manufactured by ATMEL and the chip can be programmed  using a stand alone programmer or In System using the controllers SPI port.

The Chip is available in 40 pin DIP format with a Flash Memory size of 4K for AT89S51 and 8K for AT89S52.The chip  contains two 16 bit counters,One full duplex serial port and 32 I/O lines.They also comes with two power saving modes.

P89V51RD2  - This is an 8051 derivative manufactured by NXP.It comes with 64KB flash and 1024 bytes of RAM in a 40 pin DIP package.NXP have stopped production of this device and is not recommended for new designs.

The controller is still available to be purchased in the local market.One of the main advantage of this controller was that it can be programmed through its serial port using either Flash Magic or Phillips ISP utility. 

W78E052DDG - This is an 8051 derivative manufactured by Nuvoton.The controller is similar in features to AT89s52 and can be programmed through serial port without using a stand alone programmer.


Software Toolchains for 8051 development

A wide variety of companies develop assemblers or C compilers for 8051 derived microcontrollers.I have listed most commonly used ones below.

SDCC  Small Device C Compiler  

8051 embedded development using small device c compiler

SDCC is a free and open source C compiler directed towards 8051 derivatives.The package contains a linker, assembler, simulator and debugger for developing software for 8051 derivates.If you want an IDE ,you can use either Eclipse or CodeBlocks IDE with SDCC.As of March 2007, SDCC is the only open-source C compiler for Intel 8051-compatible microcontrollers.

If you are new to SDCC you can check out this short tutorial on configuring SDCC for 8051.

Kiel µVision IDE 

It is a paid development IDE which is widely used in Academic and Industrial settings.You can download an code limited evaluation version from their website for free.The IDE also supports other microcontroller architectures like ARM.

If you are  new to Kiel you can check out this short tutorial on configuring Kiel uVision IDE for 8051.


8051 embedded development using IAR compilers

It is a paid development IDE which is widely used in Academic and Industrial settings.You can download an code limited evaluation version from their website for free.

MikroElektronika Compilers 

8051 embedded system development using mikroelectronika c compilers

MikroElektronika produces compilers for 8051 series of Microcontrollers supporting C,BASIC and Pascal languages for Embedded development.The compilers are commercial but you can download a code limited evaluation version from their website.    


Most widely used 8051 derivatives lack built in peripherals like an ADC or an I2C port.The user have to manually interface an 8 bit ADC like ADC0804 or ADC0808/9 with the 8051 controller for reading analog values.This result in more work and loss of space on the circuit board.



choosing arduino for embedded development work

Arduino is not a microcontroller but a complete embedded environment consisting of an AVR microcontroller and a java based IDE for compiling your code.Arduino development environment is designed to be quite simple and is aimed at students,beginners and Artists who wants to build a project fast without worrying about architecture specific stuff like registers.

Arduino is a great development environment when you are starting out but after you have reached a certain maturity you will find the IDE to be quite limiting.Simplicity of the IDE comes from the fact that it hides a lot of details from the user like the multiple registers that are used for fine tuning your ADC operation.


Fully open source design for both software and hardware.No Licensing cost for software development IDE.

The build in boot loader simplifies uploading program to the microcontroller ,no need to buy extra programming hardware.

Extensive collection of software libraries written by users available for free of cost.

A good set of hardware shields that helps to extend the Arduino Hardware.

A good community of users from around the world.


Limited control over the microcontroller as the IDE hides a lot of details from the user.

It is relatively costly to embed a Arduino board in a finished product compared to  a Microcontroller.


AVR Microcontrollers    

embedded system development using atmel avr microcontrollers

choosing atmel avr architecture for embedded development work

AVR architecture was developed by the ATMEL corporation and was later acquired by the Microchip.It is one of the most widely used 8 bit architectures and easily available.The family also comes with a wide variety of peripherals,RAM and FLASH sizes.The controllers are available in both DIP(DIP40,DIP20,DIP28) and SMD packages. 

The 8 bit AVR  family is mainly divided into three major groups.

  1. tinyAVR
  2. megaAVR


tinyAVR - They are designed to be of small factor and are used in cost and size critical items.They can also operate at 0.7V and comes with Capacitive touch input  pins.An eg would be ATtiny2313.

megaAVRmegaAVR devices are targeted at applications that require large amounts of code and substantial processing capabilities.They come with substantial program and data memories and can be clocked upto 20 MIPS.The devices are also highly integrated and comes with internal EEPROM, SPI, TWI (I2C), and USART, USB, CAN, and LIN, watchdog timer etc.They also has several analog peripherals like  ADC, DAC, temperature sensor, analog comparator etc.They come in 40 pin DIP or 44pin SMD packages. Eg ATmega32.

AVR XMEGAXmega devices are performance oriented and comes integrated with a wide variety of peripherals.They feature large  program memories ranging from 64KB to 256KB.They also comes integrated with High-precision analog peripherals like 12 bit ADC or 12bit DAC.Some even has integrated AES/DES crypto engines.


Software Tool chain for AVR development

Atmel studio 

 embedded system development using atmel avr micro controllers and atmel studio

It is most complete and free  embedded development environment for the AVR family of Microcontroller.It provides an integrated C Compiler,Debugger and code management facilities for developing your software.The IDE also works perfectly with ATMEL debuggers and emulators.Complete installation of the IDE may require around 6 GB of Hard drive space.The IDE is completely free without any restrictions in code size.User can write the program in both C and Assembly language.


They are a set of open source tools aimed at programming the AVR microcontrollers from ATMEL.It consists of a GCC compiler AVR-GCC,a debugger AVR-Gdb and a program for downloading code into the microcontroller(AVRdude).AVR GCC is available on both Linux and Windows Systems.


It is the windows port of AVR GCC.It is quite lightweight compared to Atmel Studio.

IAR Embedded Workbench

atmel avr  embedded system development using IAR compilers

 IAR is a  paid development environment that supports AVR series of Microcontrollers.


is a Basic compiler for the AVR family.The user can write the program in Basic language and compile it to AVR compatible machine code .

MikroElektronika Compilers 

atmel avr embedded system development using mikroelectronika c compilers

MikroElektronika produces compilers for AVR series of Microcontrollers supporting C,BASIC and Pascal languages for Embedded development.The compilers are commercial but you can download a code limited evaluation version from their website.     


Programmers/Debuggers/In Circuit Emulators for AVR Microcontrollers

A wide variety of open source and proprietary programmers are available for the AVR family of microcontrollers.Here i am concentrating mostly on programmers/debuggers that support  8 bit AVR family.


programmers debuggers for atmel avr microcontrollers

USBtinyISP is a simple open-source USB AVR programmer based on the USBtiny project by Dick Streefland.It can be used to program almost all avr chips with a memory size of 64K or lower.The programmer has option for both 10 pin and 6 pin AVR ISP cable.It is compatible with both AVRdude and ATMEL Studio.You can also use USBtinyISP  to burn new boot loaders into Arduino's.

Please note that USBtinyISP requires libusb drivers on Windows OS.



usbasp programmer

USBasp is a USB in-circuit programmer for Atmel AVR controllers which works under multiple platforms like Linux, Mac OS X and Windows.The design and software can be downloaded from USBasp site.Programming speed is up to 5kBytes/sec.

Drivers are required for Windows Paltform.Here is a short tutorial on how to install drivers for usbasp on Windows.



avrisp mkii programmer from ATMEL corporation

It is used for programming Atmel 8-bit AVR microcontrollers with ISP or PDI interfaces.Programmer is supported by ATMEL Studio software.

It can program ATtiny,ATmega and AVR XMEGA devices.

You can find more information from ATMEL here.


AVR Dragon 

AVR dragon programmer debugger for ATMEL 8bit and 32 bit family

AVR Dragon is a low cost programmer/debugger which can be used on all 8bit and 32 bit AVR devices with On Chip Debug (OCD) capability. 

It can perform a symbolic debug on all devices with OCD with SPI, JTAG, PDI (selected devices), high voltage serial programming, parallel programming, and aWire modes, and supports debugging using SPI, JTAG, PDI interfaces. 

It is supported by both ATMEL Studio and QTouch Studio.

More information about AVR Dragon can be found here.



atmel jtag ice 3

It is a mid-range development tool for Atmel AVR  and SAM D ARM® Cortex®-M0+ based microcontrollers with on-chip debugging for source level symbolic debugging and device programming.It supports JTAG, aWire, SPI and PDI interfaces and can support 3 hardware program breakpoints.It is supported by ATMEL Studio.

More information regarding JTAGICE3 can be found here


PIC Microcontrollers

embedded system development using microchip pic microcontrollers

PIC microcontroller development
PIC  is a family of microcontrollers made by Microchip Technology which is very popular among  industrial developers and hobbyists.They are cheap,widely available,easy to program and has excellent community and documentation support.

PIC's are available in 20,28pin,40pin DIP packages which makes it easy for a beginner to solder them to a proto board or use it in a Breadboard.They also comes with a wide variety of onboard peripherals like   ADC and DAC modules, and communications ports such as UART, I2C, CAN, and even USB.PIC microcontrollers comes in a variety of families like PIC10,PIC17,dsPIC etc out of which PIC16F and PIC18F families are most popular with hobbyists.

PIC microcontrollers can also be used for low power applications that runs for years on a single coin cell battery.The low power technology developed by Microchip for PIC microcontroller is called as XLP and boasts sleep currents down to 9 nA.


Software Tool chain for PIC16F/18F development


embedded system development using microchip pic microcontrollers and mplab x ide

Software development for PIC microcontrollers is mainly done through MPLAB IDE from Microchip.The latest version of MPLAB IDE is called MPLAB X and is based on Eclipse platform.The MPLAB X is cross platform and support Windows,Linux and MaC OS platforms.MPLAB X supports editing, debugging and programming of Microchip 8-bit, 16-bit and 32-bit PIC microcontrollers.It also support both C and Assembly language programming.


PIC16F and PIC18F  embedded development using small device c compiler

Small Device C compiler also supports select PIC families like PIC 18F and PIC16F.

MikroElektronika Compilers

Microchip PIC embedded system development using mikroelectronika c compilers

MikroElektronika produces compilers for PIC series of Microcontrollers supporting C,BASIC and Pascal languages for Embedded development.The compilers are commercial but you can download a code limited evaluation version from their website.     


Programmers/Debuggers/In Circuit Emulators for PIC Microcontrollers

A variety of programmers are available for the microchip family from independent third party vendors as well as Microchip itself


usbpicprog hardware for programming microchip controllers

It is an open source PIC programmer build using PIC18F2550 and a few passive components.The hardware,firmware etc can be downloaded from project home page.

You can find the list of PIC microcontrollers supported by the programmer from here.


PICKit 3

programming pic microcontroller using pickit 3

PICkit is a family of programmers for PIC microcontrollers made by Microchip Technology. They are used to program and debug microcontrollers, as well as program EEPROM.PICkit3 is the latest iteration of the programmer from Microchip.It is fully supported by MPLAB IDE. 



in circuit debugger for PIC microcontroller

The MPLAB ICD 3 is an in-circuit debugger and programmer by Microchip.It is the latest in the ICD series.ICD connects to the PC using USB port and is entirely bus powered.The ICD 3 supports all current PIC and dsPIC devices within the PIC10, PIC12, PIC16, PIC18, dsPIC, rfPIC and PIC32 families, and supports full speed execution, or single step interactive debugging.[5] At breakpoints, data and program memory can be read and modified using the MPLAB IDE.

MPLAB ICD 3 is aimed at professional embedded engineers and is quite costly for a hobbyist developer.


MSP430 Microcontroller

MSP430 is a 16 bit microcontroller developed by Texas instruments for low power battery operated embedded systems.The architecture is designed specifically for low power consumption and comes with 6 low power modes with varying power consumption.The processor has a top clock speed of 25Mhz which can be throttled back to reduce power consumption. The family also comes with a variety of onboard peripherals like internal oscillator, timer including PWM, watchdog, USART, SPI, I²C, 10/12/14/16/24-bit ADCs, on-chip op-amps for signal conditioning, 12-bit DAC, LCD driver, hardware multiplier, USB, and DMA. etc.

MSP430  currently comes in several families.

MSP430F1x Family

MSP430F1x family is one of the first models of MSP430 family from Texas Instruments.

It can be clocked upto 8Mhz.

Flash size ranges from 32-55KB.

SRAM size ranges between 1KB to 10KB.

Comes with 12 bit ADC or DAC depending upon the model.

Some models feature a 32X32 hardware multiple,dual USARTS.

Available in SMD packages only ,Mostly 64pin TQFP packages.

It requires JTAG based programmer (MSP-FET).You cannot use launcpad development board to program these models as no SPY BY WIRE module is present onchip.


MSP430F2x Family

Can be clocked upto 12 MHz.

Comes with 2 or 3 channel 24 bit Sigma Delta ADC's.

On board 16X16 hardware multiplier.

Flash size varies between 4KB to 8KB.

SRAM size varies from 256 Bytes to 512 Bytes.


MSP430G2x Family

Can be clocked upto 16 MHz.

Comes with 10 bit SAR ADC.

Upto 56KB of Flash.

Upto 4 KB of SRAM.

Available in 20 pin DIP as well as SMD package.

It was used in original  Launchpad development board.

Can be programmed easily using SPY by Wire Protocol.


MSP430F4x Family

It can be clocked upto 8Mhz.

Flash size ranges from 92KB-116KB.

SRAM size ranges between 4KB to 8KB.

Comes with built in 160 segment LCD driver section. 


MSP430F5x Family

It can be clocked upto 25Mhz.

Flash size upto 512KB.

SRAM upto 66KB.

Bult in USB section.

32X32 Hardware multiplier.

10 channel ADC(10 bit)


MSP430F6x Family

It can be clocked upto 25Mhz.

Flash size upto 512KB.

SRAM upto 66KB.

Bult in USB section.

32X32 Hardware multiplier.

Comes with built in LCD driver section.

Comes with 2 or 3 channel Sigma Delta ADC's.

Some models comes with AES 128 Encryption Module built in .



Software Tool chains for MSP430 development

There are two main development tool chains for MSP430 processors

Code Composer Studio 

Code Composer Studio or CCS is an all in one modular IDE from Texas Instrument.It supports almost all the microcontrollers and DSP processors manufactured by TI.

For MSP430 line of microcontrollers CCS supports two compilers,A code Limited TI compiler and an open source GCC Compiler for MSP430.

IAR Embedded Workbench

atmel avr  embedded system development using IAR compilers

 IAR is a paid development environment that supports MSP430 series of Microcontrollers.


Programmers/Debuggers/In Circuit Emulators for MSP430 microcontrollers


opensource goodfet42 programmer debugger for MSP430 microcontrollers

GoodFET is a completely open source programmer developed by Travis Goodspeed to program MSP430 microcontroller chips.The Device can also program other microcontrollers like Chipcon 8051,PIC24H,dsPIC33F etc.

The Programmer can only program MSP430 architetucture,MSP430X architecture is currently not supported.

The device works with mspGCC compiler.The software and hardware files for the project can be downloaded from project website.

Here is a list of supported microcontroller families that can be programmed by GoodFET.



msp430 launchpads for microcontroller development

Launchpads are easy to use and cheap development board launched by Texas Instruments to promote MSP430 architecture.The boards comes with a build in emulator section that can program and debug the microcntroller on the board.The boards are supported by both Code Composer Studio and  IAR Embedded Workbench.

It is one of the cheapest options to learn about MSP430 microcontroller architecture.

Launchpads can be extended by using Booster Packs that can be plugged onto them.A variety of Booster packs are available from TI as well from 3rd part Vendors.You can check out one for motor control Below.

buy msp430 motor control booster pack

More information about the above booster pack is available here 



buy msp-fet430uif emulator tool for msp430 microcontroller

MSP-FET430UIF is a full feature programmer /emulator from Texas Instruments that can program the entire MSP430 family.It is aimed at professional developers and is a bit costly compared to other options mentioned above.It includes USB debugging interface used to program and debug the MSP430 in-system through the JTAG interface or the pin saving Spy Bi-Wire (2-wire JTAG) protocol.

msp-fet programming debugging tool for msp430 microcontroller

MSP-FET is the next generation tool that replaces the MSP-FET430UIF tool.