Mikrocontroller
Mikrocontroller (auch µController, µC, MCU) sind Ein-Chip-Computersysteme, bei welchen nahezu sämtliche Komponenten (wie z. B.: der Hauptprozessor (Central Processing Unit, CPU), der Programmspeicher (meist auf Read-Only-Memory- (ROM-) oder Flash-Basis), der Arbeitsspeicher (auf Static Random Access Memory-Basis (SRAM)), Ein-/Ausgabe-Schnittstellen) auf einem einzigen Chip (Integrierter Schaltkreis) untergebracht sind. Auf modernen Mikrocontrollern finden sich häufig auch speziellere Peripherieblöcke wie z. B. Taktgeneratoren, EEPROM-Speicher (Electrically Erasable Programmable Read Only Memory), CAN- (Controller Area Network), LIN- (Local Interconnect Network), USB- (Universal Serial Bus), I²C- (Inter-Integrated Circuit), SPI- (Serial Peripheral Interface), serielle oder Ethernet-Schnittstellen, LCD-Controller und -treiber und hochauflösende Analog-Digital-Wandler (mit 8 bis 24 Bit Auflösung und bis zu 16 Kanälen).

Einsatzbereiche
Diese Form eines Computers tritt in Gestalt von eingebetteten Systemen im Alltag oft unbemerkt in technischen Gebrauchsartikeln auf, zum Beispiel in Waschmaschinen, Chipkarten (Geld-, Telefonkarten), Unterhaltungselektronik (Videorekordern, CD/DVD-Playern, Radios, Fernsehgeräten, Fernbedienungen), Büroelektronik, Kraftfahrzeugen (ABS, Airbag, Motorsteuerung, ESP usw.), Mobiltelefonen und sogar in Uhren und Armbanduhren. Darüber hinaus sind sie in vielen Computer-Peripheriegeräten enthalten (Tastatur, Maus, Drucker, Monitore, Scanner uvm.).
Mikrocontroller sind meist anspruchslos im Energiebedarf und in der Serienfertigung äußerst preiswert herzustellen. Dieses ist auf die hohen Stückzahlen, meist geringen Taktfrequenzen von weniger als 100 Megahertz und auf die im Vergleich zu leistungsstarken Mikroprozessoren geringere Komplexität zurückzuführen.
Abgrenzung zu Mikroprozessoren
Die Grenze zwischen Microcontrollern und Mikroprozessoren ist mehr oder weniger fließend, was sich auch darin zeigt, dass oft nach einiger Zeit auch Mikrocontroller-Varianten einer neuen Mikroprozessor-Architektur erschienen sind. Im einfachsten Fall geschieht dies, indem die bei einem klassischen Mikroprozessor als Unterstützungs- und Peripheriebausteine realisierten Komponenten wie Takt- und Reset-Erzeugung, Interruptcontroller, Zeitgeber, Schnittstellenbaustein und zum Teil auch Speichercontroller in den Chip selbst integriert werden, so dass für ein funktionsfähiges Prozessorsystem oft nur noch ein Quarz (für den Takt) und Speicherbausteine nötig sind. Typische Vertreter dieser Gattung sind z. B. der 80186 von Intel (vom 8086 abgeleitet), die XScale-Familie (ARM) sowie ColdFire (MC680xx) von Freescale (vormals Motorola). Diese Controller-Baureihen werden oft auch noch dann weitergeführt, wenn die betreffende Mainstream-CPU schon längst nicht mehr produziert wird. Die Hardware solcher um Peripheriebausteine ergänzter Prozessorkerne ist manchmal in Form eines Multi Chip Modules (MCM) realisiert.
Dem gegenüber gibt es aber auch „klassische“ Microcontrollerarchitekturen, die von Anfang an nicht als reines Mikroprozessorsystem gedacht waren, sondern primär auf Steuerungsaufgaben gezielt haben. Diese zeichnen sich z. B. dadurch aus, dass mit ihnen auch ein Single-Chip-Betrieb völlig ohne externe Speicherbausteine möglich ist, ebenso wie der Befehlssatz der CPU meist spezialisierte Befehle für das Steuern einzelner Signalleitungen (mittels sogenannter Bitmanipulationen) bietet. Ebenfalls wichtig ist für solche Controller eine möglichst kurze Interrupt-Latenzzeit, also die Zeitspanne, die der Controller braucht, um auf die Unterbrechungsanforderung einer Signalquelle (Zeitgeber, Peripheriebaustein etc.) zu reagieren. Typische Vertreter dieser Gattung sind z. B. der 8051 von Intel sowie der C166 von Siemens (heute Infineon) und TriCore von Infineon.
Architekturen
Die Anzahl der verbauten Mikrocontroller überschreitet bei weitem die Geräte, die man sich unter einem Computer eigentlich vorstellt. Die überwiegende Mehrzahl der verwendeten Mikrocontroller basiert auf 8-Bit-Prozessoren, deren grundlegende Architektur teilweise noch aus der ersten Hälfte der 1970er Jahre stammt. Es gibt jedoch auch 4-, 16- und 32-Bit-Mikrocontroller, wobei die 32- und 16-Bitter mittlerweile mengenmäßig zu den 8-Bittern aufholen. Praktisch gibt es zu jedem Mikroprozessor mehr als ein Pendant bei den Mikrocontrollern. Außerdem gibt es Mikrocontroller, die keinem Mikroprozessor nachgefolgt sind, wie Atmel AVR, PIC-Mikrocontroller oder TI MSP430, Infineon TriCore, (X)C16x und viele weitere.
Benutzte Programm-Speicher
Für Hobbyanwendungen, bei Stückzahlen bis zu einigen tausend pro Jahr und bei Anforderungen nach hoher Flexibilität (z. B. wegen geplanter nachträglicher Programmupdates) werden Mikrocontroller mit Programmspeicher in Flash- oder EEPROM-Technologie eingesetzt. Für größere Stückzahlen, d. h. im Bereich von mehr als einigen tausend pro Jahr, werden dagegen zumeist maskenprogrammierte Mikrocontroller eingesetzt. Der einzelne Mikrocontroller ist hierbei preisgünstiger, jedoch entstehen Initialkosten für die Herstellung einer Maske mit dem jeweiligen Programmcode, die dann auch nicht mehr geändert werden kann, das heißt, man hat dann einen Mikrocontroller mit einem festen Programm im (internen) ROM. Des Weiteren gibt es Mikrocontroller, deren Programm in einem EPROM (Eraseable Programmable Read Only Memory) abgelegt wird. Das erforderliche Quarzglas-Fenster verteuert das Gehäuse und verlangt zum Löschen etwa 20 Minuten lang stark ozonbildende UV-C-Strahlung. EPROM-Typen sind daher fast vollständig durch funktionsgleiche Flash-basierte Mikrocontroller ersetzt worden.
Typische Speichergrößen heutiger Mikrocontroller liegen zwischen 1 KB und 1 MB für das Programm und zwischen 32 Bytes und 48 KB für die Daten. Viele Modelle können aber auch wesentlich größeren externen Speicher ansprechen.
Programmierung
Mikrocontroller werden meist in den Programmiersprachen Assembler oder C programmiert. Andere Sprachen wie BASIC, FORTH, Pascal, Ada oder C++ werden ebenfalls eingesetzt. Assembler bietet hierbei unter bestimmten Umständen den Vorzug, dass die Programme schnell sind und wenig Programmspeicher benötigen. Dies ist deshalb von so großer Bedeutung, da einerseits der Speicherplatz auf einem Mikrocontroller meist sehr eingeschränkt ist und andererseits die CPU nicht so schnell ist wie beispielsweise die in einem PC. Ein Vorteil von C liegt hingegen in der Übersichtlichkeit und Wiederverwendbarkeit des Programmcodes. Funktionen, die immer wieder benutzt werden, wie z. B. die Übertragung von Daten über eine serielle Schnittstelle, müssen so nicht für jedes Projekt neu geschrieben werden sondern lassen sich einfach anpassen (siehe auch Programmiersprachen). Zur Funktionsüberwachung von Mikrocontrollersteuerungen werden in der Regel so genannte Watchdog-Schaltungen eingesetzt, die teilweise aber auch schon in den Mikrocontroller integriert sind.
Eine Besonderheit stellen einige Microcontroller für den Hobbybereich dar, die als Programmiersprache zumeist Basic verwenden, das der Controller selbst interpretiert. Erster Baustein dieser Gattung war ein Derivat des 8052, der mit einem Basic-Interpreter in der 8-KByte-ROM-Maske ausgeliefert wurde (8052AH). Dadurch genügt ein beliebiger Rechner mit einer seriellen Schnittstelle und einem Terminalprogramm zur Programmierung einer solchen Lösung, es muss kein separater (wegen der exotischen Laufzeitumgebung oft auch teurer) Hochsprachencompiler angeschafft werden.
Neuere Vertreter dieser Art sind einige Atmel-AVR-Microcontroller sowie Personal Internet Communicator (PIC) von AMD. Dabei wurde die sehr langsame Sprache BASIC durch das wesentlich schnellere FORTH abgelöst. Der erhebliche Zeitaufwand für das Interpretieren von Befehlen wie GOSUB oder THEN entfällt dabei vollständig und das Gesamtprogramm läuft etwa 10000 mal schneller ab als mit BASIC. Sinnvoll ist auch, den lesbaren Klartext des Programms in einem PC zu speichern und nur eine sehr kompakte Zusammenfassung zum Microcontroller zu übertragen.
Verbreitete Mikrocontroller
- 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-Serie (Intel-8051-Architektur)
- AT90-, ATtiny-, ATmega-Serie (AVR-Architektur)
- AT91SAM (ARM-Architektur)
- AVR32 (32-Bit-AVR-Architektur)
Freescale Semiconductor (ehemals Motorola)
- 8-bit
- 68HC05 (CPU05)
- 68HC08 (CPU08)
- 68HC11 (CPU11)
- 16-bit
- 68HC12 (CPU12)
- 68HC16 (CPU16)
- Freescale DSP56800 (DSPcontroller)
- 32-bit
- Freescale 683XX (CPU32)
- MPC500
- MPC5500
- MPC 860 (PowerQUICC)
- MPC 8240/8250 (PowerQUICC II)
- MPC 8540/8555/8560 (PowerQUICC III)
- 8-bit
- 16-bit
- 32-bit
- 8-bit
- 16-bit
- 32-bit
- 80386EX (i386EX)
- 80960 (i960)
- PIC12-, PIC16-, PIC17-, PIC18-,dsPIC-Serie
Renesas Technology (ehemals Hitachi und Mitsubishi Electric)
- 16-bit
- 32-bit
- TMS470 (ein ARM7-Derivat)
- TMS320C2000 (DSP-basiert)
- 870
- TX19/A /900 (16/32bit)
- TX49 (32/64bit)
- 16-Bit
Weblinks
- http://www.mikrocontroller.net/articles/Mikrocontroller
- Informationen zu Atmel-AVR-Mikrocontrollern
- Roboprogy; praktisches Programmbeispiel
- Umfangreiche Einführung in PIC-Mikrocontroller
- Community zur AVR Familie (engl)
- Homepage mit interessanten Projekten
- Weitere interessante AVR Projekte
- Tutorial anhand eines kleinen Projektes