Informatik · Klasse 10–13 · aktualisiert
Controller in der Informatik einfach erklärt
Du lernst, was ein Mikrocontroller ist, wie sich Chip und Arduino-Board unterscheiden, wie Bitoperationen Register steuern und wie ein Interrupt abläuft.
0 von 9 Aufgaben gelöst
Kurz gesagt
Ein Mikrocontroller ist ein Chip mit Prozessor und Peripheriefunktionen, oft auch mit Speicher. Ein Board wie der Arduino UNO trägt ihn samt Anschlüssen. Ein Interrupt-Controller wie der 8259 ordnet Unterbrechungen nach Priorität und gibt sie an die CPU weiter.
In deiner Waschmaschine, der Fernbedienung und im Auto steckt oft ein kleiner Computer auf einem einzigen Chip. Dieser Chip muss auf Ereignisse sofort reagieren, zum Beispiel auf einen Tastendruck. Hier lernst du, wie das aufgebaut ist und wie du ihn programmierst.
Deine Lernziele
Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.
4 Abschnitte
Ein Mikrocontroller ist ein Halbleiterchip, der einen Prozessor und auch Peripheriefunktionen enthält. Oft liegen Arbeits- und Programmspeicher teilweise oder ganz auf demselben Chip. Er ist damit ein „Ein-Chip-Computersystem“ und bringt alle notwendigen Bausteine für einen kleinen Computer mit.
Bei einem klassischen Mikroprozessor sind Bausteine wie Takt- und Reset-Erzeugung, Interruptcontroller, Zeitgeber und Schnittstellenbaustein dagegen eigene Bausteine. Seit etwa den 2000er Jahren ist die Grenze teilweise fließend: Im einfachsten Fall werden diese Komponenten in den Chip selbst integriert.
Ein Programmable Interrupt Controller (PIC) ist etwas anderes. Ein Interrupt ist eine kurze Unterbrechung des laufenden Programms. Prozessoren haben oft nur einen Eingang für solche Anforderungen. Der PIC verwaltet mehrere Hardware-Interrupts und leitet sie geordnet an die CPU (den Hauptprozessor) weiter. Verwechsle ihn nicht mit der Mikrocontrollerfamilie PICmicro.
Definition
Mikrocontroller
Ein Halbleiterchip mit einem Prozessor und Peripheriefunktionen. Oft sind auch Arbeits- und Programmspeicher teilweise oder komplett auf demselben Chip.
Beispiel: Wo Mikrocontroller stecken
- 1Waschmaschinen und Fernbedienungen
- 2Steuergeräte im Auto, zum Beispiel für ABS und Airbag
- 3Tastatur, Maus und Drucker am Computer
Teste dich
Der Chip ist der Mikrocontroller selbst, zum Beispiel der ATmega328. Ein typisches Arduino-Board basiert auf einem solchen Microchip-AVR-Mikrocontroller aus der megaAVR-Serie.
Das Board ist die Platine drumherum. Ein Entwicklungsboard wie der Arduino UNO trägt den Chip und stellt Ein- und Ausgänge bereit. Beim UNO sind das sechs analoge Eingänge und 14 digitale Ein-/Ausgänge. Ob ein digitaler Pin Eingang oder Ausgang ist, legst du im Programm fest.
Das Board liefert weitere Dinge: Es wird über USB (5 V) oder eine externe Spannungsquelle (7–12 V) versorgt und hat einen 16-MHz-Schwingquarz. Es gibt auch Varianten mit 3,3 V oder mit anderem Takt. Ein Bootloader auf dem Chip erlaubt das Programmieren über die serielle Schnittstelle ohne externes Programmiergerät. Die Ausgänge dürfen mit je maximal 40 mA belastet werden. Mit aufsteckbaren „Shields“ erweiterst du das Board.
Definition
Entwicklungsboard
Ein einfaches E/A-Board (E/A heißt Ein-/Ausgabe) mit einem Mikrocontroller und analogen und digitalen Ein- und Ausgängen, zum Beispiel der Arduino UNO.
| Merkmal | Chip | Board |
|---|---|---|
| Beispiel | ATmega328 | Arduino UNO |
| Was ist es? | Der Mikrocontroller selbst | Platine mit Chip und Anschlüssen |
| Anschlüsse | Hat die I/O-Pins | Stellt die I/O-Pins für Schaltungen bereit |
Merke: Der Chip ist der Mikrocontroller. Das Board ist die Platine, auf der er sitzt.
Teste dich
Die Arduino-Entwicklungsumgebung (IDE) bindet Bibliotheken (englisch libraries) ein, die die Programmierung in C und C++ stark vereinfachen. Technische Details wie Header-Dateien werden vor den Anwendern weitgehend verborgen. Für ein funktionierendes Programm genügt es, zwei Funktionen zu definieren: setup() läuft einmal beim Start, loop() läuft danach in einer Endlosschleife. Ob und wie die Bibliotheksfunktionen intern Register verändern, behandelt diese Seite nicht.
Mikrocontroller haben neben Recheneinheit und Speicher weitere Funktionsblöcke wie Timer/Counter, Schnittstellen, AD-Wandler und Ein-/Ausgabeports. Sie werden durch Register konfiguriert und angesprochen. Der AVR ist ein 8-Bit-Controller, seine Register sind 8 Bit breit. Du liest und schreibst sie wie eine Variable.
Einzelne Bits änderst du mit Bitoperationen. Dabei bleiben die anderen Bits erhalten. Setzen: x |= (1 << Bitnummer); das ist eine ODER-Verknüpfung. Löschen: x &= ~(1 << Bitnummer); das ist UND mit Negation. Prüfen: Du liest das Register und blendest mit UND alle anderen Bits aus, zum Beispiel if(PINB & (1 << PB1)). Setze nur die Bits, die du ändern willst, um Seiteneffekte zu vermeiden.
Definition
Register
Ein Register ist ein Speicherplatz im Mikrocontroller, über den Funktionsblöcke wie Ports oder Timer konfiguriert und angesprochen werden. Beim AVR ist es 8 Bit breit.
Beispiel: LED blinken lassen mit Bibliotheksfunktionen
- 1Annahme: ledPin steht für den Pin, an dem die LED hängt.
- 2void setup() { pinMode(ledPin, OUTPUT); }
- 3void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); }
- 4Ergebnis: Die LED blinkt mit 0,5 Hz, weil jeweils 1000 Millisekunden gewartet wird.
Merke: Setzen mit ODER (|), löschen mit UND und Negation (&~), prüfen mit UND (&). Die anderen Bits bleiben dabei unverändert.
Teste dich
Ein Hardware-Interrupt wird durch ein asynchrones externes Ereignis ausgelöst. Das heißt, das laufende Programm wird nicht immer an derselben Stelle unterbrochen. Das auslösende Ereignis heißt Unterbrechungsanforderung (englisch Interrupt Request, IRQ). Beispiel: Die Tastatur sendet einen IRQ, wenn eine Taste gedrückt wurde.
So läuft es ab: Die CPU akzeptiert eine Anforderung erst nach Ablauf der gerade laufenden Instruktion. Maskierte Anforderungen (zeitweise gesperrte) bleiben zunächst unbeachtet. Mehrere Anforderungen ordnet die Hardware, also der Interrupt-Controller: Er bestimmt den Interruptvektor der Anforderung mit der höchsten Priorität, die nicht maskiert ist. Die CPU speichert die Stelle des unterbrochenen Programms auf dem Stack, liest den Vektor vom Datenbus und springt zur Unterbrechungsroutine (ISR, englisch interrupt service routine). Die ISR sichert die Register, die sie benutzt, und stellt sie am Ende wieder her. Ein Rücksprung (RTI) setzt das unterbrochene Programm fort. Danach werden die anderen noch anstehenden Anforderungen bearbeitet.
Der Intel 8259 ist ein solcher PIC. Er hat 8 Interrupt-Eingänge und einen Ausgang. Die Eingänge sind mit den Geräten verbunden, etwa Tastatur, Timer und Drucker. Der Ausgang geht zur CPU. Im Normalfall hat Eingang 0 die höchste und Eingang 7 die niedrigste Priorität. Der 8259 addiert die Nummer des Eingangs zu einem konfigurierbaren Wert und übergibt diesen der CPU. Reichen 8 Eingänge nicht, verbindet man zwei Bausteine: den Ausgang des Slave mit einem Eingang des Master, normalerweise Eingang 2 (Kaskade).
Definition
Interrupt Request (IRQ)
Das auslösende Ereignis eines Interrupts. Danach führt der Prozessor eine Unterbrechungsroutine (ISR) aus und setzt das unterbrochene Programm anschließend fort.
Beispiel: Tastendruck
- 1Die Tastatur sendet einen IRQ, weil eine Taste gedrückt wurde.
- 2Die Unterbrechungsroutine liest das Zeichen von der Tastatursteuerung.
- 3Sie leitet es an die Anwendung weiter. Danach läuft das alte Programm weiter.
Merke: Der Interrupt-Controller wählt unter den anstehenden IRQs den mit der höchsten Priorität aus. Beim 8259 hat im Normalfall Eingang 0 den Vorrang.
Teste dich
Alles auf einen Blick
Controller
Mikrocontroller
Chip mit Prozessor und Peripherie, oft auch mit Speicher
PIC
verwaltet mehrere Hardware-Interrupts und leitet sie geordnet an die CPU weiter
Chip und Board
Der ATmega328 ist der Chip, der Arduino UNO das Board
Bits im Register
Setzen mit ODER, löschen mit UND und Negation, prüfen mit UND
Interrupt
Die Anforderung mit der höchsten Priorität wird zuerst bearbeitet, danach geht es im alten Programm weiter
Musteraufgabe · Schritt für Schritt
Bits in einem Register setzen, löschen und prüfen (ausgedachtes Beispiel)
- 1Annahme: Ein 8-Bit-Register R hat den Inhalt 01010100. Die Bits zählen wir von rechts ab 0.
- 2Bit 3 setzen: R |= (1 << 3). Die Maske (1 << 3) ist 00001000.
- 3ODER ergibt 01011100. Nur Bit 3 ist neu auf 1, alle anderen Bits bleiben gleich.
- 4Bit 2 löschen: R &= ~(1 << 2). Die Maske ~(1 << 2) ist 11111011.
- 5UND von 01011100 und 11111011 ergibt 01011000. Bit 2 ist jetzt 0, der Rest bleibt.
- 6Bit 4 prüfen: R & (1 << 4) ergibt 00010000. Das ist nicht 0, also ist Bit 4 gesetzt.
Fehler finden
Prüfe die Aussagen zum Register Q (ausgedachtes Beispiel) In einer Zeile steckt ein Fehler. Tippe sie an.
Fehler in Zeile 3Beim Löschen fehlt die Negation. Richtig: Q &= ~(1 << 5); so wird nur Bit 5 auf 0 gesetzt und die anderen Bits bleiben erhalten.
Lückentext
Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.
Bei einem Mikrocontroller sitzen Prozessor und Peripheriefunktionen auf . Ein Bit löschst du mit einer UND-Verknüpfung und einer zusätzlichen . Beim 8259 hat im Normalfall Eingang 0 die Priorität.
Karteikasten
Erst selbst überlegen, dann umdrehen.
Übung mit Feedback