Introduction: How to Choose a MicroController

Picture of How to Choose a MicroController

It used to be that the number of different microcontroller chips available to the hobbyist was pretty limited. You got to use whatever you could manage to buy from the mail-order chip dealer, and that narrowed down the choice to a small number of chips.

But times have changed. Digikey lists over 16000 different line items under a 'microcontroller' search. Which one should a hobbyist with no particular prior experience choose?

Here are some hints. These are particularly aimed at someone trying to pick a microcontroller to use for the first time at least partially as a learning experience, rather than someone who wants to accomplish a particular task.

Update 2009-01-28: This Instructable was recently mentioned in some popular blogs, and is getting a bunch of new readers. Be sure to read the 'comments' made by other readers and the responses to them; there's a lot of value in those comments...

Step 1: What IS a "Microcontroller" ?

Picture of What IS a "Microcontroller" ?
If you ever took a very introductory computer course, you probably learned about the major components of ANY computer:

  • A Central Processing Unit or CPU. The part that actually performs logic and math
  • Memory. Where the computer stores data and instructions
  • Input and Output or I/O. How the computer moves data between its other components and the real world.

A microprocessor uses microelectronic fabrication techniques to shrink the CPU to a very small size; usually a single "chip."

A microcontroller uses the same techniques to shrink the entire computer to a single chip (or very small module.) CPU, Memory, and I/O all in a little package as small as a grain of rice. Just connect up power and it starts doing its thing; computing and talking to the world. Usually the I/O on a microcontroller is aimed at "low level" hardware like talking to individual switches and LEDs instead of keyboards, internets, and displays (like your desktop computer.) A microcontroller is just the thing you want, if you want to talk to individual switches and LEDs...

Step 2: Show Stoppers

Picture of Show Stoppers

There are a number design considerations that might immediately reduce your number of choices a great deal.

Programability and Reprogramability:

At this point in time, I would say that a hobbyist should only consider microcontrollers that have internal flash or eeprom program memory and can be erased and reprogrammed a substantial number of times. There are also micros that can be used with external memory (adds complexity and expense), UV erasable micros (usually quite expensive due to the special packaging), one-time programmable chips (potentially usable after you have a working design, but losing their price advantage anyway), and mask-programmed chips (essentially useless.)


If you want your microcontroller to have built in Ethernet, CAN, USB, or even multiple serial ports, many common choices are going to be eliminated. Some peripherals can be handy to have: UARTs, SPI or I2C controllers, PWM controllers, and EEPROM data memory are good examples, even though similar functionality can frequently be implemnented in software or external parts.

It's convenient if output pins can supply reasonable amounts of current for driving LEDs or transistors directly; some chips have 5mA or less drive capability.

Physical packaging:

Hobbyists are somewhat limited is the packages they are able to deal with, from a prototyping, PCB fabrication, and/or soldering. That 256 ball BGA coldfire CPU may be sweet, but it's effectively unusable by mere mortals. Microcontrollers available in 0.1in DIP packages are much easier to deal with. Probably anything with a pin spacing smaller than 0.05in should be viewed with some skepticism.


The size of memory may be an important consideration. Some micros have as few as 256 innstructions and 16 bytes of RAM. You can do a lot in that sort of space (believe it or not), but not everything. Moreover, while you can frequently upgrade to a "bigger chip", some chip families have relatively small memory limits imposed by their architecture, so even the biggest chip you can get will have only 8k instructions (for example.) RAM (data memory) is usually scarce in microcontrollers; some algorithms require substantial RAM to be implemented in a straightforward manner, and it may be worthwhile looking for a micro with a lot of RAM (or external RAM expansion capabilities) if that's the sort of thing you had in mind. (For instance, implementing TCP/IP networking protocols in a micro whose total RAM space is less than used by a typical ethernet packet is likely to be ... interesting.)

Step 3: Thoughts About Architectures

Picture of Thoughts About Architectures

The "architecture" of a microcontroller refers to the philosophy of the internal implementation, sort of. It includes details like how many "registers" there are, and how "general purpose" those registers are, whether code can execute out of data memory, whether the peripherals are treated like memory, registers, or yet something else, whether there is a stack and how it works, and so on.

You will hear people talk about how some architectures are better than others. I suppose this is true. But I'm going to claim that it is largely irrelevant for the typical hobbyist. If you wish to avoid the architectural quirks of a particular family of microcontrollers, you can use a high level language. If you're willing to program in assembler, you're at a level of interest where learning and overcoming the quirks is party of the stuff you should be learning. Besides, we're not talking here about evaluating some new architecture that some company is proposing. All of the chips I mention in this instructable have been around long enough that they've proven that their architectures are good enough for MANY real applications.

Here are some architectural "features" you may read about and some explanation of what they mean.

CISC/RISC. Complex Instruction Set Computer. Reduced Instruction Set Computer.

In the old days, CPU designers were getting clever and wanted their CPUs to support high-level language features in hardware, leading to cobol-like string manipulation instructions that accepted arguments in blocks of 8 registers. IIRC, it was Berkeley and IBM who noticed that compiler writers didn't really know how to USE such complicated instructions from a compiler, the amount of silicon real estate used by these instructions was getting large, and in fact the hardware implementation sometimes wasn't as fast as doing the same thing in software anyway. So they said "I bet we can make the CPU go a lot faster if we leave out these complex instructions and dedicate the silicon to more registers or cache memory or something", and thereby invented the RISC CPU. Nowadays "RISC" is widely used by marketing departments to mean "we don't have very many instructions", even if the rest of the architecture isn't very much like the original RISC researchers had envisioned.

Harvard Architecture.

In a Harvard architecture, the instruction memory and the data memory are separate, controlled by different buses, and sometimes have different sizes. For microcontrollers, the instructions are usually stored in "read only" memory, and data is in RAM or registers. An example is the
PIC microcontroller, where instructions are in 12, 14, or 16 bit wide flash, and data is in 8bit
wide RAM.

Von Neuman Architecture.

In a von Neuman Architecture, data and instructions share memory space, so you could do things like dynamic compilation to generate instructions in RAM and then execute them. The TI MSP430 is an example of a von Neuman architecture.

Accumulator based

In an "accumulator based" architecture, there is usually one "special" register where most of the actual computation (math, logic, etc) occurs. Some effort has to be spent to get operands into the accumulator and results back out to where you need them. The opposite is a processor with "general purpose" registers, where any of several registers can be used for math/etc.


A load/store architecture typically means that operands to ALU operations have to be in registers, so that you have to load them from memory beforehand and store them back when operations are complete. The opposite typically allows operations between a register or
accumulator and a memory location directly. RISC architectures tend to be load/store, since a lot or the CISCness of CISC processors shows up in implementing complex "addressing modes" for accessing the memory operands. In a RISC architecture, all that complexity only has to be implemented in the load and store instructions (if at all.)


Memory Mapped I/O

Step 4: Thoughts About Hardware Tools

Picture of Thoughts About Hardware Tools

Minimally, you'll need some sort of programmer to load the program into the microcontroller.
These vary wildly in cost. It's pretty common for manufacturers to offer some low-cost programmer so that people can "evaluate" their microcontrollers without risking too much cash (or requiring director level approval :-) "low cost" used to mean "less than $500" (which happens to be a common "expensable" limit), but the number has been going down. I think you can find manufacturer supplied development tools for most of the microcontrollers mentioned here for
$50 or less.

Cheaper tools can be bought from third parties, or built yourself. If you don't mind the possibility that bugs in your tools might cause more problems than bugs in your code.

Maximally, production gang programmers, In circuit emulators, logic analyzers, oscilloscopes, lab-bench power supplies... You can spend as much money as you've got, probably.

Step 5: Thoughts About Software Tools

Picture of Thoughts About Software Tools

All of the microcontrollers mentioned here have some level of standard tools (at least an assembler) provided by the manufacturer. Most have "Integrated Development Environments" (IDE) that allow integrated use of an editor (that you won't like) with the assembler, some compilers, and a simulator (of perhaps limited value.) Some have significant additional support from the open source movement.

Tools from manufacturers aren't always great, but you appreciate them more after you've tried to use a microcontroller that doesn't have any such tools available...

Step 6: The $100 Paradox

Picture of The $100 Paradox

If your budget extends as far as $100 for the computing hardware, it's worth noting that you
have bought your way into an interesting realm of "bang for buck."

"About" $100 will buy:

- Relatively fancy development board for most micros; covering a wide range of processors and performances (including PC compatibles, for instance.)
- brand new Low end palmtop (ie Palm Z22)
- used last-generation desktop system (go two generations old and you can probably get a display too.)

It WON'T buy much in the way of custom development, if you're paying for it.

Now a palmtop makes a lousy motor controller. But if you "need" the color display and touchscreen, it might be easier (and cheaper) to add motor control electronics to a palmtop than it is to add a display to a bare microcontroller. Especially since the palmtop comes with a development environment for making the display DO things...

Step 7: Microchip PIC Microcontrollers

Picture of Microchip PIC Microcontrollers

The Microchip PIC microcontrollers were perhaps the first that were marketed to the hobbyist and student community, one of the first microcontrollers to be offered in a relatively small package (18 pin DIP) and one of the first to implement flash or eeprom program memory (in the PIC16C84 in 1993)

Architecture: harvard, accumulator based (mostly)
Package sizes: 6, 8, 14, 18, 20, 28, 40, ... 100
Program memory size: 256 words (12bit words = one instruction) to 256k bytes (2 bytes=1 instruction)
Data RAM: 16 to ~3900 bytes (4096 byte address space, shared with peripheral registers.)
Special features: EEPROM, 20mA output drive, several "sub-architectures"

Flash memory based PIC microcontrollers curently range from vanishingly small 6-pin chips in SOT23 packages to 100pin TQFPs. The basic architecture has been extended to chips with 16bit ALUs and integral DSP functionality.

Microchip has a liberal sample policy and chips are widely available from many vendors.

Step 8: Resources for Microchip PIC

Picture of Resources for Microchip PIC
There are a bunch of existing Instructables that use use Microchip PICs:
Intro to PIC Microcontrollers
PIC micro Timer Code
"TouchTimer" EggLight
Business Card PIC Programmer
Buildng the Inchworm ICD2 PIC Programmer / Debugger
Other PIC Instructables

...Collaborators feel free to extend this page here...

Step 9: Atmel AVR

Picture of Atmel AVR

As near as I can tell, Atmel came along and decided to steal some of Microchip's business by offering "similar but better" chips. Some things they did right, some things they didn't do so well. But the Atmel AVR chips have also gained a lot of popularity among hobbyists, and we get to cash in on the sometimes-war between Atmel and Microchip. My subjective observation is that microchip seems to do low-end chips a bit better, and Atmel does high-end chips a bit better.

Architecture: harvard, GP register based (mostly)
Package sizes: 8, 14, 20, 28, 40, ... 100
Program memory size: 1k byte to 256k bytes (2 bytes=1 instruction)
Data RAM: 32 to 8k+32 (32 bytes of gp registers, 0 to 8k of RAM)
Special features: EEPROM, 20mA output drive

Step 10: Resources for Atmel AVR

Picture of Resources for Atmel AVR
GCC supports all but the smallest AVRs; giving you a C compiler of substantial quality for free.
  • GCC and WinAVR
  • Arduino is a sort of combination of some standardized hardware based on the ATmega8 or ATmega168 and a simplified development environment that hides some of the complexities of using gcc for AVRs. See also under "modules."

Product guides/comparison charts:
Instructables using Atmel AVRs:
Getting started with AVR microprocessors on the cheap
Programmable LED
Synchronizing Fireflies
Other AVR Instructables

...Collaborators feel free to add additional information here...

Step 11: Intel 8051 and Variants

Picture of Intel 8051 and Variants

Intel invented the 8051 architecture a long time ago, and garnered some hobbyist interest with the 8052BASIC chip, which contained a basic interpretter in masked ROM and allowed one to build a very small BASIC based computer. Since then the architecture has been licensed and/or stolen by MANY vendors, and good things have happened to it. It's been shrunk, expanded, speeded up, made lower power, had peripherals added, increased memory, flash and eeprom (and even ferromagnetic ram) added. Most variants are somewhat harder to find than PIC or AVR chips.

Step 12: Resources for 8051

Picture of Resources for 8051
...add more here

Step 13: Freescale (Motorola) 68HC908, HCS08

Picture of Freescale (Motorola) 68HC908, HCS08

Motorola (well, now Freescale) has several lines of popular microcontrollers, the most accessible of which seems to be the flash-based 68HC908 and/or HCS08 or RS08 (all the same or very similar architectures, with some renaming and assorted minor differences) series. Traditionally, Motorola chips have been very difficult to obtain through low-volume channels (ie to the hobbyist) and Mot hasn't been very good about distinguishing chips you can actually buy vs chips that are so targetted to a particular industry segment that they're essentially unobtainium. But they seem to be catching on. Many can be bought at Digikey, and low-cost development systems are pretty common.

The Freescale xx08 microcontrollers are one of the few microcontrollers with a genuine von Neuman architecture. Peripherals, Flash, and RAM all share the same 64k address space.

Step 14: Texas Instrument MSP430 Micropower Microcontrollers

Picture of Texas Instrument MSP430 Micropower Microcontrollers
Texas Instruments garnered some interest when they introduced (bought?) their MSP430 series of extemely low-power microcontrollers. Until recently, most of the MSP430s were only available in assorted hobbyist-unfriendly SMT packages, but a couple of recent chips have been introduced in DIP packages. And there's a low cost USB-development dongle that offers better than the usual functionality for such things, so maybe things are looking up.

The MSP430 is one of the few natively 16-bit architetcures in the microcontroller world.

Step 15: ARM Microcontrollers

Picture of ARM Microcontrollers
ARM is a company that designs microprocessor architetcures, and licenses them to manufacturers who build actual chips. The ARM is a 32bit true RISC architecture, and scales upwards to CPUs with floating point hardware and clocks speeds of several hundred MHz. If you have a palmtop, it probably contains an ARM-based chip. Your cellphone probably has an ARM based chip.

Recently, some of the manufacturers of ARM architecture chips have started offering combinations of on-chip memory and peripherals, and price, that put them into the same marketplace with 8 and 16bit microcontrollers. If you're likely to need lots of memory and performance, it may be worth looking at ARM chips. Or maybe even if you're NOT. As a professional, the possibility of having a single architecture that spans from 28pin microcontrollers to 400MHz router CPUs is attractive in many ways.

Currently, I'm finding that the breadth of the ARM space seems to generate some confusion. Putting together a tool set and development environment for a particular ARM chip can be challenging.

Step 16: Other Interesting Microcontrollers

- Cypress PSOC
- Renesas (Hitachi) H8, M6

Step 17: Modules, Bootloaders, and "hidden" Microcontrollers

Picture of Modules, Bootloaders, and "hidden" Microcontrollers

A number of companies have made a business of selling "modules" , usually incorporating some sort of microcontroller and some of its support components with a high-level-lanaguge development environment, some sort of chip-programming capability, and communications. This gets rid of the need for any special hardware tools (usually just a cable to your PC), provides the HLL, and in general lets you get started much faster than the "pure" microcontroller route. The main disadvantage would be price ($30 for a basic stamp vs $5 for a chip with similar capability) and (sometimes) performance (the basic stamp uses interpreted basic, which is very slow compared to native code.)

Parallax: home of the Basic Stamp
Basic Micro "ATOM"
SunSpot Java thing
Modules/IDEs with ethernet/etc
Arduino: open source hardware and IDE for Atmel AVR

Another disadvantage is WRT the education aspect. You won't learn much about "microcontrollers" by programming a module in a HLL that hides ALL the microcontroller details.

Step 18: Zilog Z8 and Z80 Chips

Picture of Zilog Z8 and Z80 Chips

Zilog (inventor of the famous Z80 microprocessor chip) has updated versions of the Z80 in microcontroller form, and also updated versions of the even older Z8 architecture. Both have flash memory and some interesting peripherals , and inexpensive "evaluation boards" that include a C compiler. At one time, the zilog evaluation boards were quite "full" compared to many low cost evaluation boards, but the current versions seem less so. (My EZ8kit has 4 5x7 matrix displays, an IRDA transceiver, two rs232 async ports, an rs485 port, and assorted buttons and lights. IIRC, it was $50 (special deal at a trade show.))

Fritzk9 said in comments:

Most of the people who have commented list the PIC, PICAxe, ARM, 8052, or Basic Stamps. These are all popular chips, but if you are just getting started with microcontrollers, you might want to start with something fairly cheap. How does $40 sound?

That's what the Zilog Z8 Encore! 8-bit microcontroller development kit costs. The Z8 Encore! microcontrollers are available with 1K to 64K of flash RAM. For speed, they operate at 5- to 20-MHz, and depending on the chip, they are available in various packages from 8 to 80 pins. The $39.95 development kit contains a development board with input/output pins, a wall wart power supply, computer cable (USB or serial to connect your computer to the development board), and a free C compiler and assembler that runs under Windows. You don't need to buy or build a programmer, since you can program the chip right in the circuit you've built -- without having to remove it and reprogram it in a programmer.

All the Encore! chips can communicate serially through a UART (some have 2 UARTs). Some have analog-to-digital converters built-in, and some have an infra-red (IRDA) communications port. Oh, and there are up to 4 built-in timers on the chip, depending on the chip version. The price of an Encore! microcontroller is pretty reasonable, given all the capabilities (anywhere from $3 to $13 each from Digi-Key).

The C compiler is excellent. The Zilog C compiler has most of the capabilities of "big boy" compilers, like a floating point library, trig functions, etc. It produces better assembly code than I can, so I use it almost exclusively.

Remember that almost any non-trivial code you write will have bugs. The debugger supplied with the development kit permits you to step through your code and look at the results of variables stored in the various registers to help you locate your mistakes.

Digi-Key stocks two different Encore! development kits (either one costs $39.95); one for 8K/4K chips, and the other for 16K through 64K chips. The Digi-Key part number for the 8K/4K development kit is 269-3183-ND, and the part number for the 64K development kit is 2693249-ND.

Zilog's website has a large number of sample applications, full documentation of their microcontrollers, and free updates to the C compiler supplied with the development kit.

I'd say that the only downside is that the Z8 Encore! isn't as popular as the PIC as a hobbyist chip, so there haven't been any books or many of projects published for it except for some articles in Circuit Cellar magazine. Oh, and if you are interested in microcontrollers, Circuit Cellar and Nuts & Volts magazines are two that cover the subject. Both are available at Barnes & Noble bookstores -- maybe Borders too. Or, just go directly to their websites:

Circuit Cellar Magazine
Nuts & Volts Magazine

Step 19: Win Valuable Prizes

Picture of Win Valuable Prizes
Periodically, many of the manufacturers of microcontrollers will sponsor "Design Contests" where engineers all over will be challenged to come up with a particularly clever design using a particular microcontroller. The idea is to entice engineers into looking at THEIR chips even if they're already using some other microcontroller. At any given time of year, there's likely to be at least one contest "in progress." There are a number of good things about these contests:

  • PRIZES. Some of the contests have significant cash prizes. $5-10k, which is not to be sneezed at.
  • Winning even a minor prize (or being published) will look good on your resume.
  • Frequently the contests are accompanied by "special offers" in the form of low cost development tools or free samples.
  • Motivation!
  • A contest may generate at least temporary interest and discussion on some processor of interest.
    • The end of the contest usually includes publishing some or all of the entered designs, serving as useful examples for everyone else.

I've talked to reps at trade shows; the final number of entrants to these contests tends to be pretty small, so as contests go your chances of winning (if you complete an entry) are unusually high.
Usually there is nothing in the rules that prevents the entry from also being (say) your college senior design project. Alas, many contests are restricted to people over 18, and completing an entry in the timeframe usually allowed is not so easy as it sounds before you've tried it.

Currently running:

Freescale Low-end x08 "Black Widow" Contest half-price development kit on completion of 2 parts of the 4-part contest. $10k+ prize.

PICList Free PCB Contest Free olimex-fabbed PCB for your design. Small prize, small contest; runs every month! Must be PIC or SX based.

General reference for a lot of contests (includes past winners, etc.):
Circuit Cellar Magazine Contest Page

I entered Freescale's recent "Black Widow" contest for designs based on their very small 8-bit microcontrollers, which had a top prize of $10000 cash plus a trip to their design conference (and $1000 for each of 10 finalists to aid in completing a prototype.) I didn't make the finals :-(
However, I netted a T-shirt, a coupon good for $15 off a (low cost) development system, and oneof some ROOMBA robot vacuum cleaners raffled off to "early entrants." And I learned some stuff, too. That's not a bad haul. The contest apparently had 775 participants at the final phase...

Step 20: Try It Online: Virtual Labs

Picture of Try It Online: Virtual Labs

Tech Online is a pretty good website for technical News in general, and they've apparently implemented something they call "Virtual Labs" that will allow you to try out a vendor's development system over the internet with nothing but a browser on your end. I used this for the first time as part of the Freescale "Black Widow Design Contest", since one of the required steps was to get the virtual development board to behave in a certain way. It was pretty neat. But it wasn't entirely bug-free, so be a bit careful.

They have several Freescale, Luminary, Renesas, and TI development systems available.

Step 21: Free Stuff!

Picture of Free Stuff!

In the old days, companies would mail datasheets and databooks to just about anyone who asked. The web has done away with the need for most of that, and many vendors seem to have taken the money they saved on postage and used it to make their sample program more accessible.

The way "free samples" work is that the manufacturer will happily send you several samples of a part, in the hopes that you'll try them out and be so impressed that you'll used them in a project that nets them sales of millions of units. Or (if you're a student) that they'll win some loyalty and "mindshare" when you get out into the real world and be more likely to use their microcontrollers than someone else's. Or that you'll write some magazine or web article that will call attention to their products. It's a marketing expense, and it's probably cheaper than many marketing expenses...

Microchip, Freescale, and TI all have very liberal sample policies. Look up a part on their website, and it's likely to have a "sample" button somewhere on the page; send them some info and in a week or so you're likely to have chips in hand. Other vendors are harder; you may have to talk to a representative. Vendors have a weak spot (as they should) for students; you might think that a sample request from a "" email address carries less weight than one from "", but that's not necessarilly true.

Ethics of Free Sampling

I suppose there are ethics to requesting free samples. Here are some of my personal rules:
1) NEVER resell samples. I see lots of eBay listings for chips in quantities that match the max sample quantities of some vendors. It pisses me off. (Of course, this COULD be another "sample channel" officially endorsed by the vendor. But it doesn't look that way.)
2) Don't lie more than necessary. I think making up a company name is fine, but inventing 10000 fellow employees and a product that will sell 10k/year of a chip is over the line. (This has been especially interesting as I've transitions from student to engineer at unknown company to engineer at extemely well-known company. These days If I ask for a sample, I'm likely to get a phone call from an enthusiastic salesperson hoping for a win in our next big product, and I usually explain that no, the best they can hope for from me is to get inserted into some odd piece of custom lab gear.)
3) Don't be greedy. Some vendors limit you to so many samples per month, or per order. That doesn't mean you should submit new sample orders every month, or order the maximum number of samples allowed. (OTOH, be aware that for many of the chips we're talking about, the order processing and shipping costs more than the chips themselves...)
4) Spread Good Publicity. If you pubish a project that used a sample, be sure to say nice things about their product. If you can't find something nice to say about a chip you sampled, you probably shouldn't say anything at all. ("Don't look a gift horse in the mouth"?)


miraheng (author)2017-01-11

how to program micrcontroller as i dont understand this one

bhuvanesh kumar s (author)2016-10-01

GUYS I NEED A BASIC MICROCONTROLLER(for controlling robot with few other specifications) FROM TEXAS INSTRUMENTS FOR A CONTEST.

me suggest me @ or

MarkusS17 (author)2015-12-17

I am totally new in the MicroController thing. I have some experience in music electronics and basic programming.

Now im looking for a small solution to add sampling to my Guitar. It would have 6-8 simple keyboard switches that trigger a sample from an SD-Card that then goes out to a simple audio jack output. Also it should be able to power three leds (only one active at a time). Programming doesnt need too much memory since all it will do is: two buttons allow to go up and down through the three banks. The other buttons are each assigned to one audio sample on the sd card for each bank. The leds show which of the three preset banks are active. The other 4-6 buttons trigger the sample, pull it from the card and play it to the audio jack.

What kind of microcontroller could you recommend for this kind of purpose?

thanks in advance for your help.


westfw (author)MarkusS172015-12-18

Your "programming" is more complicated than you think because both reading an SD card and playing the data as audio are relatively complicated tasks. A number of Arduino users have been surprised by "all I do is serve up SD files on a web server (SD library plus ethernet library: similar complexity) and my memory is almost gone!"
An arduino-like board would probably work OK, but something like a PJRC "Teensy 3.2" would give you a lot of breathing room (and it has an excellent audio library!)

I really need to update this instructable to reflect the changes in the "microcontroller decision process" that have occurred since (and because of) the Arduino popularization!

MarkusS17 (author)westfw2015-12-18

thanks for actually taking your time to reply.

Yeah, i looked up a lot of videos and articles on the whole process of reading sd cards and playing audio. I found a good video on how to do the sd/microcontroller communication through serial peripheral interface. (so at least i no im looking for a controller with SDI/SDA and SDC pins) It also explains the whole wakeup and communication protocols to actually read and write data onto the sd. The whole playing audio business is what gives me a headache right now. I am a luthier and don't have any kind of background in computer sciences, except a bit of playing around in c++ and basic.

I actually started out by thinking about getting an arduino clone but for my purposes every inch of space i can save is a big plus. Thank you very much for the recommendation. I will order one Teensy and just try to figure out the whole thing step by step. If you ever get around to writing a follow-up on your article i would be very interested to give it a read.

inzamama (author)2015-10-10

I am working on my FYP, in which i am using some sensors, dc stepper motor, a ziggbee.

this is my first experience working on microcontroller i haven't any idea about microcontrollers. my instructor gave me two option either go with PICmicrocontroller or AVR. can any one tell me which one i should use??????? that would easy for me.

dsur (author)2014-10-20

Tech Online "Virtual Labs" does not exists anymore!
Good article, but it is still difficult how to select. For example what about ESP8266? How to compare with other chips. It will be good, if there is comparison table.

westfw (author)dsur2014-10-22

Yes, this article is almost 8 years old now. It was supposed to have put forth some general principles that a hobbyist might use to select a microcontroller, rather than get into a "x is better than y" debate. And those principles were supposed to stay reasonably accurate regardless of changes in specific products. To some extent, I think this was a success, and I'm not at all interested in trying to maintain a comparison table of everything that exists, especially if you want to include chips/modules that have traditionally not been documented in English or sold in the US.

On the other hand, I think the question has changed somewhat. Today, whether you use a single chip or a module-scale product has become a much more significant issues, and the breadth of the "modules" has become very large. For many hobbyists, the decision now is "Arduino or Raspberry Pi", rather than "AVR vs ARM"...

monna (author)2013-09-07

nice article but i am still confused wat to choose microcontroller or microprocessor???
I am a final year student working on my FYP project, which contains 9 resistive type sensors, 5 contact sensors and 2 accelemeter or Gyro.also i have to use a display to show output and Speaker with text to speech converter. now wat should i use??? microcontroller or microprocessor???

westfw (author)monna2013-09-07

The original article is getting a bit old, but...
OK. It sounds like you need 9 A-D channels with relatively slow sample rates, 5 digital inputs, I2C or SPI for the Accel/gyro, some sort of display interface (which can range from one pin with an external intelligent display of some kind, to "many" pins dedicated to AMLCD displays), and your text-to-speech (are you using an external text-to-speech module, or do you want your project to generate audio directly?)
This is enough 'stuff' that you can immediately eliminate some candidates; an Arduino Uno, or the microcontroller it uses, is probably not enough, for example.
The "microprocessor" vs "microcontroller" issue is usually determined by memory use, and you don't say anything about what your software needs to do or how big you expect it to be. You can get microprocessor systems with megabytes to gigabytes of RAM, while it's a rare microcontroller than has more than 64k.
A big question is "chips or module" - A beaglebone will probably do everything you need, if you're "allowed" to use a pre-built system like that (with some added stuff for specific sensors, plus software.) OTOH, a Beaglebone is probably above the complexity of what you would be expected to build for this class of project.

IstvánS (author)westfw2014-08-30

Wow, answering that ... your self control must be amazing; hats off!

monna (author)westfw2013-09-08

can i get your email id so that i can give u full description ....plz

mohdsharukh (author)2014-03-21

i am working on a project in which i need to to produce an interface b/w 2 usp ports for data transfer.plz suggest which micro controller will meet me requirements

westfw (author)mohdsharukh2014-03-23

Insufficient information. Insufficient spelling. I assume you mean 2 USB "things", since USB is more of a network connection, and you don't actually transfer data "between two USB ports." It becomes highly dependent on what types of "things."

An FTDI VNC2 microcontroller will probably do it, but it may not be the easiest solution. And it's sorta weird in several ways.

ahmedebeed555 (author)2014-03-16

Thank you for the information and code of ethics. Here are some extra information about getting free samples.

My blog

boardsmm (author)2014-01-06

HAPPY BIRTHDAY article - you turn 7 years old today! ;-)
What a great write up this is - but/and may I humbly suggest a revision? I'm guessing quite a few things have happened in 7 years. For instance, the Arduino mention probably deserves some more prominence to name one thing.
Again, thank you!

shivani363 (author)2013-10-05

which microcontroller should i use if i want to store some images captured by a camera which is to be interfaced with the microcontroller itself!!

westfw (author)shivani3632013-10-13

This instructable offers a set of guidelines for choosing a microcontroller, it can't (and *I* can't) recommend a particular micro for every application that comes along... That said, any sort of image processing usually moves into the realm of needing multiple megabytes of memory, rather than the "several kbytes" that you see on most microcontrollers. That probably means that you'd be best off with one of the newer "single board computers" like Raspberry Pi or BeagleBone. (In fact, there is/was a BeagleBoard variant LeopardBoard specifically designed for experimenting with various camera modules.  It's a bit old and expensive by RPi standards, but not horribly so...)

westfw (author)2013-07-28

No, the hex file contains the "raw machine code", which is very processor and even chip specific. For example, an AVR hex file for the the atmega8 will probably NOT work on an ATmega328, even though they are both 28-pin AVR chips.

melissasue (author)2012-12-26

We were discussing this very topic on the Digi-Key TechXchange forums the other day: If you need help selecting a microcontroller for a specific project, the folks there are a big help!

r0b0t1 (author)2012-06-22

I'm not sure if anyone will read this instructable, or this comment, any time soon... But I must warn you. Stay away from Zilog. To put it nicely, actually *using* their chips is... not easy.

I've tried to diagnose the problem, but their help desk is no help and by this time (2012) they haven't updated most of their line. It is sad, because a lot of the chips actually have fairly nice features (high drive IO pins, to name one that is hard to find, and a good amount of timers, something I've only seen on SiLabs 8051s) but are impossible to use off of the development boards.

If anyone has solved these problems... I've got some ZNEO motor control µCs laying around I still want to use. Help!

seefriek (author)2011-11-03

These are 8051 core processors, and are very nice.

denilsonsa (author)2011-10-17

After doing a very small project using PIC16F870 and doing a big project using ATmega8, I've written a comparison between AVR and PIC on my blog:

I hope it's useful for other people as well.

TL;DR: In my opinion, AVR is better than PIC.

akusumakar (author)2011-08-01

go for p89v51rd2 make a simple development board interfacing max232, it is d best

signalelektronik (author)2011-06-27

I've use ST ARM module. STM32VL Discover kit very Succesfull.

elias.alberto (author)2011-06-12

What about the STM32F103 series? Not so hobbist-friendly because they don't have DIP packages, but they seem to be very reasonably priced (cents more than 8-bit atmega48v) and a performance beast, having 32-bit ARM cores and reaching 72 MHz. I have no idea if are there free IDEs and cheap ways of "burning" the mcus, though. Anyone ever had any experience with them?

VIRON (author)2007-04-03

8031 and 8032 is cheap, can be pulled as a 8051/8052 and bootstrapped from 64K each of RAM and ROM, if you have an eprom programmer. Eproms are cheap nowadays and I once built my own eprom programmers and was able to erase them on a fluorescent "blacklight" tube overnight, when I was REALLY unable to afford new equipment. Every non-USB keyboard probably has an 8048 chip, which may be EPROM compatible, but with limited external memory and different instructions, and has been around since the days of ATARI 2600. MicroProcessor mode systems just require extra wiring for address and data buses and separate i/o and memory but are otherwise doing the same things as MicroControllers. The chips I just mentioned have both modes. Many others do too. The art of emulating unsupported i/o is called bit-banging, which is easy for serial (except USB, ethernet, and other monsters), challenging for video, and annoying are those monsters which have wasteful complex protocol overheads that drive me nuts and slow everything down.

C.D33 (author)VIRON2011-01-08

Entertaining, VIRON. I just happen to have an extra keyboard lying around. Could you direct me on how to build an EPROM programmer- the circuit side? This question almost 4 years later.

westfw (author)C.D332011-01-08

You understand that you need the microcontroller from the keyboard (that "maybe" is the correct type), PLUS an EPROM (and maybe RAM) chip that you have to buy, plus a couple of "glue" chips and a couple dozen wires or a PCB to connect it all. It's sort of an entertaining exercise if you've harvested the components from trash, and the alternative is $30 "new" chips (that still need those extra components), but that has long since ceased to be the case. Even if you were to want to experiment with the older architectures, the cost for a flash version of the 8052 (new) is about $2 ( )

panic mode (author)2010-12-30

very nice article and fair review,
i've been using PIC AVR Zilog and now Rabbit

tokomikon (author)2010-11-12

I use ARM microcontroller.

Dave T.
ATmega8535 | ATmega16 | ATmega32 | AVR USB ISP Seller

shaggs31 (author)2010-11-02

Thanks for the info. I really like free stuff!

Goddard007 (author)2010-09-25

Thanks for all the information. It really helped me out.

jastreich (author)2009-01-28

You mention Parallax;s Basic Stamp, but you missed their coolest and most useful two MCUs. The SX and Propeller. The SX is sort of in the Basic Stamp family, but it runs assembly and I think it is a RISC chip. They are cheap, easy to program and are less "hobby" than the Basic Stamps or Javalin chips. The Propeller can run Assembly natively or interpret Spin out of the box, it has 32 general purpose I/O lines which are accessible on all 8 Arithmetic Logic Units (cores they refer to as "cogs").

westfw (author)jastreich2009-01-28

There is a SX-based Stamp, IIRC. Otherwise, I'd describe the SX and Propeller as being sufficiently "far from mainstream" as to not be good choices for a beginner...

coilgunman222 (author)westfw2010-09-21

I'd agree, while I love the propeller IDE and programming language, it is totally importable across architectures, as nothing else uses their proprietary spin code. However, they now have a C compiler for the Propeller, so it may not be as bad a choice for a beginner as it used to be.

devinmccloud (author)2010-08-05

I would like to see a start to finish tutorial on recovering parts from old boards, reading the data sheets and learning what the individual chips are capable of doing. I have hundreds of chips from Motorola to Toshiba sitting around that i removed from electronic boards. It would be nice to know where to start to use this stuff.

WVvan (author)2010-05-18

This is instructable is just what the doctor ordered. I want to get into microcontrollers and spent several hours reading piecemeal accounts trying to gather enough information before I found this most excellent write up. I should have know that Instructables was the place to start.

FYI - this link is broken: "Trip report to an Early TI seminar"

Double Plus Good.

westfw (author)WVvan2010-05-18

Thanks!  Broken link fixed (geocities went away...)

duct tape (author)westfw2010-05-31

RIP geocities
You will be missed T_T

WVvan (author)duct tape2010-06-01

Another bad link.
Step 10.
Device list at AVR Freaks

westfw (author)WVvan2010-08-03

honestly, this instructable was mostly about relatively SMALL microcontrollers, where most of the electronics of the entire project is in the single chip. Your project sounds more complex than that (and not at all an ideal introduction to microcontrollers or hardware in general for a person with your background.)

You could look at the modules that claim to run JAVA or JAVA-like programs, for example:
Or linux/android Single-board computers (Beagleboard ?)
Or even a conventional laptop or DC-powered PC-class machine, perhaps with things like Arduinos to use for real-world interfacing...

duct tape (author)westfw2010-08-03

double post :)

westfw (author)duct tape2010-08-04

Huh. It WASN'T, it had different text. Honest...
Anyway: that link isn't bad, it's just (now) an empty page (with a referral to a relevant page at Atmel.) There are hints that it might come back, so I want to leave the link here alone...

thegoogleist (author)2010-08-02

Ok, I am so confused, I have been looking around for the better part of a day now trying to make sense of this all. You see, where I work we are converting a gas powered go-kart to run on hydrogen, and to manage the fuel system, which is quite complex actually, consisting of several different stages of fuel, we needed to code our own fuel system controller. To do this, one of the other people working on the project was going to use one of the Renesas M16C microcontrollers to do this, but he moved, and now, as the only one on the team with any programming experience, the job has fallen to me. Now granted, I am an amateur Android developer, but the way things are done with these microcontrollers is truly baffling to me. So basically, my boss has said that we can get whatever other controller we need for the project, but it needs to be done fairly quickly. What microcontroller or any other type of product can I use to accomplish this task in a timely manner, going from average Java knowledge, minimal C++ knowledge, and no microcontroller/computer hardware design knowledge? I know this topic is old, but I didn't know where else to ask. Thank you so much!

westfw (author)thegoogleist2010-08-03

honestly, this instructable was mostly about relatively SMALL microcontrollers, where most of the electronics of the entire project is in the single chip. Your project sounds more complex than that (and not at all an ideal introduction to microcontrollers or hardware in general for a person with your background.)

You could look at the modules that claim to run JAVA or JAVA-like programs, for example:
Or linux/android Single-board computers (Beagleboard ?)
Or even a conventional laptop or DC-powered PC-class machine, perhaps with things like Arduinos to use for real-world interfacing...

bigjeff5 (author)2010-07-11

I know this post is a couple years old now, so chances are things have changed a little since you wrote it, but I have to disagree with your assessment of the "module" type setups (arduino, picaxe, etc) as being bad for learning about microcontrollers in general.  I personally have been using an Arduino for about a week and I have to say what I've learned about the ATMega controller, and microcontrollers in general, is nothing short of amazing to me. 

Before the Arduino, these things were black boxes, and while I had an interest in electronics I had nearly zero working knowledge.  Now I feel relatively confident that I could read some reference material on an Atmel chip and work out how to utilize it in a project without the Arduino platform.  Other brands would likely take a little more work getting used to the differences, but it now definitely feels within my reach, whereas before I didn't even think such a thing was possible.

That's the power of boards like the Arduino and other hobby boards - they abstract away the nitty gritty, but it's only one layer of abstraction, so that learning the nitty gritty isn't a huge leap if that's what you want to do.  I'm pretty sure that's what I'm going to do, but like I said I've only been into it for about a week so far.  Even without learning the absolute bare metal workings of the chips, though, the Arduino and others can do anything their respective chips can do, you're simply locked in to certain chips lines. 

The hobby boards allow you to play with microcontrollers without making you start from scratch, which is a significant barrier to entry.  It makes microcontrollers significantly less accessible.  Plus, while the brand-name boards may be $30+, you can easily find kits for less than $15, and if you move certain functionality off board (like the USB or Serial connection) you can drop it down to below $10 - about what you'd spend to use the same micro-controller without the platform.  And once you know how the board works, incorporating it directly into a project board is no problem at all and does not cost much, if any, more than it would to use the microcontroller directly.   At that point you're only paying for parts.

chazpdx (author)2010-06-05

I recently used a PICAXE18x for a school project. I needed something cheap, easy to learn, and easy to get setup. The PICAXE turned out to be the best choice. It kicked butt, was really easy to program, really cheap to set up, the chips are really cheap, and it was powerful enough for what I was doing. It was the first time I'd really played around with a microconroller, and I had it working the day I got it.

Tuxifant (author)2010-05-02

Well done! I've been reading some off-the-net material about these things before but this instructable sums the thing up - compact and informative.

Archive555 (author)2010-01-02

This is by-far the most comprehensive, understandable, and informative Instructable regarding electronics I've ever seen. Without even actually including something to build, as most electronics Instructables do, you've far surpassed my expectations of this guide.

You've helped my decision alot, as I was using AVRs from Atmel, and was experimenting with Arduino, but was thinking of switching to (or expanding to) Pic, as it is far-wider spread, and more comprehensively documented, and you guide re-affirmed this for me.

As I type this, I've ordered a Pic starter kit, including some Pic chips of various sizes, a programmer, and a book detailing some simple, beginner-level circuits. Thank you very much for this extremely well-written instructable!


About This Instructable




Bio: Middle aged geek username also works at,,,
More by westfw:Visualizing EAGLE Edits with a Gerber ViewerMake a Double CD/DVD Case From a Single Sheet of PaperSingle Sided Really Bare Bones Board Arduino in EAGLE.
Add instructable to: