Logo

Mikrocontroller

Ein Mikrocontroller (µC) ist ein kleiner Computer, bei dem alle Komponenten, also Prozessor, Speicher, Taktgeber und Peripheriebausteine auf einem Chip vereint sind. Möglich macht dies die fortschreitende Miniaturisierung elektronischer Komponenten. Durch die Massenfertigung dieser Bauteile können außerdem die Preise sehr niedrig gehalten werden.

Mikrocontroller

Mikrocontroller (Chip)

Von Stehfun 12:34, 1 May 2006 (UTC) - Eigenes Werk, Gemeinfrei, Link

Die Komponenten eines Computers

Die Komponenten, die für die Funktion eines Computers wesentlich sind, lassen sich in mehrere Grundelemente aufteilen, die bestimmte Aufgaben erfüllen.

Komponenten eines Computers

Grundkomponenten eines Computers

  1. Eingabe (Input)
  2. Ausgabe (Output)
  3. Speicher (Memory)
  4. Steuerwerk
    (Control-Unit)
  5. Rechenwerk
    (Arithmetic-Logic-Unit)

Die Eingabe und Ausgabe von Daten (Input/Output oder I/O) zum oder vom Computer wird durch unterschiedliche Peripheriegeräte bewerkstelligt. Die externen Daten müssen in computerlesbare Daten übersetzt werden. Die Daten, die der Computer generiert müssen in eine passende Form übersetzt werden. In vielen Fällen müssen Daten generiert werden, die für den Menschen lesbar sind (human readable Data). Im Laufe der Zeit wurden hierfür die unterschiedlichsten technischen Lösungen entwickelt.

Die Daten, mit denen der Computer arbeitet und die er während seiner Berechnungen generiert, müssen irgendwo gespeichert werden. Dazu besitzt der Computer einen Speicher (Memory), der aus mehreren Komponenten bestehen kann. Daten, mit denen der Computer direkt arbeitet, werden normalerweise im Binärformat gespeichert, da auch der Speicher üblicherweise nur zwei Zustände kennt.

Das Steuerwerk (Control-Unit) steuert den Programmablauf und sorgt dafür, dass alle Komponenten des Computers zur rechten Zeit mit den nötigen Daten versorgt werden.

Die ALU

Das Rechenwerk (Aritmetic-Logic-Unit oder ALU) ist die Komponente eines Computers, in der die Berechnungen stattfinden. Die ALU beherrscht einige Grundfunktionen, mit denen sie die notwendigen Berechnungen durchführt. Der Knackpunkt ist, dass komplexere Funktionen durch schnelle wiederholte Anwendung dieser Grundfunktionen der ALU generiert werden können.

In ihrer einfachsten Form beherrscht eine ALU nur eine einzige mathematische Operation, nämlich die Addition. Außerdem beherrscht sie die logischen Grundoperationen UND, ODER, NICHT und das Bit-Shifting (Bitweise Verschieben einer Bitfolge). Aus diesen Grundoperationen können die Subtraktion, Multiplikation und Division durch geeignete Algorithmen abgeleitet werden.

Der scheinbare "Mangel an Grundrechenarten", die eine ALU beherrscht, liegt darin begründet, dass anfangs die elektronischen Komponenten, aus denen eine ALU bestand, groß, sperrig und vor allem teuer waren. Eine Minimalkonfiguration musste genügen.

In modernen ALUs sind auch Multiplikation und Fließkommaoperationen direkt integriert, was die Rechengeschwindigkeit vervielfacht. Durch die heutige hohe Integrationsdichte von Bauteilen auf einem Mikrochip fällt der zusätzliche Bauteileaufwand praktisch nicht ins Gewicht.

Moderne Computer und Mikroprozessoren

Heutige Computerprozessoren nennt man CPU (Central-Processing-Unit). Auf einer CPU sind die Funktionen von CU und ALU vereinigt. Die fortschreitende Miniaturisierung macht es möglich, auch weitere Grundkomponenten auf einem Halbleiterchip zu vereinigen. Das Ganze nennt man dann SoC (System on a Chip). Man sollte sich vor Augen führen, dass die Steuerung von modernen Haushaltsgeräten auf SoCs basiert, die ein Vielfaches an Rechenpower im Vergleich zu den ersten Computern (die ganze Turnhallen gefüllt haben) besitzen.

Interner Aufbau eines Mikrocontrollers

Die Rechenarbeit und die Steuerung des Programmablaufs übernimmt die CPU im Mikrocontroller. Die Abkürzung CPU steht dabei für Central Processing Unit. Die Ein- und Ausgabe wird über die I/O-Ports gesteuert. Diesen I/O-Ports sind bestimmte Anschlüsse (Pins) des Mikrocontrollers zugewiesen. Die CPU ist über ein internes Bussystem mit dem Speicher (Memory) und den I/O-Ports verbunden. Ein Taktgeber (Clock) steuert den zeitlichen Verarbeitungsablauf des Mikrocontrollers.

Mikrocontroller scheme

Schematischer Aufbau eines Mikrocontrollers

Anschlüsse eines Mikrocontrollers

Mikrocontroller pinout

Pinout eines Mikrocontrollers

Für den Betrieb eines Mikrocontrollers genügen wenige externe Bauteile. Die Pins ("Anschluss-Beinchen") sorgen für den elektrischen Anschluss an die Außenwelt. An den Pins werden externe Ein- und Ausgangssignale, aber auch die Versorgungsspannung für den µC angeschlossen. Die Pins werden nach unterschiedlichen Kriterien unterschieden:

  • I/O-Pins
    • Eingangs-Pins
    • Ausgangs-Pins
  • Analoge Pins
  • Digitale Pins
  • Pins für externe Taktsignale
  • Pins für die Versorgungsspannung
  • Pins, die an Masse liegen.

Häufig haben die Pins eines Mikrocontrollers mehrere Funktionen. Die konkrete Funktion solcher GPIO-Pins ("General Purpose Input Output"-Pins) kann durch die Programmierung des Mikrocontrollers frei definiert werden.

Häufig werden mehrere Pins zu Ports zusammengefasst. Dies liegt in der internen Bus-Struktur des Mikrocontrollers begründet. Mehrere Pins des gleichen Ports lassen sich gleichzeitig programmieren. Bei der Programmierung von Pins unterschiedlicher Ports muss eine zeitliche Abweichung einkalkuliert werden (auch wenn diese nur sehr kurz ist).

Jeder Mikrocontroller besitzt seine eigene, spezielle Pinbelegung (Pinout).

Die Programmierung eines Mikrocontrollers

Mikrocontroller programming

Programmierung eines Mikrocontrollers

Ein Mikrocontroller kann in Assembler (Maschinensprache) oder in einer Hochsprache wie C oder Basic programmiert werden.

Zum komfortablen Programmieren und Testen nutzt man eine IDE (Integrated Development Environment), die die meisten Hardware Hersteller oft umsonst für ihre Controller anbieten.
Die IDE, oder integrierte Entwicklungsumgebung stellt die Software zur Verfügung, die benötigt wird, um Code zu schreiben, zu debuggen und auf den Mikrocontroller zu übertragen. Mit Hilfe eines Programmieradapters oder eines USB-Kabels lassen sich die Programme dann auf den Mikroprozessor übertragen. Auch diese Aufgabe kann mit Hilfe einer passenden IDE vereinfacht werden. Die meisten Mikrocontroller können programmiert werden, ohne aus der Schaltung ausgebaut werden zu müssen. Dazu werden sie durch Setzen äußerer Signale in einen Programmiermodus versetzt.

Man kann jedoch viele Mikrocontroller auch ohne umfangreiche IDE programmieren, indem man den Code auf einem beliebigen Texteditor entwirft und diesen schrittweise compiliert, assembliert, linkt und auf den Controller überträgt. Die Hilfsprogramme, die dafür benötigt werden, bezeichnet man auch als Toolchain.

Für die Programmierung von AVR Mikrocontrollern existiert die quelloffene avr-gcc-Toolchain. Die Nutzung dieser Toolchain wird hier beschrieben.

Toolchain

Toolchain zur Programmierung eines Mikrocontrollers

Programmentwurf für einen Mikrocontroller

Um ein Programm für eine Steuerung mit Hilfe eines Mikrocontrollers zu entwickeln, muss das Problem zunächst genau analysiert werden. Die Problemanalyse liefert wichtige Eckdaten für die Umsetzung auf dem Mikrocontroller.

  • Was soll wie gesteuert werden?
  • Wie viele Ein- und Ausgänge werden benötigt?
  • Werden digitale oder analoge Signale verarbeitet?
  • Wie schnell muss die Verarbeitung der Signale sein?
  • Wie umfangreich muss das Steuerprogramm werden?
  • Muss mit weiteren Sensoren / Controllern kommuniziert werden?
  • Werden Daten geloggt / müssen Daten gespeichert werden?
  • Werden besondere, sicherheitsrelevante Systeme programmiert?

Nach diesen Kriterien kann man dann den passenden Mikrocontroller auswählen. Inzwischen gibt es zahlreiche billige Mikrocontroller, die sich auch für umfangreichere Steuerungsaufgaben eignen.

Bei der Entwicklung eines Programms hilft ein Programmablaufplan. Dieser kann unabhängig von der Programmiersprache und vom verwendeten Mikrocontroller entworfen werden. Er hilft zusätzlich bei der Analyse des Problems. Häufig trägt ein PAP auch zum Verständnis des Problems bei.