Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Propeller 8 Kern Controller - C Programmierung

1 - Propeller Controller - der intelligente Helfer für eigene Ideen

Der Propeller Mikrocontroller auf dem Activity Board (AB)  oder Board of Education (BOE)  kann für deine Ideen zukünftig dein intelligenter Helfer, dein intelligenter Roboter sein, der all die Arbeiten ausführt, die du ihm beibringst oder überträgst.

 

Du könntest deine Ideen einem ActivityBot - einem Roboter mit einem Activity Board - eingeben und ihn zum Beispiel so "intelligent" machen, dass er sich beim Fortbewegen an keinem Hindernis stößt, einer aufgezeichneten Linie folgt oder sich selbstständig durch ein Labyrinth bewegen kann. Es gibt viele Ideen, einen Roboter etwas machen zu lassen. Bevor einem das aber gelingt, müssen wir uns über die in ihm steckende Technik unterhalten.

Was versteht man unter einem Mikrocontroller?

Courtesy of Parallax Inc.

Wir verstehen darunter einen integrierten Schaltkreis (einen Computerchip), der einen Prozessor, der das "Denken" übernimmt, und einen Speicher enthält, damit er das, was er machen soll, nicht vergisst.

Mikrocontroller verfügen über Ein- und Ausgänge (Kurzform: I/O Pins), über die elektrische Signale mit anderen Geräten (z. B. Taster, Lautsprecher, Motoren, Leuchtdioden und Sensoren) ausgetauscht werden können.

Einzelkern (single core) vs. Multikern (multi core)

Courtesy of Parallax Inc.

Ein Mikrocontroller mit nur einem Kern enthält nur einen Prozessor. Ein Multikern Mikrocontroller hat auf einem einzigen Chip zwei oder mehr Prozessoren oder auch Kerne.

Multitasking

Courtesy of Parallax Inc.

Ein Einzelkern Mikrocontroller, der gleichzeitig mehrere Aufgaben erledigen muss, kann das nur schaffen, wenn er jede einzelne Aufgabe nur jeweils für eine kurze Zeit ausführt, bevor er die nächste Aufgabe wahrnimmt, so lange, bis alle Aufgaben abgearbeitet sind.

 

Wenn die Pausen zwischen den jeweiligen Einzelaufgaben kurz genug sind, sieht es für einen Beobachter so aus, als ob dieser Mikrocontroller mehrere Aufgaben gleichzeitig bewältigt, obwohl er sie in Wirklichkeit nacheinander ausführt. So etwas bezeichnen wir als Multitasking.

 

Vergleichbar ist das mit einem Küchenchef, der ganz allein gleichzeitig Brot backen, ein Roastbeef braten  und eine Sauce dazu anrühren soll. Der Koch (Prozessor) knetet zuerst den Brotteig eine gewisse Zeit und lässt ihn dann 15 Minuten backen; jetzt hat er Zeit die Sauce anzurühren und das Fleisch auf den Grill zu legen. Der Koch rührt ständig die Sauce und zwischendurch wendet er das Fleisch auf dem Grill, damit beides nicht anbrennt. Aber zu jeder Zeit erledigt der Koch (Prozessor) nur eine Aufgabe, obwohl gleichzeitig drei Prozesse im Gang sind (Brotteig herstellen, Sauce anrühren, Fleisch braten).  

 

Es ist klar, dass die Zahl der Aufgaben, die innerhalb einer gewissen Zeit zu erledigen sind, nicht zu groß werden darf, wenn das Ergebnis noch gut werden soll. Das gilt insbesondere für unseren Koch.

Multiprocessing

Courtesy of Parallax Inc.

Erledigt ein Multikern-Mikrocontroller gleichzeitig mehrere Aufgaben, wobei jede Aufgabe einem anderen Prozessor übergeben wird, dann bezeichnen wir das als Multiprocessing oder echtes Multitasking.

 

Bemühen wir wieder das Bild vom Chefkoch, der Brot herstellen, eine Sauce anrühren und Fleisch braten soll. Diesmal verfügt der Koch aber zusätzlich über drei weitere Köche. Einem übergibt er die Aufgabe die Sauce herzustellen, dem zweiten das Fleisch anzubraten und er selbst kümmert sich um das Brot.

 

Alle drei Köche arbeiten jetzt gleichzeitig ohne Unterbrechung an ihrer Aufgabe; keiner muss sich um die Aufgabe des anderen kümmern. Sollte etwas Unvorhergesehenes eintreten, ist sogar noch ein weiterer Koch verfügbar, der diese Aufgabe erledigen kann, ohne das die anderen ihre Arbeit unterbrechen müssen.

Der Propeller hat 8 Kerne

Courtesy of Parallax Inc.

Ein Propeller Mikrocontroller verfügt über 8 Kerne, die echtes Multitasking ermöglichen. Alle Kerne sind gleich.

 

Der Kontroller hat 32 identische I/O Anschlüsse, die von jedem Kern angesteuert werden können. Das bedeutet, dass alle Propeller-Kerne und I/O Anschlüsse Aufgaben gleich gut ausführen. Jeder Kern (Cog) verfügt über einen eigenen kleinen Speicher und hat Zugriff auf einen größeren Hauptspeicher, über den untereinander Informationen weitergegeben werden.

Prop-C spricht mit einem Multikern-Prozessor

Courtesy of Parallax Inc.

Acht Kerne in einem Mikrocontroller klingt fast schon bedrohlich. Kompliziert könnte aber  die Aufgabe werden, jeden der acht Kerne so zu programmieren, dass er genau das ausführt, was der Programmierer von ihm verlangt.

 

Hier hilft die Sprache Propeller - C (Prop-C), die für den Propeller Controller bereits fertige Programme, sogenannte Funktionen, enthält, über die sich der Controller unkompliziert ansprechen lässt.

 

Funktionen innerhalb der Sprache C sind vergleichbar mit Rezepten, die ein Chefkoch seinen Assistenten gibt. Damit spart er Zeit, denn er muss nicht mehr jedem erklären, wie gekocht werden soll. Und die Assistenten können sich untereinander helfen, ohne den Chefkoch damit zu behelligen. So wie ein Team von acht Köchen große Gesellschaften versorgen kann, kann der Propeller mit seinen acht Kernen sehr effizient eine Vielzahl von  Prozessen überwachen. Das nennt man Teamwork!

 

Eine C-Bibliothek ist eine Sammlung von Funktionen, die sich mit einem Kochbuch und seinen Rezepten vergleichen lässt.

Courtesy of Parallax Inc.

Ein C Programm kann auf Funktionen aus unterschiedlichen Bibliotheken zugreifen, so wie ein Mittagsgericht sich aus mehreren Rezepten unterschiedlicher Kochbücher zusammensetzen kann.

Vom Kochen zur Robotik und mehr

Courtesy of Parallax Inc.

Wie sieht nun ein Multikern Prozess bei einem Roboter aus?

 

Das C Programm ruft zum Beispiel eine Funktion Motor auf, über die ein anderer Kern (Cog) angesteuert wird, der den Roboter eine bestimmte Wegstrecke laufen lässt und eine Funktion Sensor aufruft, mit deren Hilfe überprüft wird, ob sich ein Hindernis auf der Wegstrecke befindet. Sollte das der Fall sein, ruft das Programm eine Funktion Musik auf, die wiederum andere Kerne (Cogs) anweist Lieder von der SD-Karte zu laden und über den Lautsprecher abzuspielen.

 

Der ActivityBot ist nur ein Beispiel für eine Mikrocontrolleranwendung. Du kannst ebenso das ActivityBoard oder das Prop-Board of Education oder andere Boards mit dem Propeller-Controller für eigene Projekte oder zur Entwicklung eigener Erfindungen - unabhängig vom Roboter - einsetzen. 

2 - Der Propeller Chip

Der Chip von Parallax enthält acht parallel arbeitende Mikroprozessoren auf einem Chip. Jeder Prozessor ist mit zwei 32-Bit Timern mit eigener PLL ausgestattet und kann an den Pins bis ca. 40MHz zählen sowie DA und AD Wandlung unterstützen. Und sie enthalten die nötige Hardware zur Erzeugung von Video- und VGA Signalen.

Die 32-Bit CPU mit Timern und lokalem RAM wird als cog bezeichnet. Zusätzlich gibt es ein globales RAM und ROM mit je 32kByte sowie 32 I/O Pin, einen internen 12 MHz Oszillator (nicht sehr frequenzstabil) und einen Quarzoszillator mit PLL auf dem Chip.

Ein cog arbeitet mit bis zu 80 MHz Taktfrequenz. Für jeden Befehl benötigt die CPU mindestens 4 Takte. Bei 8 cogs kommt man so auf 160 MIPS. Der Zugriff auf den globalen RAM erfolgt über einen sogenannten Hub; der sorgt dafür, dass die acht cogs sich nicht in die Wolle kriegen. Die Zugriffsrate liegt bei 5MHz. Das gilt aber nicht für die I/O Pin; Ein- und Ausgaben erfolgen mit max. 20MHz.

Für die Datenübertragung zwischen den cogs wird das globale RAM verwendet; es enthält nach dem Booten auch den Programmcode für alle cogs, der beim Start eines cogs dann in dessen internes RAM kopiert wird.

3 - Die Programmiersprachen des Propeller

Er kann in Assembler, in SPIN oder in Prop-C programmiert werden. Seit einiger Zeit laufen auch Bestrebungen, ihn in Prop-BASIC unter der PT-Umgebung zu programmieren. Durch den objektorientierten Ansatz der Sprache SPIN lassen sich vorgefertigte Objekte in den eigenen Code einbinden.

Druckversion | Sitemap
© Reinhard Rahner - Gettorf