McPrx-Logo

Mikrocontrollerpraxis

Einführung in die Mikrocontrollertechnik

Aufbauend auf die Grundlagen der Elektrotechnik und Elektronik wollen wir uns nun das Thema Mikrocontroller mal etwas genauer vornehmen. Zunächst drängt sich eine Frage auf. Was hat der Mikrocontroller eigentlich mit Computern zu tun. Um diese Frage zu beantworten, ist es hilfreich, als erstes zu definieren, was allgemein unter einem Computer zu verstehen ist. Ich glaube, die meisten Menschen denken bei dem Wort Computer an vier Dinge: Tastatur, Maus, Bildschirm und eine Box an die alles per Kabel angeschlossen wird. Aber das ist wohl eher eine oberflächliche Betrachtungsweise, die dem Kern der Frage nicht gerecht wird. Wahrscheinlich geht es doch mehr um die Box und deren Inhalt.

Desktop-PC
Bild 1: Blick in einen Desktop-PC

Wer einen klassischen Desktop-Computer sein eigen nennt, kann sich, mit einem Schraubendreher bewaffnet, der Frage auf ganz praktische Weise nähern (Bild 1). Aber bitte erst ausschalten und Netzkabel ziehen.

Hier sehen wir eine große Leiterplatte (auch Platine genannt), das sogenannte Motherboard. Auf diesem sind allerlei elektronische Bauelemente aufgelötet und aufgesteckt. Die größten und wichtigsten sind die CPU (central processing unit) zu deutsch der Hauptprozessor, ein oder mehrere Speichermodule, die den Hauptspeicher oder Arbeitsspeicher bilden, ein oder mehrere größere Ein-/Ausgabe-Schnittstellen-Bausteine (E/A englisch auch I/O für Input/Output), welche beim PC auch als Chip-Satz bezeichnet werden. Dazu kommt noch die Festplatte als ganz wichtige Komponente, die über ein Kabel an das Motherboard angeschlossen wird.

Hauptspeicher und Festplatte sind zwei Speicherarten, die sich gegenseitig ergänzen. Während die Festplatte ein sehr großes Speichervolumen hat und ihren Inhalt dauerhaft behält, ist die Zugriffsgeschwindigkeit auf die gespeicherten Daten relativ langsam. Dagegen kann auf den Hauptspeicher sehr schnell zugegriffen werden. Er verliert aber seinen Inhalt beim Ausschalten und seine Kapazität ist etwa 1000 mal kleiner als die der Festplatte.

Zusammengefasst besteht unser Computer also aus drei wichtigen Komponenten: CPU, Speicher und I/O. Aber fehlt da nicht noch was? Bis hierhin haben wir immer nur auf die Hardware geschaut. Ja richtig, etwas sinnvolles können wir mit dem Computer natürlich nur machen, weil es auch Software gibt. Und da haben wir ganz viel Auswahl: Software zum Texte schreiben, per E-Mail kommunizieren, chatten, im Internet surfen, Videos sehen und Musik hören, Spiele-Software, und und und.

Computerbestandteile
Bild 2: Bestandteile eines Computers

Das heißt also, unter einem Computer verstehen wir ein technisches System, welches auf der einen Seite aus Hardware (CPU, Speicher, I/O) besteht, die relativ universell für ganz unterschiedliche Zwecke einsetzbar ist und welches auf der anderen Seite für die verschiedenen Anwendungszwecke jeweils eine entsprechende spezifische Software benötigt (Bild 2).

Und jetzt kommt der Mikrocontroller ins Spiel. Dabei handelt es sich um ein einzelnes IC (Integreated Circuit - integrierter Schaltkreis), auf das genau diese Definition auch zutrifft. Damit aber alle Bestandteile auf einer Fläche von ca. einem Quadrat-Millimeter (1mm x 1mm) Platz finden, ist die Ausstattung natürlich nicht so üppig wie in unserem Beispiel-PC.

Mikrocontroller
Bild 3: Hard- und Software in einem IC

Es wird eine kleine möglichst energiesparende CPU integriert, für die Software gibt es einige Kilo-Byte nichtflüchtigen Programmspeicher. Für flüchtige Daten einige hundert Byte Datenpeicher, und je nach Anwendungsspektrum I/O-Komponenten zur Ein- und Ausgabe von digitalen Signalen, Timer (Zeitgeber) zur Steuerung zeitabhängiger Aufgaben, ein A/D-Wandler zur Verarbeitung analoger Sensor-Signale und einiges mehr (Bild 3).

Wie wir sehen, handelt es sich bei Mikrocontrollern nicht um einen Computer in Form eines Gerätes, sondern um einen Baustein, der in ganz unterschiedlichen Geräten zur Realisierung nützlicher Funktionen eingesetzt werden kann und wird. Wer sich aufmerksam in seinem Haushalt umschaut wird wahrscheinlich einige solcher Geräte finden. Hier einige Beispiele aus meiner Wohnung (Bilder 4 bis 6).

TV
Bild 6: Fernseher
Waschmaschine
Bild 5: Waschmaschine
Mikrowelle
Bild 4: Mikrowelle

Oder denken wir an die Elektroinksysteme in Kraftfahrzeugen: Motor-Steuerung, Antiblockier-System - ABS, Automatik-Getriebe, Airbag, Klimaanlage, Autoradio, Wegfahrsperre und viele weitere; denken wir an Kommunikationstechnik: Telefon, Fax, Internet-Router. Moderne Medizintechnikgeräte sind ein weiteres Einsatzgebiet (Computer-Tomographie, Laser-Behandlung). Industrielle automatisierte Produktionssysteme, Industrieroboter nicht zu vergessen. Und es gibt viele weitere Anwendungsbereiche (Messtechnik, Sicherheitstechnik, ...), unmöglich an dieser Stelle alles aufzuzählen.

Also viele gute Gründe, sich diese Technologie mal etwas näher anzuschauen. Das Besondere an diesen Systemen, was vielleicht schon etwas deutlich geworden ist, die Computer-Chips also die Mikrocontroller arbeiten doch ziemlich im Verborgenen, weshalb sie auch häufig als Embedded Systems also eingebettete Systeme bezeichnet werden. Und über die Software, die auf Ihnen läuft entscheidet nicht der Anwender sonder der Hersteller des jeweiligen Gerätes.

Blockschaltbild
Bild 7: Blockschaltbild Mikrocontrollersystem

Doch bevor wir jetzt selbst Hand anlegen und zu Entwicklern werden, sollten noch einige grundlegende Begriffe und Dinge kurz besprochen werden.

Zur Zusammenfassung des bisher besprochenen betrachten wir kurz das nebenstehende Blockschaltbild (Bild 7). In der Mitte sehen wir die CPU, links den Programm- und den Datenspeicher, rechts die I/O-Peripherie (Ein- und Ausgangs­signale). Neu sind die Taktversorgung, die häufig auch vollständig in den Mikrocontroller integriert ist, sowie die Spannungs­versorgung, welche von außen zugeführt werden muß.

Zum Verständnis für die Arbeitsweise eines Computers ist es wichtig, sich klarzumachen, dass Software nichts anderes ist, als eine Menge relativ simpler Befehle, die nacheinander im Programmspeicher stehen. Es gibt Befehlen zum Addieren und Subtrahieren, zum Laden und Speichern von Daten aus und in den Datenspeicher, zum Laden von Daten von Eingabe-Komponenten oder zum Schreiben von Signalen auf Ausgabe-Komponenten, Befehle die Vergleiche durchführen und dann im Programmfluß in Abhängigkeit des Vergleichsergebnisses an verschiedenen Stellen die Programm­abarbeitung fortsetzen und einige mehr. Jeder Befehl wird mittels eines Zahlencodes im Programmspeicher abgebildet.

Ablaufsteuerung
Bild 8: CPU-Ablaufsteuerung

Dafür, dass alle diese Befehle irgendwann ausgeführt werden, sorgt eine Ablaufsteuerung in der CPU (Bild 8). Die CPU hat dazu einige eigene Speicherzellen, sogenannte Register. Ein ganz wichtiges Register ist der sogenannte Program-Counter. Dabei handelt es sich um einen Zeiger welcher auf den Programmspeicher verweißt.

Beim Einschalten der Versorgungsspannung (engl. power on reset) oder bei einem anderen Reset wird der Program-Counter zunächst mit einem Startwert geladen (meist Null). Danach wird eine Endlosschleife ausgeführt, die aus drei Schritten besteht. Die erste Aktion ist das Laden des Befehls auf den der Program-Counter gerade zeigt. Im zweiten Schritt wird der gerade geladene Befehl dekodiert. Zeitgleich wird der Programm-Conter erhöht, so dass im nächsten Durchlauf auch der nächste Befehl aus dem Speicher geladen wird. Im dritten Schritt wird der Befehl, welcher gerade dekodiert wurde, ausgeführt. Zum Beispiel ist es möglich, dass gerade der Inhalt einer Speicherzelle mit einem konstanten Wert überschrieben wurde. Oder der Wert einer anderen Speicherzelle wurde gerade in ein CPU-internes Register kopiert. Oder es wurde der Inhalt von zwei Speicherzellen addiert. Ein weitere Möglichkeit ist, dass ein Befehl zur Programmverzweigung ausgeführt wurde. Das heißt, dass dabei der Program-Counter verändert wurde. Dadurch ist es möglich in der Software Schleifen und Verzweigungen zu realisieren.

Speicher- und I/O-Zugriff
Bild 9: Speicher- und I/O-Zugriff

Zum Abschluss dieser Einführung wollen wir noch einen kurzen Blick darauf werfen, wie der schreibende und lesende Zugriff auf die verschiedenen Speicherarten und die I/O-Komponenten funktioniert. Wie bereits in Bild 7 zu sehen, wird der Anschluss an die CPU über einen System-Bus realisiert. Dieser Bus besteht nun aus drei Bestandteilen: dem Adress-Bus, dem Daten-Bus und dem Steuer-Bus (Bild 8). Damit nicht jedes einzelne Bit eine eigene Adresse benötigt, sind immer mehrere Bits zu einem Wort zusammengefasst. Sehr weit verbreitet ist eine Wortbreite von acht Bit (ein Byte).

Auf den Adress-Bus legt die CPU die Adresse der Speicherzelle, auf welche zugegriffen werden soll. Über den Steuer-Bus zeigt die CPU an, in welche Richtung eine Datenwort übertragen werden soll: von der CPU zur Speicherzelle (schreibender Zugriff) oder vom Speicher zur CPU (lesender Zugriff). Zusätzlich ist es wichtig, dass der genaue Zeitpunkt angezeigt wird, wann das Datenwort übertragen wird. Dafür wird die steigende oder fallende Flanke eines Steuer-Bus-Signals verwendet.

Da der Adress-Bus und der Daten-Bus getrennt sind, haben sie i.a. auch nicht die gleiche Breite. Während die Daten-Bus-Breite angibt, wieviel Bit in einem Zuklus geschrieben oder gelesen werden, sagt die Adress-Bus-Breite etwas darüber aus, wie groß der ansprechbare Datenbereich ist. Zum Beispiel können mit einem Adress-Bus mit einer Breite von 16 Bit genau 65536 verschiedene Worte angesprochen werden (16² = 65536).

© Heiko Böhmer, Stand: 18.08.15