Mikrocontroller

Aus besserwiki.de
Der Chip eines Intel 8742, eines 8-Bit-Mikrocontrollers, der eine mit 12 MHz laufende CPU, 128 Byte RAM, 2048 Byte EPROM und E/A auf demselben Chip enthält
Zwei ATmega-Mikrocontroller

Ein Mikrocontroller (MCU für Microcontroller Unit) ist ein kleiner Computer auf einem einzigen VLSI-Chip (Integrated Circuit IC). Ein Mikrocontroller enthält eine oder mehrere CPUs (Prozessorkerne) zusammen mit Speicher und programmierbarer Eingangs-/Ausgangsperipherie. Ein Programmspeicher in Form von ferroelektrischem RAM, NOR-Flash oder OTP-ROM ist ebenfalls oft auf dem Chip enthalten, ebenso wie eine kleine Menge an RAM. Mikrocontroller sind für eingebettete Anwendungen konzipiert, im Gegensatz zu den Mikroprozessoren, die in Personalcomputern oder anderen Allzweckanwendungen verwendet werden und aus verschiedenen diskreten Chips bestehen.

In der modernen Terminologie ähnelt ein Mikrocontroller einem System auf einem Chip (SoC), ist aber weniger anspruchsvoll als dieses. Ein SoC kann die externen Mikrocontroller-Chips als Hauptplatinenkomponenten verbinden, aber ein SoC integriert normalerweise die fortgeschrittenen Peripheriegeräte wie die Grafikverarbeitungseinheit (GPU) und den Wi-Fi-Schnittstellen-Controller als seine internen Mikrocontroller-Einheitsschaltungen.

Mikrocontroller werden in automatisch gesteuerten Produkten und Geräten verwendet, z. B. in Motorsteuerungssystemen von Kraftfahrzeugen, implantierbaren medizinischen Geräten, Fernbedienungen, Büromaschinen, Haushaltsgeräten, Elektrowerkzeugen, Spielzeug und anderen eingebetteten Systemen. Durch die Verringerung der Größe und der Kosten im Vergleich zu einem Design, das einen separaten Mikroprozessor, Speicher und Eingabe-/Ausgabegeräte verwendet, machen Mikrocontroller es wirtschaftlich, noch mehr Geräte und Prozesse digital zu steuern. Üblich sind Mixed-Signal-Mikrocontroller, die analoge Komponenten integrieren, die zur Steuerung nicht-digitaler elektronischer Systeme benötigt werden. Im Zusammenhang mit dem Internet der Dinge sind Mikrocontroller ein wirtschaftliches und beliebtes Mittel zur Datenerfassung, Erfassung und Steuerung der physischen Welt als Edge Devices.

Einige Mikrocontroller verwenden Vier-Bit-Wörter und arbeiten mit Frequenzen von bis zu 4 kHz bei geringem Stromverbrauch (im einstelligen Milliwatt- oder Mikrowattbereich). Sie sind in der Regel in der Lage, die Funktionalität aufrechtzuerhalten, während sie auf ein Ereignis wie einen Tastendruck oder eine andere Unterbrechung warten; der Stromverbrauch im Ruhezustand (CPU-Takt und die meisten Peripheriegeräte ausgeschaltet) kann nur wenige Nanowatt betragen, so dass sich viele von ihnen gut für lang anhaltende Batterieanwendungen eignen. Andere Mikrocontroller können leistungsrelevante Aufgaben übernehmen, bei denen sie eher wie ein digitaler Signalprozessor (DSP) arbeiten müssen, mit höheren Taktraten und höherem Stromverbrauch.

Auf modernen Mikrocontrollern finden sich häufig auch komplexe Peripheriefunktionen wie z. B. 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, PWM-Ausgänge, LCD-Controller und -Treiber sowie Analog-Digital-Umsetzer. Einige Mikrocontroller verfügen auch über programmierbare digitale und/oder analoge bzw. hybride Funktionsblöcke.

Mikrocontroller im Keramikgehäuse mit Quarzglasfenster

Geschichte

Hintergrund

Die ersten Mehrchip-Mikroprozessoren, der Four-Phase Systems AL1 im Jahr 1969 und der Garrett AiResearch MP944 im Jahr 1970, wurden mit mehreren MOS-LSI-Chips entwickelt. Der erste Ein-Chip-Mikroprozessor war der Intel 4004, der 1971 auf einem einzigen MOS-LSI-Chip erschien. Er wurde von Federico Faggin unter Verwendung seiner Silizium-Gate-MOS-Technologie zusammen mit den Intel-Ingenieuren Marcian Hoff und Stan Mazor sowie dem Busicom-Ingenieur Masatoshi Shima entwickelt. Es folgten der 4-Bit Intel 4040, der 8-Bit Intel 8008 und der 8-Bit Intel 8080. Alle diese Prozessoren erforderten mehrere externe Chips, um ein funktionierendes System zu implementieren, einschließlich Speicher- und Peripherieschnittstellen-Chips. Infolgedessen betrugen die Gesamtkosten für das System mehrere hundert Dollar (1970er Jahre), was eine wirtschaftliche Computerisierung von Kleingeräten unmöglich machte.

MOS Technology stellte 1975 seine Mikroprozessoren 6501 und 6502 vor, die weniger als 100 Dollar kosteten. Ihr Hauptziel war es, diese Kostenschranke zu senken, aber diese Mikroprozessoren erforderten immer noch externe Unterstützung, Speicher und Peripheriechips, so dass die Gesamtsystemkosten in die Hunderte von Dollar gingen.

Entwicklung

Ein Buch schreibt den TI-Ingenieuren Gary Boone und Michael Cochran die erfolgreiche Entwicklung des ersten Mikrocontrollers im Jahr 1971 zu. Das Ergebnis ihrer Arbeit war der TMS 1000, der 1974 auf den Markt kam. Er kombinierte Festwertspeicher, Schreib-/Lesespeicher, Prozessor und Uhr auf einem Chip und war für eingebettete Systeme gedacht.

Anfang bis Mitte der 1970er Jahre begannen japanische Elektronikhersteller mit der Produktion von Mikrocontrollern für Automobile, darunter 4-Bit-MCUs für die Unterhaltungselektronik im Auto, automatische Scheibenwischer, elektronische Schlösser und das Armaturenbrett sowie 8-Bit-MCUs für die Motorsteuerung.

Teilweise als Reaktion auf die Existenz des Einchip-TMS 1000 entwickelte Intel ein Computersystem auf einem Chip, das für Steuerungsanwendungen optimiert war, den Intel 8048, dessen erste kommerzielle Teile 1977 ausgeliefert wurden. Er kombinierte RAM und ROM auf demselben Chip mit einem Mikroprozessor. Neben zahlreichen anderen Anwendungen fand dieser Chip schließlich seinen Weg in über eine Milliarde PC-Tastaturen. Der damalige Präsident von Intel, Luke J. Valenter, bezeichnete den Mikrocontroller als eines der erfolgreichsten Produkte in der Geschichte des Unternehmens und erhöhte das Budget der Mikrocontroller-Abteilung um über 25 %.

Bei den meisten Mikrocontrollern gab es zu dieser Zeit mehrere Varianten. Eine davon hatte einen EPROM-Programmspeicher mit einem durchsichtigen Quarzfenster im Gehäusedeckel, das durch Einwirkung von ultraviolettem Licht gelöscht werden konnte. Diese löschbaren Chips wurden häufig für die Herstellung von Prototypen verwendet. Die andere Variante war entweder ein maskenprogrammierter ROM oder eine PROM-Variante, die nur einmal programmierbar war. Für letztere wurde manchmal die Bezeichnung OTP verwendet, die für "one-time programmable" steht. Bei einem OTP-Mikrocontroller war das PROM in der Regel vom gleichen Typ wie das EPROM, aber das Chipgehäuse hatte kein Quarzfenster; da es keine Möglichkeit gab, das EPROM ultraviolettem Licht auszusetzen, konnte es nicht gelöscht werden. Da die löschbaren Versionen Keramikgehäuse mit Quarzfenstern benötigten, waren sie wesentlich teurer als die OTP-Versionen, die in kostengünstigeren undurchsichtigen Kunststoffgehäusen hergestellt werden konnten. Für die löschbaren Varianten wurde Quarz anstelle des weniger teuren Glases benötigt, weil es für ultraviolettes Licht durchlässig ist, während Glas weitgehend lichtundurchlässig ist; der Hauptunterschied bei den Kosten war jedoch das Keramikgehäuse selbst.

1993 ermöglichte die Einführung des EEPROM-Speichers, dass Mikrocontroller (beginnend mit dem Microchip PIC16C84) schnell elektrisch gelöscht werden konnten, ohne dass ein teures Gehäuse wie bei EPROM erforderlich war, was sowohl ein schnelles Prototyping als auch eine systeminterne Programmierung ermöglichte. (Die EEPROM-Technologie war bereits vor dieser Zeit verfügbar, aber das frühere EEPROM war teurer und weniger haltbar, so dass es sich nicht für preisgünstige Massen-Mikrocontroller eignete). Im selben Jahr stellte Atmel den ersten Mikrocontroller vor, der Flash-Speicher, eine spezielle Art von EEPROM, verwendete. Andere Unternehmen zogen schnell nach, und zwar mit beiden Speichertypen.

Heutzutage sind Mikrocontroller billig und für Bastler leicht erhältlich, und es gibt große Online-Communities für bestimmte Prozessoren.

Volumen und Kosten

Im Jahr 2002 waren etwa 55 % aller weltweit verkauften CPUs 8-Bit-Mikrocontroller und -Mikroprozessoren.

Im Jahr 1997 wurden über zwei Milliarden 8-Bit-Mikrocontroller verkauft, und nach Angaben von Semico wurden 2006 über vier Milliarden 8-Bit-Mikrocontroller verkauft. In jüngster Zeit hat Semico behauptet, dass der MCU-Markt im Jahr 2010 um 36,5 % und im Jahr 2011 um 12 % gewachsen ist.

Ein typischer Haushalt in einem Industrieland hat wahrscheinlich nur vier Allzweck-Mikroprozessoren, aber etwa drei Dutzend Mikrocontroller. Ein typischer Mittelklassewagen hat etwa 30 Mikrocontroller. Sie sind auch in vielen elektrischen Geräten wie Waschmaschinen, Mikrowellenherden und Telefonen zu finden.

Historisch gesehen hat das 8-Bit-Segment den MCU-Markt dominiert [...] 16-Bit-Mikrocontroller wurden 2011 zur volumenstärksten MCU-Kategorie und überholten in jenem Jahr erstmals die 8-Bit-Bauteile [...] IC Insights ist der Ansicht, dass sich die Zusammensetzung des MCU-Marktes in den nächsten fünf Jahren erheblich verändern wird, wobei 32-Bit-Bauteile einen immer größeren Anteil am Umsatz und an den Stückzahlen einnehmen werden. Im Jahr 2017 werden 32-Bit-MCUs voraussichtlich 55 % der Mikrocontroller-Verkäufe ausmachen [...] Was die Stückzahlen betrifft, so werden 32-Bit-MCUs im Jahr 2017 voraussichtlich 38 % der Mikrocontroller-Lieferungen ausmachen, während 16-Bit-Bauteile 34 % des Gesamtvolumens ausmachen werden und 4/8-Bit-Designs voraussichtlich 28 % der in diesem Jahr verkauften Einheiten ausmachen werden. Es wird erwartet, dass der 32-Bit-MCU-Markt aufgrund der steigenden Nachfrage nach höheren Präzisionsniveaus in eingebetteten Verarbeitungssystemen und der zunehmenden Konnektivität über das Internet schnell wachsen wird. [Es wird erwartet, dass komplexe 32-Bit-MCUs in den nächsten Jahren über 25 % der Verarbeitungsleistung in Fahrzeugen ausmachen werden.

- IC Insights, MCU-Markt auf Migrationspfad zu 32-Bit- und ARM-basierten Geräten

Die Herstellungskosten können unter 0,10 US-Dollar pro Einheit liegen.

Die Kosten sind im Laufe der Zeit stark gesunken, wobei die billigsten 8-Bit-Mikrocontroller im Jahr 2018 für weniger als 0,03 US-Dollar erhältlich sind und einige 32-Bit-Mikrocontroller für ähnliche Mengen etwa 1 US-Dollar kosten.

Im Jahr 2012, nach einer weltweiten Krise - dem schlimmsten jährlichen Umsatzrückgang und einer Erholung, bei der der durchschnittliche Verkaufspreis im Jahresvergleich um 17 % sank - der stärkste Rückgang seit den 1980er Jahren - lag der Durchschnittspreis für einen Mikrocontroller bei 0,88 US-Dollar (0,69 US-Dollar für 4-/8-Bit, 0,59 US-Dollar für 16-Bit, 1,76 US-Dollar für 32-Bit).

Im Jahr 2012 belief sich der weltweite Umsatz mit 8-Bit-Mikrocontrollern auf rund 4 Milliarden US-Dollar, während 4-Bit-Mikrocontroller ebenfalls einen erheblichen Umsatz verzeichneten.

Im Jahr 2015 konnten 8-Bit-Mikrocontroller für 0,311 US-Dollar (1.000 Stück), 16-Bit für 0,385 US-Dollar (1.000 Stück) und 32-Bit für 0,378 US-Dollar (1.000 Stück, aber für 0,35 US-Dollar bei 5.000 Stück) gekauft werden.

Im Jahr 2018 konnten 8-Bit-Mikrocontroller für 0,03 US-Dollar, 16-Bit für 0,393 US-Dollar (1.000 Einheiten, aber zu 0,563 US-Dollar für 100 oder 0,349 US-Dollar für eine volle Rolle von 2.000) und 32-Bit für 0,503 US-Dollar (1.000 Einheiten, aber zu 0,466 US-Dollar für 5.000) gekauft werden.

Im Jahr 2018 waren die oben genannten günstigen Mikrocontroller aus dem Jahr 2015 alle teurer (bei Berechnung der Inflation zwischen den Preisen von 2018 und 2015 für diese spezifischen Einheiten): Der 8-Bit-Mikrocontroller war für 0,319 US-Dollar (1.000 Einheiten) oder 2,6 % teurer, der 16-Bit-Mikrocontroller für 0,464 US-Dollar (1.000 Einheiten) oder 21 % teurer und der 32-Bit-Mikrocontroller für 0,503 US-Dollar (1.000 Einheiten, aber zu 0,466 US-Dollar für 5.000 Einheiten) oder 33 % teurer.

Ein PIC 18F8720-Mikrocontroller in einem 80-Pin-TQFP-Gehäuse

Kleinster Computer

Am 21. Juni 2018 wurde der "kleinste Computer der Welt" von der University of Michigan angekündigt. Bei dem Gerät handelt es sich um ein "0,04 mm3 großes, draht- und batterieloses Sensorsystem mit integriertem Cortex-M0+-Prozessor und optischer Kommunikation zur zellularen Temperaturmessung." Es "misst nur 0,3 mm bis zu einer Seite, die von einem Reiskorn verdeckt wird. [...] Zusätzlich zum Arbeitsspeicher und der Photovoltaik verfügen die neuen Computer über Prozessoren und drahtlose Sender und Empfänger. Da sie zu klein sind, um herkömmliche Funkantennen zu haben, empfangen und senden sie Daten mit sichtbarem Licht. Eine Basisstation liefert das Licht für die Stromversorgung und die Programmierung, und sie empfängt die Daten. Das Gerät ist 1⁄10tel so groß wie der von IBM im März 2018 behauptete Computer von Weltrekordgröße, der "kleiner als ein Salzkorn" ist, eine Million Transistoren hat, in der Herstellung weniger als 0,10 Dollar kostet und in Kombination mit der Blockchain-Technologie für Logistik- und "Krypto-Anker"-Anwendungen (digitale Fingerabdrücke) gedacht ist.

Eingebetteter Entwurf

Ein Mikrocontroller kann als ein in sich geschlossenes System mit Prozessor, Speicher und Peripheriegeräten betrachtet und als eingebettetes System verwendet werden. Die meisten Mikrocontroller, die heute verwendet werden, sind in andere Maschinen eingebettet, z. B. in Kraftfahrzeuge, Telefone, Geräte und Peripheriegeräte für Computersysteme.

Während einige eingebettete Systeme sehr anspruchsvoll sind, haben viele minimale Anforderungen an Speicher und Programmlänge, kein Betriebssystem und eine geringe Softwarekomplexität. Zu den typischen Ein- und Ausgabegeräten gehören Schalter, Relais, Magnetspulen, LEDs, kleine oder kundenspezifische Flüssigkristallanzeigen, Funkfrequenzgeräte und Sensoren für Daten wie Temperatur, Feuchtigkeit, Lichtstärke usw. Eingebettete Systeme haben in der Regel keine Tastatur, keinen Bildschirm, keine Festplatten, keine Drucker oder andere erkennbare E/A-Geräte eines Personalcomputers und können auch keine Geräte zur menschlichen Interaktion aufweisen.

Unterbrechungen

Mikrocontroller müssen in Echtzeit (vorhersehbar, aber nicht unbedingt schnell) auf Ereignisse in dem von ihnen gesteuerten eingebetteten System reagieren. Wenn bestimmte Ereignisse eintreten, kann ein Interrupt-System dem Prozessor signalisieren, die Verarbeitung der aktuellen Befehlssequenz zu unterbrechen und eine Interrupt-Service-Routine (ISR oder "Interrupt-Handler") zu starten, die je nach Quelle der Unterbrechung die erforderliche Verarbeitung durchführt, bevor sie zur ursprünglichen Befehlssequenz zurückkehrt. Mögliche Unterbrechungsquellen sind geräteabhängig und umfassen häufig Ereignisse wie den Überlauf eines internen Zeitgebers, den Abschluss einer Analog-Digital-Wandlung, eine Änderung des logischen Pegels an einem Eingang, z. B. durch Drücken einer Taste, und über eine Kommunikationsverbindung empfangene Daten. Wenn der Stromverbrauch wichtig ist, wie z. B. bei batteriebetriebenen Geräten, können Interrupts einen Mikrocontroller auch aus einem stromsparenden Ruhezustand aufwecken, in dem der Prozessor angehalten wird, bis er durch ein Peripherieereignis aufgefordert wird, etwas zu tun.

Programme

Normalerweise müssen Mikrocontroller-Programme in den verfügbaren On-Chip-Speicher passen, da es kostspielig wäre, ein System mit externem, erweiterbarem Speicher auszustatten. Compiler und Assembler werden eingesetzt, um sowohl Hochsprachen- als auch Assemblersprachcode in einen kompakten Maschinencode umzuwandeln, der im Speicher des Mikrocontrollers gespeichert wird. Je nach Gerät kann es sich bei dem Programmspeicher um einen permanenten Festwertspeicher handeln, der nur im Werk programmiert werden kann, oder um einen vor Ort änderbaren Flash-Speicher oder einen löschbaren Festwertspeicher.

Die Hersteller haben oft spezielle Versionen ihrer Mikrocontroller hergestellt, um die Hardware- und Softwareentwicklung des Zielsystems zu unterstützen. Ursprünglich handelte es sich dabei um EPROM-Versionen, die auf der Oberseite des Geräts ein "Fenster" haben, durch das der Programmspeicher mit ultraviolettem Licht gelöscht werden kann, so dass er nach einem Programmier- ("Brenn-") und Testzyklus wieder programmiert werden kann. Seit 1998 sind EPROM-Versionen selten und wurden durch EEPROM und Flash ersetzt, die einfacher zu verwenden (elektronisch löschbar) und billiger in der Herstellung sind.

Es gibt noch andere Versionen, bei denen der Zugriff auf das ROM nicht als interner Speicher, sondern als externes Gerät erfolgt; diese sind jedoch aufgrund der weiten Verbreitung billiger Mikrocontroller-Programmiergeräte selten geworden.

Die Verwendung von feldprogrammierbaren Bausteinen in einem Mikrocontroller kann eine Aktualisierung der Firmware vor Ort ermöglichen oder späte Werksrevisionen an Produkten erlauben, die bereits montiert, aber noch nicht ausgeliefert wurden. Ein programmierbarer Speicher verkürzt auch die Vorlaufzeit für die Einführung eines neuen Produkts.

Wenn Hunderttausende von identischen Bauteilen benötigt werden, kann die Verwendung von zum Zeitpunkt der Herstellung programmierten Teilen wirtschaftlich sein. Bei diesen "maskenprogrammierten" Teilen wird das Programm gleichzeitig mit der Logik des Chips festgelegt.

Ein kundenspezifischer Mikrocontroller enthält einen Block digitaler Logik, der mit zusätzlichen Verarbeitungsfunktionen, Peripheriegeräten und Schnittstellen ausgestattet werden kann, die an die Anforderungen der jeweiligen Anwendung angepasst sind. Ein Beispiel ist der AT91CAP von Atmel.

Weitere Merkmale von Mikrocontrollern

Mikrocontroller enthalten in der Regel mehrere bis Dutzende von Allzweck-Eingangs-/Ausgangs-Pins (GPIO). GPIO-Pins können per Software entweder auf einen Eingangs- oder einen Ausgangszustand konfiguriert werden. Wenn GPIO-Pins auf einen Eingangszustand konfiguriert sind, werden sie häufig zum Lesen von Sensoren oder externen Signalen verwendet. Wenn GPIO-Pins als Ausgang konfiguriert sind, können sie externe Geräte wie LEDs oder Motoren ansteuern, oft indirekt über externe Leistungselektronik.

Viele eingebettete Systeme müssen Sensoren auslesen, die analoge Signale erzeugen. Dies ist der Zweck des Analog-Digital-Wandlers (ADC). Da Prozessoren darauf ausgelegt sind, digitale Daten, d. h. 1en und 0en, zu interpretieren und zu verarbeiten, können sie mit den analogen Signalen, die von einem Gerät an sie gesendet werden, nichts anfangen. Daher wird der Analog-Digital-Wandler verwendet, um die eingehenden Daten in eine Form umzuwandeln, die der Prozessor erkennen kann. Eine weniger verbreitete Funktion bei einigen Mikrocontrollern ist ein Digital-Analog-Wandler (DAC), der es dem Prozessor ermöglicht, analoge Signale oder Spannungspegel auszugeben.

Zusätzlich zu den Wandlern enthalten viele eingebettete Mikroprozessoren auch eine Reihe von Zeitgebern. Eine der häufigsten Arten von Zeitgebern ist der programmierbare Intervalltimer (PIT). Ein PIT kann entweder von einem bestimmten Wert bis Null herunterzählen oder bis zur Kapazität des Zählregisters, wobei er auf Null überläuft. Sobald er Null erreicht, sendet er eine Unterbrechung an den Prozessor, die anzeigt, dass er den Zählvorgang beendet hat. Dies ist nützlich für Geräte wie Thermostate, die in regelmäßigen Abständen die Temperatur in ihrer Umgebung prüfen, um festzustellen, ob sie die Klimaanlage oder die Heizung ein- oder ausschalten müssen usw.

Ein spezieller PWM-Block (Pulsweitenmodulation) ermöglicht es der CPU, Leistungswandler, Widerstandslasten, Motoren usw. zu steuern, ohne viele CPU-Ressourcen in engen Timer-Schleifen zu verwenden.

Ein UART-Block (Universal Asynchronous Receiver/Transmitter) ermöglicht den Empfang und die Übertragung von Daten über eine serielle Leitung mit sehr geringer Belastung der CPU. Dedizierte On-Chip-Hardware umfasst häufig auch Funktionen zur Kommunikation mit anderen Geräten (Chips) in digitalen Formaten wie Inter-Integrated Circuit (I²C), Serial Peripheral Interface (SPI), Universal Serial Bus (USB) und Ethernet.

Höhere Integration

Die eines 8-Bit, voll statischen, EEPROM/EPROM/ROM-basierten CMOS-Mikrocontrollers PIC12C508, hergestellt von Microchip Technology in einem 1200-Nanometer-Prozess
Die eines STM32F100C4T6B ARM Cortex-M3-Mikrocontrollers mit 16 Kilobyte Flash-Speicher, 24 MHz Zentraleinheit (CPU), Motorsteuerung und Consumer Electronics Control (CEC)-Funktionen. Hergestellt von STMicroelectronics.

Mikrocontroller müssen keinen externen Adress- oder Datenbus implementieren, da sie RAM und nichtflüchtigen Speicher auf demselben Chip wie die CPU integrieren. Durch die Verwendung von weniger Pins kann der Chip in einem viel kleineren und billigeren Gehäuse untergebracht werden.

Die Integration des Speichers und anderer Peripheriegeräte auf einem einzigen Chip und das Testen als Einheit erhöht zwar die Kosten dieses Chips, führt aber häufig zu einer Senkung der Nettokosten des eingebetteten Systems als Ganzes. Auch wenn die Kosten für eine CPU mit integrierten Peripheriegeräten etwas höher sind als die Kosten für eine CPU mit externen Peripheriegeräten, ermöglicht eine geringere Anzahl von Chips in der Regel eine kleinere und billigere Leiterplatte und verringert den Arbeitsaufwand für den Zusammenbau und das Testen der Leiterplatte sowie die Fehlerquote der fertigen Baugruppe.

Ein Mikrocontroller ist ein einzelner integrierter Schaltkreis, der in der Regel die folgenden Merkmale aufweist:

  • zentrale Verarbeitungseinheit - von kleinen und einfachen 4-Bit-Prozessoren bis hin zu komplexen 32-Bit- oder 64-Bit-Prozessoren
  • flüchtiger Speicher (RAM) zur Datenspeicherung
  • ROM, EPROM, EEPROM oder Flash-Speicher für die Speicherung von Programmen und Betriebsparametern
  • diskrete Eingangs- und Ausgangsbits, die die Steuerung oder Erkennung des logischen Zustands eines einzelnen Gehäusestifts ermöglichen
  • serielle Eingänge/Ausgänge wie serielle Schnittstellen (UARTs)
  • andere serielle Kommunikationsschnittstellen wie I²C, Serial Peripheral Interface und Controller Area Network für die Systemzusammenschaltung
  • Peripheriegeräte wie Timer, Ereigniszähler, PWM-Generatoren und Watchdog
  • Taktgenerator - oft ein Oszillator für einen Quarz, Resonator oder RC-Kreis
  • viele enthalten Analog-Digital-Wandler, einige enthalten Digital-Analog-Wandler
  • In-Circuit-Programmierung und In-Circuit-Debugging-Unterstützung

Durch diese Integration werden die Anzahl der Chips sowie der Verdrahtungsaufwand und der Platzbedarf auf der Leiterplatte, der für die Herstellung gleichwertiger Systeme mit separaten Chips erforderlich wäre, drastisch reduziert. Darüber hinaus kann jeder Pin, insbesondere bei Bauteilen mit geringer Pinanzahl, mit mehreren internen Peripheriegeräten verbunden werden, wobei die Pinfunktion per Software ausgewählt wird. Dadurch kann ein Bauteil in einer größeren Vielfalt von Anwendungen eingesetzt werden, als wenn die Pins spezielle Funktionen hätten.

Mikrocontroller haben sich seit ihrer Einführung in den 1970er Jahren in eingebetteten Systemen als äußerst beliebt erwiesen.

Einige Mikrocontroller verwenden eine Harvard-Architektur: getrennte Speicherbusse für Befehle und Daten, so dass der Zugriff gleichzeitig erfolgen kann. Bei einer Harvard-Architektur können die Befehlsworte für den Prozessor eine andere Bitgröße haben als die Länge des internen Speichers und der Register, z. B. 12-Bit-Befehle mit 8-Bit-Datenregistern.

Die Entscheidung, welche Peripheriegeräte integriert werden sollen, ist oft schwierig. Die Anbieter von Mikrocontrollern tauschen häufig Betriebsfrequenzen und Flexibilität des Systemdesigns gegen die Anforderungen ihrer Kunden an die Markteinführung und niedrigere Gesamtkosten des Systems. Die Hersteller müssen die Notwendigkeit, die Chipgröße zu minimieren, gegen zusätzliche Funktionen abwägen.

Die Architekturen von Mikrocontrollern sind sehr unterschiedlich. Einige Entwürfe enthalten Allzweck-Mikroprozessor-Kerne mit einem oder mehreren ROM-, RAM- oder E/A-Funktionen, die in das Gehäuse integriert sind. Andere Designs sind speziell für Steuerungsanwendungen konzipiert. Ein Mikrocontroller-Befehlssatz enthält in der Regel viele Befehle zur Bitmanipulation (bitweise Operationen), um Steuerprogramme kompakter zu machen. Ein Allzweckprozessor könnte beispielsweise mehrere Befehle benötigen, um ein Bit in einem Register zu testen und zu verzweigen, wenn das Bit gesetzt ist, während ein Mikrocontroller mit einem einzigen Befehl auskommt, um diese häufig benötigte Funktion auszuführen.

Mikrocontroller verfügen traditionell nicht über einen mathematischen Coprozessor, so dass die Gleitkommaarithmetik von der Software ausgeführt wird. Einige neuere Designs enthalten jedoch eine FPU und DSP-optimierte Funktionen. Ein Beispiel hierfür ist die auf MIPS basierende PIC32-Reihe von Microchip.

Programmierumgebungen

Ursprünglich wurden Mikrocontroller nur in Assemblersprache programmiert, aber verschiedene Hochsprachen wie C, Python und JavaScript werden inzwischen auch häufig für Mikrocontroller und eingebettete Systeme verwendet. Compiler für Allzwecksprachen weisen in der Regel einige Einschränkungen und Verbesserungen auf, um die besonderen Merkmale von Mikrocontrollern besser zu unterstützen. Einige Mikrocontroller verfügen über Umgebungen, die die Entwicklung bestimmter Arten von Anwendungen unterstützen. Die Hersteller von Mikrocontrollern stellen oft Tools kostenlos zur Verfügung, um die Übernahme ihrer Hardware zu erleichtern.

Mikrocontroller mit spezieller Hardware können ihre eigenen, nicht standardisierten Dialekte von C erfordern, wie z. B. SDCC für den 8051, was die Verwendung von Standardwerkzeugen (wie Codebibliotheken oder statische Analysewerkzeuge) selbst für Code, der nichts mit Hardwarefunktionen zu tun hat, verhindert. Interpreter können auch nicht standardisierte Funktionen enthalten, wie z.B. MicroPython, obwohl eine Abspaltung, CircuitPython, versucht hat, Hardware-Abhängigkeiten in Bibliotheken zu verlagern und die Sprache mehr an einen CPython-Standard anzupassen.

Für einige Mikrocontroller gibt es auch Interpreter-Firmware. Zum Beispiel BASIC für die frühen Mikrocontroller Intel 8052; BASIC und FORTH für den Zilog Z8 sowie für einige moderne Geräte. In der Regel unterstützen diese Interpreter die interaktive Programmierung.

Für einige Mikrocontroller gibt es Simulatoren. Mit ihnen kann ein Entwickler analysieren, wie sich der Mikrocontroller und sein Programm verhalten sollten, wenn er das tatsächliche Bauteil verwenden würde. Ein Simulator zeigt den internen Prozessorzustand und auch den der Ausgänge an und ermöglicht die Erzeugung von Eingangssignalen. Einerseits sind die meisten Simulatoren dadurch eingeschränkt, dass sie nicht in der Lage sind, viel andere Hardware in einem System zu simulieren, andererseits können sie Bedingungen üben, die in der physischen Implementierung nur schwer reproduzierbar sind, und sie können der schnellste Weg zur Fehlersuche und Analyse von Problemen sein.

Neuere Mikrocontroller sind oft mit On-Chip-Debug-Schaltungen ausgestattet, die bei Zugriff durch einen In-Circuit-Emulator (ICE) über JTAG das Debuggen der Firmware mit einem Debugger ermöglichen. Ein Echtzeit-ICE kann die Anzeige und/oder Manipulation interner Zustände während des Betriebs ermöglichen. Ein ICE mit Tracing-Funktion kann das ausgeführte Programm und den Zustand der MCU vor und nach einem Triggerpunkt aufzeichnen.

Typen

Seit 2008 gibt es mehrere Dutzend Mikrocontroller-Architekturen und -Anbieter, darunter:

  • ARM-Kernprozessoren (viele Hersteller)
    • ARM Cortex-M-Kerne sind speziell auf Mikrocontroller-Anwendungen ausgerichtet
  • Microchip Technology Atmel AVR (8-Bit), AVR32 (32-Bit) und AT91SAM (32-Bit)
  • Der M8C-Kern von Cypress Semiconductor, der in ihrem PSoC (Programmable System-on-Chip) verwendet wird
  • Freescale ColdFire (32-Bit) und S08 (8-Bit)
  • Freescale 68HC11 (8-Bit) und andere, die auf der Motorola 6800-Familie basieren
  • Intel 8051, auch hergestellt von NXP Semiconductors, Infineon und vielen anderen
  • Infineon: 8-Bit XC800, 16-Bit XE166, 32-Bit XMC4000 (ARM-basierter Cortex M4F), 32-Bit TriCore und, 32-Bit Aurix Tricore Bit Mikrocontroller
  • Maxim Integrated MAX32600, MAX32620, MAX32625, MAX32630, MAX32650, MAX32640
  • MIPS
  • Microchip Technology PIC, (8-bit PIC16, PIC18, 16-bit dsPIC33 / PIC24), (32-bit PIC32)
  • NXP Semiconductors LPC1000, LPC2000, LPC3000, LPC4000 (32-Bit), LPC900, LPC700 (8-Bit)
  • Parallax Propeller
  • PowerPC ISE
  • Kaninchen 2000 (8-Bit)
  • Renesas Elektronik: RL78 16-bit MCU; RX 32-bit MCU; SuperH; V850 32-bit MCU; H8; R8C 16-bit MCU
  • Silicon Laboratories Pipelined 8-Bit 8051-Mikrocontroller und ARM-basierte 32-Bit-Mikrocontroller mit gemischten Signalen
  • STMicroelectronics STM8 (8-Bit), ST10 (16-Bit), STM32 (32-Bit), SPC5 (Automotive 32-Bit)
  • Texas Instruments TI MSP430 (16-Bit), MSP432 (32-Bit), C2000 (32-Bit)
  • Toshiba TLCS-870 (8-Bit/16-Bit)

Es gibt noch viele andere, von denen einige in einem sehr engen Bereich von Anwendungen eingesetzt werden oder eher Anwendungsprozessoren als Mikrocontroller sind. Der Markt für Mikrocontroller ist extrem fragmentiert, mit zahlreichen Anbietern, Technologien und Märkten. Beachten Sie, dass viele Anbieter mehrere Architekturen verkaufen oder verkauft haben.

Unterbrechungslatenz

Im Gegensatz zu Allzweckcomputern wird bei Mikrocontrollern, die in eingebetteten Systemen eingesetzt werden, häufig versucht, die Unterbrechungslatenz gegenüber dem Befehlsdurchsatz zu optimieren. Dabei geht es sowohl um die Verringerung der Latenzzeit als auch um ihre bessere Vorhersagbarkeit (zur Unterstützung der Echtzeitsteuerung).

Wenn ein elektronisches Gerät eine Unterbrechung auslöst, müssen während des Kontextwechsels die Zwischenergebnisse (Register) gespeichert werden, bevor die für die Behandlung der Unterbrechung zuständige Software ausgeführt werden kann. Sie müssen auch wiederhergestellt werden, nachdem der Interrupt-Handler fertig ist. Wenn es mehr Prozessorregister gibt, kann dieser Speicher- und Wiederherstellungsprozess mehr Zeit in Anspruch nehmen, wodurch sich die Latenzzeit erhöht. (Wenn ein ISR einige Register nicht benötigt, kann er sie einfach in Ruhe lassen, anstatt sie zu speichern und wiederherzustellen; in diesem Fall sind diese Register nicht an der Latenzzeit beteiligt). Zu den Möglichkeiten, eine solche Kontext-/Wiederherstellungslatenz zu verringern, gehören relativ wenige Register in den zentralen Verarbeitungseinheiten (was nicht wünschenswert ist, da es die meisten nicht unterbrechungsbedingten Verarbeitungen erheblich verlangsamt) oder zumindest die Tatsache, dass die Hardware nicht alle Register speichert (was nicht funktioniert, wenn die Software dann den Rest "manuell" speichern muss). Eine andere Technik besteht darin, Silizium-Gates für "Schattenregister" zu verwenden: Ein oder mehrere doppelte Register, die nur von der Unterbrechungssoftware verwendet werden und vielleicht einen eigenen Stack unterstützen.

Weitere Faktoren, die sich auf die Unterbrechungslatenz auswirken, sind:

  • Zyklen, die zum Abschluss der laufenden CPU-Aktivitäten benötigt werden. Um diese Kosten zu minimieren, haben Mikrocontroller in der Regel kurze Pipelines (oft drei Anweisungen oder weniger), kleine Schreibpuffer und stellen sicher, dass längere Anweisungen fortgesetzt oder neu gestartet werden können. Die RISC-Konstruktionsprinzipien stellen sicher, dass die meisten Befehle die gleiche Anzahl von Zyklen benötigen, so dass die meisten dieser Fortsetzungs-/Neustart-Logiken überflüssig sind.
  • Die Länge eines kritischen Abschnitts, der unterbrochen werden muss. Der Eintritt in einen kritischen Abschnitt schränkt den gleichzeitigen Zugriff auf Datenstrukturen ein. Wenn ein Interrupt-Handler auf eine Datenstruktur zugreifen muss, muss der kritische Abschnitt diesen Interrupt blockieren. Dementsprechend erhöht sich die Unterbrechungslatenz um die Zeit, die die Unterbrechung blockiert ist. Wenn es harte externe Beschränkungen für die Systemlatenz gibt, benötigen Entwickler oft Werkzeuge, um die Unterbrechungslatenz zu messen und herauszufinden, welche kritischen Abschnitte eine Verlangsamung verursachen.
    • Eine gängige Technik blockiert einfach alle Unterbrechungen für die Dauer des kritischen Abschnitts. Dies ist einfach zu implementieren, aber manchmal werden kritische Abschnitte unangenehm lang.
    • Eine komplexere Technik blockiert nur die Interrupts, die den Zugriff auf diese Datenstruktur auslösen können. Dies basiert oft auf Interrupt-Prioritäten, die in der Regel nicht gut mit den relevanten Systemdatenstrukturen übereinstimmen. Dementsprechend wird diese Technik meist in sehr eingeschränkten Umgebungen eingesetzt.
    • Prozessoren können über Hardwareunterstützung für einige kritische Abschnitte verfügen. Beispiele hierfür sind die Unterstützung des atomaren Zugriffs auf Bits oder Bytes innerhalb eines Worts oder andere atomare Zugriffsprimitive wie die in der ARMv6-Architektur eingeführten exklusiven Zugriffsprimitive LDREX/STREX.
  • Unterbrechungsverschachtelung. Bei einigen Mikrocontrollern können Interrupts höherer Priorität die Interrupts niedrigerer Priorität unterbrechen. Auf diese Weise kann die Software die Latenzzeit steuern, indem sie zeitkritischen Interrupts eine höhere Priorität (und damit eine geringere und besser vorhersehbare Latenzzeit) als weniger kritischen Interrupts zuweist.
  • Trigger-Rate. Wenn Unterbrechungen hintereinander auftreten, können Mikrocontroller durch eine Art von Tail-Call-Optimierung einen zusätzlichen Kontext-Save/Restore-Zyklus vermeiden.

Mikrocontroller der unteren Leistungsklasse unterstützen in der Regel weniger Unterbrechungslatenzsteuerungen als Mikrocontroller der oberen Leistungsklasse.

Speichertechnologie

Bei Mikrocontrollern werden in der Regel zwei verschiedene Arten von Speicher verwendet: ein nichtflüchtiger Speicher für die Speicherung von Firmware und ein Schreib-Lese-Speicher für temporäre Daten.

Daten

Von den frühesten Mikrocontrollern bis heute wird fast immer SRAM mit sechs Transistoren als Lese-/Schreib-Arbeitsspeicher verwendet, wobei einige weitere Transistoren pro Bit in der Registerdatei eingesetzt werden.

Zusätzlich zum SRAM verfügen einige Mikrocontroller über ein internes EEPROM zur Datenspeicherung; und selbst diejenigen, die kein EEPROM (oder nicht genug) haben, sind oft an einen externen seriellen EEPROM-Chip (wie die BASIC Stamp) oder einen externen seriellen Flash-Speicherchip angeschlossen.

Einige Mikrocontroller ab 2003 haben einen "selbstprogrammierbaren" Flash-Speicher.

Firmware

Die ersten Mikrocontroller verwendeten Mask-ROM zum Speichern von Firmware. Spätere Mikrocontroller (z. B. die frühen Versionen des Freescale 68HC11 und die frühen PIC-Mikrocontroller) hatten EPROM-Speicher, die ein durchsichtiges Fenster hatten, um das Löschen durch UV-Licht zu ermöglichen, während die Produktionsversionen kein solches Fenster hatten und OTP (one-time-programmable) waren. Firmware-Updates waren gleichbedeutend mit dem Austausch des Mikrocontrollers selbst, so dass viele Produkte nicht aufrüstbar waren.

Der Motorola MC68HC805 war der erste Mikrocontroller, der EEPROM zum Speichern der Firmware verwendete. EEPROM-Mikrocontroller wurden 1993 populärer, als Microchip den PIC16C84 einführte und Atmel einen 8051-Kern-Mikrocontroller vorstellte, der als erster einen NOR-Flash-Speicher zur Speicherung der Firmware verwendete. Heutige Mikrocontroller verwenden fast alle Flash-Speicher, einige wenige Modelle verwenden FRAM und einige sehr preisgünstige Teile verwenden immer noch OTP oder Mask ROM.

Einsatzbereiche

Der Mikrocontroller 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-Spieler, Radios, Fernsehgeräten, Fernbedienungen), Büroelektronik, Segways, Kraftfahrzeugen (Steuergeräte für z. B. ABS, Airbag, Motor, Kombiinstrument, ESP usw.), Mobiltelefonen und sogar in Uhren und Armbanduhren. Darüber hinaus sind sie in praktisch allen Computer-Peripheriegeräten enthalten (Tastatur, Maus, Drucker, Monitor, Scanner uvm.).

Mikrocontroller sind in Leistung und Ausstattung auf die jeweilige Anwendung angepasst. Daher haben sie gegenüber „normalen“ Computern Vorteile bei den Kosten und der Leistungsaufnahme. Kleine Mikrocontroller sind in höheren Stückzahlen für wenige Cent verfügbar.

Abgrenzung zu Mikroprozessoren

Rockwell R6511 Mikrocontroller, basierend auf dem 6502

Die Grenze zwischen Mikrocontrollern und Mikroprozessoren ist 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 Intel 80186 (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 (z. B. 6502, MC680xx).

Teilweise werden Mikrocontroller auch als Bestandteil eines Multi Chip Modules (MCM) verwendet. Das geschieht meistens dann, wenn verschiedene Halbleiterprozesse kombiniert werden sollen, die sich schlecht oder gar nicht auf einem Chip kombinieren lassen. Beispiele dafür sind Kombinationen von Mikrocontrollern mit Hochfrequenzschaltungen für Funkverbindungen (z. B. Atmel, Cypress, Microchip stellen solche MCMs her), mit Leistungselektronik (z. B. Freescale, ST) oder mit Flash-ROM in dessen Anfangszeiten (z. B. Micronas Intermetall). Teilweise wird die Lösung mit einem MCM auch benutzt, wenn bereits vorhandene Chips miteinander kombiniert werden sollen, aber der Aufwand für einen Neuentwurf vermieden werden soll. Beispiele dafür sind Kombinationen mit Netzwerkcontrollern, bzw. den Anschlusstreibern für Netzwerke (PHY) oder LCD-Controllern.

Demgegenüber gibt es aber auch „klassische“ Mikrocontrollerarchitekturen, die von Anfang an nicht als reines Mikroprozessorsystem gedacht waren, sondern primär auf Steuerungsaufgaben zielten. 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 Infineon TriCore. Zur Funktionsüberwachung von Mikrocontrollersteuerungen werden in der Regel sogenannte Watchdog-Schaltungen eingesetzt, die teilweise aber auch schon in den Mikrocontroller integriert sind.

Diese Trennung fand beim Intel 8085 statt – danach gab es die reinen Datenverarbeiter (Mikroprozessor; z. B. 8086-Familie) und die Datenübersetzer (Mikrocontroller; 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.