Microcontroller
A
microcontroller (or
MCU) is a
computer-on-a-
chip used to control
electronic devices. It is a type of
microprocessor emphasizing self-sufficiency and cost-effectiveness, in contrast to a general-purpose microprocessor (the kind used in a
PC). A typical microcontroller contains all the
memory and
interfaces needed for a simple application, whereas a general purpose microprocessor requires additional chips to provide these functions.A microcontroller is a single
integrated circuit with the following key features:
*
central processing unit - ranging from small and simple 8-
bit processors to sophisticated 32- or 64-bit processors
*
input/output interfaces such as
serial ports
*
peripherals such as
timers and
watchdog circuits
*
RAM for data storage
*
ROM,
EEPROM or
Flash memory for
program storage
*
clock generator - often an oscillator for a quartz timing crystal, resonator or
RC circuit
This integration drastically reduces the number of chips and the amount of wiring and
PCB space that would be needed to produce equivalent systems using separate chips.
Microcontrollers are inside many kinds of
electronic equipment (see
embedded system). They are the vast majority of all processor chips sold. Over 50% are "simple" controllers, and another 20% are more specialized
digital signal processors (DSPs). A typical home in a
developed country is likely to have only one or two general-purpose microprocessors but somewhere between one and two dozen microcontrollers. A typical mid range vehicle has as many as 50 or more microcontrollers. They can also be found in almost any
electrical device:
washing machines,
microwave ovens,
telephones etc.
|
A PIC 18F8720 microcontroller in an 80-pin TQFP package. |
In addition to the key features listed above, most microcontrollers today take further advantage of not needing external pins for memory buses. They can afford to use a
Harvard architecture: separate memory buses for instructions and data, allowing accesses to take place concurrently.
Microcontrollers also usually have a variety of
input/output interfaces. Serial I/O (
UARTs) are very common, and many include
analog-to-digital converters, timers, or specialized
serial communications interfaces like
I²C,
Serial Peripheral Interface and
Controller Area Network.
Originally, microcontrollers were only programmed in
assembly language, or later in
C code. Recent microcontrollers integrated with on-chip
debug circuitry accessed by
In-circuit emulator via
JTAG enables a programmer to debug the software of an embedded system with a
debugger.
Some microcontrollers have begun to include a built-in
high-level programming language interpreter for greater ease of use. The
Intel 8052 and
Zilog Z8 were available with
BASIC very early on, and BASIC is more recently used in the popular
BASIC Stamp MCUs.
Microcontrollers trade speed and flexibility against ease of equipment design and low cost. Manufacturers have to balance the need to minimize the chip size against additional functionality.
Finally, it must be mentioned that microcontroller architectures are available from many different vendors in so many varieties that they could rightly belong to a category of their own. Chief among these are the
8051,
Z80 and
ARM derivatives.
Until
May 2004, these µCs were developed and marketed by
IBM, whose 4xx family was sold to
Applied Micro Circuits Corporation.
*
403 PowerPC CPU**PPC 403GCX
*
405 PowerPC CPU**PPC 405EP
**PPC 405GP/CR
**PPC 405GPr
**PPC NPe405H/L
*
440 PowerPC Book-E CPU**PPC 440GP
**PPC 440GX
**PPC 440EP/EPx/GRx
**PPC 440SP/SPe
*
AT89 series (Intel 8051 architecture)*
AT90, ATtiny, ATMega series (AVR architecture) (Atmel Norway design)
*
AT91SAM (ARM architecture)*
AVR32 (32-bit AVR architecture) *
MARC4*
CY8C2xxxx (
PSoC)
*
8051 Family
*MAXQ
RISC Family
*Secure Micros Family
Until
2004, these µCs were developed and marketed by
Motorola, whose semiconductor division was spun-off to establish Freescale.
*
8-bit**
68HC05 (CPU05)
**
68HC08 (CPU08)
**
68HC11 (CPU11)
*
16-bit**
68HC12 (CPU12)
**
68HC16 (CPU16)
**
Freescale DSP56800 (DSPcontroller)
*
32-bit**
Freescale 683XX (CPU32)
**
MPC500**MPC 860 (PowerQUICC)
**MPC 8240/8250 (PowerQUICC II)
**MPC 8540/8555/8560 (PowerQUICC III)
* F²MC Family (8/16 bit)
* FR Family (32 bit)
*
FR-V Family (32 bit RISC)
*
HT8*
8-bit**
XC800 family**
C500/C800 family*
16-bit**
XC166 family*
32-bit family**
TRICORE family*
8-bit**
MCS-48 (8048 family – also incl. 8035, 8038, 8039, 8040, 8X42, 8X49, 8050; X=0 or 7)
**
MCS-51 (8051 family – also incl. 8X31, 8X32, 8X52; X=0, 3, or 7)
**
8xC251*
16-bit**
80186/
80188**
MCS-96 (8096 family – also incl.
8061)
**
MXS296*
32-bit**
80386EX (i386EX)
**
80960 (i960)
*8 and 16-bit microcontrollers with 12 to 24-bit instructions
*ability to include DSP function
*12-bit instruction
PIC*14-bit instruction PIC
**
PIC16F84*
16-bit instruction PIC
*
COP8*
CR16*
17K*
V25*
75X*
78K*
V850*
LPC3000*
LPC2000(Renesas is a joint venture of
Hitachi and
Mitsubishi.)
*
H8*
SH*
M16C*
M32R*
SM2XX Family - Flash Memory Card Controllers*
SM321 - USB 2.0*
SM323 - USB 2.0*
SM323E - USB 2.0**Silicon Motion's SM321E and SM324 controllers support SLC and MLC NAND flash from Samsung, Hynix, Toshiba and ST Micro as well as flash products from Renesas, Infineon and Micron. The SM321E is available in a 48-pin LQFP package and a 44-pin LGA package. The SM321E supports up to 4 SLC or MLC NAND flash chips with 4 bytes / 528 bytes ECC
*
SM324 - USB 2.0**Supports dual-channel data transfer at read speeds of 233x (35MB/sec) and write speeds of 160x (24MB/sec), making it the fastest USB 2.0 flash disk controller in the market. The SM324 also has serial peripheral interface (SPI) which allows for not only Master and Slave modes, but the flexibility to develop more functionality into USB flash disk (UFD) products such as GPS, fingerprint sensor, Bluetooth and memory-capacity display. The SM324 is available in a 64-pin LQFP package. The SM324 supports 8 SLC or MLC NAND flash chips with 4 bytes / 528 bytes ECC.
*
SM330 - USB 2.0*
SM501 - Mobile Graphics*
SM712 - Mobile Graphics*
SM722 - Mobile Graphics*
SM340 - MP3/JPEG*
SM350 - MP3/JPEG*
SM370 - Image processing*
ST 62*
ST 7*
ST 10*
μPSD*
TMS370*
MSP430*TLCS-870 (8-bit CISC)
*TLCS-900 (16 and 32-bit CISC)
*TX19A (32-bit RISC)
*
8-bit**
W65C02-based µCs
*
16-bit**
W65816-based µCs
*
SX-20 SX-28, SX-48, SX-52**Ubicom's SX series is an 8 bit microcontroller which has unusually high speed, up to 75Mhz (75 MIPS), and a high degree of flexibility. Some users have referred to these microcontrollers as PICs on steroids. While Ubicom's SX micros are limited in variety, their high speed and additional resources allow programmers to create 'virtual devices' as required. Refer to Parallax's Web site for information, as they are the main distributor of these devices.
*
IP2022** Ubicom's IP2022 is a high performance (120 MIPs) 8 bit microcontroller. Features include: 64k FLASH code memory, 16k PRAM (fast code and packet buffering), 4k data memory, 8-channel A/D, various timers, and on-chip support for Ethernet, USB, UART, SPI and GPSI interfaces.
*
IP3022**IP3022 is Ubicom's latest high performance 32bit processor running at 250Mhz featuring 8 hardware threads. It is specifically targeted at Wireless Routers.
*
XE8000 8-bit microcontroller family
*
Microblaze softcore 32 bit microcontroller
*
Picoblaze softcore 8 bit microcontroller
Zilog's (primary) microcontroller families, in chronological order:*
Zilog Z8 - 8-bit
Harvard architecture ROM /
EPROM /
OTP microcontroller with on-chip
SRAM.
*
Zilog Z180 -
Z80 based microcontroller; on-chip
peripherals, but external memory; 1MB address space.
*
Zilog eZ8 - Better pipelined
Z8 with on-chip
Flash memory; 2-3 times as clock cycle efficient as original
Z8.
*
Zilog eZ80 - Fast 8/16/
24-bit Z80 with
FLASH,
SRAM,
peripherals, and linear addressing of 16MB; 3-4 times as clock cycle efficient as original
Z80.
...And endless BASIC programmed MCUs
For almost every bare microcontroller manufacturer, there are a dozen little companies repacking them into a more hobbyist friendly package. Their product is often an MCU preloaded with a BASIC interpreter, soldered onto a Dual Inline Pin board along with a power regulator and other goodies.
PICs seem to be very popular here, possibly due to good static protection. More powerful examples (e.g. faster execution, more RAM and code space) seem to be based on Atmel AVR or Hitachi chips and now ARM.
Comfile Technology Inc. produces a series of microcontrollers branded as CUBLOC and CuTOUCH, using the Atmel
ATmega128 processor. They are very price competitive, being aimed at industrial applications, and include some nice features such as Ladder Logic in addition to BASIC, a huge 80Kbyte program memory, and hardware pulse width modulation.Their focus in on developing industrial controllers which are fast, easy-to-use, and versatile. Comfile Technology's CuTOUCH is a visual Touch-screen controller that can be programmed in BASIC and Ladder Logic. This product is the first of its kind in the world yet.
*
BASIC Stamp – The Big Name in BASIC microcontrollers. They are Microchip PICmicros programmed with an interpreter that processes the program stored in an external EEPROM. Several different modules are available of varying processing speeds, RAM, and EEPROM sizes. Most popular is the original BASIC Stamp 2 module. The BASIC Stamp is used by Parallax as a platform for introductory programming and robotic kits.
*
SX-Key – Parallax's development tool for the SX line of microcontrollers, supporting every SX chip commercially available. Using free SX-Key software (Assembly language), or the SX/B Compiler (BASIC-style language) from Parallax, the SX-Key programming tool can program SX chips in-system and perform in-circuit source-level debugging.
This range of controllers is based upon Microchip PICmicro's programmed with a BASIC interpreter. Using internal EEPROM or Flash to store the user's program they deliver a single-chip solution and are quite inexpensive. A PICAXE programmer is simply a serial plug plus two resistors. Complete development software, comprehensive documentation and application notes are all available free of charge.
The BASIC-like programming language is almost identical to that used by Parallax's Basic Stamp 1 (BS1) but has been enhanced to support on-chip hardware and additional functionality. In common with the BS1 programming language, the PICAXE has support only for a limited number of variables and lacks block-structured programming constructs.
Initially targeted at the UK educational sector, use of the PICAXE has spread to hobbyists, semi-professionals and it can also be found inside commercial products. With its user base in many countries, the PICAXE has steadily gained a good international reputation.
ZX-24, ZX-40
The ZX series MCUs are based on the Atmel
ATmega32 processor and run a Virtual Machine that features built-in multi-tasking, 32-bit floating point math and over 1K of RAM for user's programs. Multi-tasking facilitates a more structured approach to coding for interface devices that require prompt service, e.g. serial devices, infrared remotes, etc.
The programming language for the ZX series is ZBasic, a modern dialect of Basic modeled after Microsoft's Visual Basic. The biggest improvement over the typical MCU Basic dialect is parameterized subroutines/functions that support local variables. Strong type checking is another improvement that aids in writing correct programs more quickly.
*
Official ZBasic and ZX WebsiteCoridium ARMexpress
ARMexpress is the first of a new family of DIP-24 (stamp-sized) controllers that combine a 60 MHz ARM CPU with a builtin BASIC compiler to achieve new levels of performance in this form factor. This combination makes this simple to use but very fast controller a good choice for the prototype builder or system integrator. 40K of code and 40K of data are available to the user, and code speed rivals that of programs written in C. The dialect of BASIC conforms more to Visual BASIC, but has hardware extensions like PBASIC.
*
Coridium ARMexpress website*
In-circuit emulator (ICE)*
Microbotics*
Contiki – A small-footprint
open source, yet fully featured, operating system developed for use on a number of smallish to large industrial systems ranging from 8-bit computers to embedded microcontrollers.
Microcontroller Industry Information and News
*
Microcontroller.com - Industry Website. Lists microcontroller manufacturers, types, speeds, comparisons.
*
Embedded.com – Embedded Systems Programming Magazine
Tutorials
*
Microcontrollers for Robotics, an Introduction*
PIC Microcontroller Tutorial & Projects*
Very Good Microcontroller Tutorials Resource*
Understanding DC Electrical Characteristics of Microcontrollers*
Introduction to the MAXQ Architecture*
PIC Microcontroller ProgrammingRobotics
*
Home Robots*
Microcontroller based robots*
Robotics & Motor Control*
Controlling mobile robots with Atmel controllers*
Learn-c.com – Controlling real-world with computers
Projects
*
AVRGuide Atmel microcontroller project collection
*
PicGuide MCU Projects database and resource page
*
Commlinx Microcontroller projects with code and circuit schematics
*
K9spud.com – Microcontroller electronics projects and kits
*
Free Microchip PIC resources and projects with descriptions, schematics and source codeForums & Discussion Groups
*
PIC Forum & Source Codes*
Microcontrollers Forum*
Microcontrollers Discussion GroupsOthers
*
FreeRTOS – An open source RTOS with projects for many microcontrollers
*
DeviceTools.com Tools and silicon for embedded device developers
*
Technical information on microcontrollers