Mikrocontroller
aus Wikipedia, der freien Enzyklopädie
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).
[Bearbeiten] 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.
[Bearbeiten] 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.
Der 8085 war der Scheideweg. Danach gab es die reinen Datenverarbeiter (Microprocessor; z. B. 8086-Familie) und die Daten-Übersetzer (Microcontroller; z. B. 8048,8051) als Schnittstelle zwischen der Hardware und dem zentralen Mikroprozessor. Mikrocontroller können auch eine passive Bus-Schnittstelle haben (z. B. 8041A eine Variante des 8048) - aus Sicht des Mikroprozessors wie ein Peripherie-Chip. Ob TV, VHS-Recorder, Röntgengerät, Auto oder PC - überall gibt es heute die Arbeitsteilung zwischen diesen beiden Typen. Durch die Einführung der Busse (K-Bus, CAN-Bus, LIN, Flexray) kann sich der zentrale Prozessor völlig auf die Auswertung der Message (Telegramm) konzentrieren - z. B. „Taster Handbremse_Ein gedrückt“. Nur der zuständige Controller kennt das Ereignis in der Hardware oder auf einem untergeordneten Bus, das zur Entstehung dieser Message führte. Sendet der Prozessor nun eine Message, z. B. „Handbremse lösen“, wird der Controller die Hardware entsprechend ansteuern bzw. den untergeordneten Bus informieren. Allerdings sind heutige Controller auch schon so rechenstark, dass sie oft auch ohne einen übergeordneten Mikroprozessor auskommen und alle anfallenden Aufgaben selbst komplett bewältigen können.
[Bearbeiten] 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.
[Bearbeiten] 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.
[Bearbeiten] 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.
[Bearbeiten] Verbreitete Mikrocontroller
[Bearbeiten] Analog Devices
- Blackfin Architektur
[Bearbeiten] Applied Micro Circuits Corporation (AMCC)
- 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
[Bearbeiten] Atmel
- AT89-Serie (Intel-8051-Architektur)
- AT90-, ATtiny-, ATmega-Serie (AVR-Architektur)
- AT91-Serie (ARM-Architektur)
- AT32-Serie (32-Bit AVR32-Architektur)
[Bearbeiten] Cypress
- 8 Bit
- PSoC (Programmable System on a Chip) CY8Cxxxxx mit M8C-Core
- Microcontroller mit USB Function (Slave, LowSpeed und FullSpeed) enCore II und enCoRe III
- Microcontroller mit USB Function (FullSpeed und HighSpeed) EZ-USBxx mit 8051-Architektur
[Bearbeiten] Freescale Semiconductor (ehemals Motorola)
- 8-bit
- 68HC05 (CPU05)
- 68HC08 (CPU08)
- 68HC11 (CPU11)
- 16-bit
- 68HC12 (CPU12)
- 68HC16 (CPU16)
- MC9S12 (HCS12)
- MC9X12 (HCS12)
- Freescale DSP56800 (Digitaler Signalprozessor)
- 32-bit
- Freescale 683XX (CPU32)
- MPC500
- MPC5500
- MPC 860 (PowerQUICC)
- MPC 8240/8250 (PowerQUICC II)
- MPC 8540/8555/8560 (PowerQUICC III)
- MCF Serie (Coldfire basierend auf Motorola 68000er-Familie)
- i.MX Prozessoren (ARM-Architektur)
[Bearbeiten] Fujitsu
- 8-bit
- F2MC-8FX
- 16-bit
- F2MC-16LX
- F2MC-16FX
- 32-bit
- MB91F3xx
- MB91F46x
[Bearbeiten] Infineon (ehemals Siemens AG)
- 8-bit
- XC800 Familie, Flash basierende, neue 8 Bit Produktfamilie
- Siemens 80C517, abgekündigt und nicht mehr lieferbar
- Siemens 80C535, abgekündigt und nicht mehr lieferbar
- 16-bit
- 32-bit
[Bearbeiten] Intel
- 8-bit
- 16-bit
- 32-bit
- 80386EX (i386EX)
- 80960 (i960)
[Bearbeiten] Microchip Technology
- 8-bit
- 16-bit
- PIC24- und dsPIC-Serien
[Bearbeiten] NEC
- 8-bit
- 78K0S & 78K0 Familie (10 - 80 Pins)
- 16-bit
- 78K0R Familie (neu) (64 - 144 Pins)
- 32-bit
- V850 Familie (64 - 208 Pins)
[Bearbeiten] Renesas Technology (ehemals Hitachi und Mitsubishi Electric)
[Bearbeiten] Micronas
- 16-bit
- 65C816
- 32-bit
- ARM7TDMI
[Bearbeiten] Texas Instruments
- 16-bit
- 32-bit
- TMS470 (ein ARM7-Derivat)
- TMS320C2000 (DSP-basiert)
[Bearbeiten] Toshiba
- 870
- TX19/A /900 (16/32bit)
- TX49 (32/64bit)
[Bearbeiten] Western Design Center
- 16-Bit
[Bearbeiten] 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
- Computertechnik mit Mikrocontrollern