Basiskurs 3 – Abschnitt 1 - Objekte
Das Programm TasterBlinker.spin aus Basiskurs 2 – Abschnitt 2, Übung 2 enthielt zwei Methoden, blinker und tastzeit, die sich vielleicht auch in anderen Programmen einsetzen liessen.
Die beiden Methoden können in einer Objektdatei abgelegt werden und lassen sich später aus jedem anderen SPIN-Objekt sehr einfach wieder aufrufen. Wie das geht, zeigt die nächste Übung.
Als Vorbereitung dazu, wird zunächst ein Objekt TastBlink mit den beiden Methoden blinker und tastzeit angelegt.
Die benutzte Hardware
Im Basiskurs 3 wird, soweit nicht anders geschrieben, ausschließlich der gleiche Versuchsaufbau wie in Basiskurs 1 und 2 verwendet; er besteht aus sechs LED und drei Tastern.
Übung 1 - Methoden in anderen Objekten aufrufen
Das Objekt PunktNotation zeigt, wie man auf die zwei Methoden tastzeit und blinker aus dem Objekt TastBlink zugreift.
Die beiden Methoden tastzeit und blinker wurde vorher in einem Objekt TastBlink abgespeichert.
Um vom Objekt PunktNotation auf die beiden Methoden in TastBlink zugreifen zu können, bekommt das Objekt TastBlink im Objekt PunktNotation einen Nicknamen: TastLED. Er wird im OBJ-Block des Programms deklariert.
Methoden aus TastBlink lassen sich nun über die Punktnotation:
im Objekt PunktNotation aufrufen.
Die Hierarchiestruktur der Objekte
Die Beziehung der Objekte zueinander wird im Objekt-Hierarchie-Fenster angezeigt; links oben, im Propeller Tool Programm. Die Top-Objekt Datei ist PunktNotation, die Objekt-Datei TastBlink.
Ein Doppelklick auf das Verzeichnis TastBlink öffnet das SPIN-Programm in einem zweiten Fenster.
Ein rechter Maustasten-Klick auf eines der beiden Objekte im Objekt-Hierarchie-Fenster schaltet auf den Dokumentations-Modus um. Zurück kehrt man mit einem linken Maustasten-Klick.
Übung 2 - Prozesse von einzelnen Kernen (COGS) ausführen lassen
Um eine Methode in einem bestimmten COG zu starten bedarf es einiger Vorbereitungen.
Es müssen zusätzliche Variable bereitgestellt werden, die …
Erst dann kann der Befehl coginit, cogstart oder cognew aufgerufen werden.
In dieser Übung wird ein Objekt LEDblinker vorgestellt, das über einen bereitgestellten COG eine LED an Pin mit einer Geschwindigkeit rate reps-mal blinken lässt. Die dazu notwendigen Methoden berücksichtigen die o.g. Einzelschritte; das Objekt kann als Vorlage für eigene Entwicklungen genommen werden.
Das Objekt LEDblinker enthält drei Methoden: Start, Stop und Blink. Start und Blink enthalten die Parameter pin, rate, reps und den Rückgabewert success.
Die Methode Start soll einen neuen COG starten und Blink eine Folge von HIGH, LOW Zuständen am Ausgang Pin mit der Geschwindigkeit rate und der Anzahl reps an Wiederholungen erzeugen.
Das Objekt LEDblinker
Wie arbeitet das Objekt LEDblinker ?
Das Objekt LEDblinker enthält die Methoden Start und Stop und die uns bereits bekannte Methode Blinker. Diese wird in einem neuen COG gestartet.
Die globalen Variablen cog und das Array stack sind für alle Methoden des Objektes sichtbar.
Die Methode Start startet mit dem cognew-Befehl die Methode Blinker in einem neuen COG.
In Zeile 22 erzeugt cognew eine neue COG-ID addiert 1 und ordnet sie den Variablen cog und success zu (cogID = {0, 1, 2, 3, …, 7}. Misslingt der Start eines neuen COG, ist der Wert -1.
Der Rückgabewert von Start ist – bei Erfolg - cogID + 1. Solange dieser Wert ungleich Null ist, wurde der Prozess, einen neuen COG zu starten, erfolgreich ausgeführt. Ein Wert 0 deutet an, dass der COG nicht erfolgreich gestartet werden konnte. Das kann zum Beispiel dann auftreten, wenn bereits alle acht COGs auf dem Propeller Chip aktiviert sind.
Die Methode Stop bricht einen laufenden Prozess in einem COG ab. Dazu wird auf den Wert in der Variable cog (minus 1) zugegriffen.
Das Objekt tasterzeit
Dieses Objekt kennen wir bereits aus Übung 1. Es enthält nur die Methode zeit und diese wird keinem neuen COG zugewiesen. Sie läuft im gleichen COG wie das Hauptprogramm.
Über das Objekt LED_TasterSteuerung werden die Methoden zeit und start aus den Objekten ledBlinker bzw. TasterT mit der Punktnotation aufgerufen.
Übung 3 - Multiple Objektinstanzen
Mit Hilfe von Arrays lassen sich mehrere Objekte gleichzeitig in verschiedenen COGS starten. Das Objekt MultiCOG startet mit jedem Tastendruck einen neuen COG mit einem eigenen Blinkprogramm. Die Blinkfrequenz wird bestimmt durch die Dauer des Tastendrucks.
Die ersten sechs Tasterdrucke starten in jeweils einem neuen COG ein Blinkprogramm mit einer neuen LED. Mit den Tasterdrucken 7 - 12 werden nacheinander die COGs und mit ihnen die blinkenden LEDs wieder abgeschaltet.
Das Objekt MultiCOG
Abschnitt 2 - Das Terminalobjekt Parallax Serial Terminal (pst)
Über das Hauptmenü von Propeller Tool kann über Run – Parallax Serial Terminal … oder F12 auf ein Display zugegriffen werden, in dem Text und numerische Daten des Propeller Chip erscheinen.
Das obere hellgelbe Fenster ist der Eingabebereich; er überträgt Daten vom PC an den Propeller Chip. Das untere blaue Fenster empfängt Daten vom Propeller und stellt sie in diesem Fenster dar.
Damit das geschehen kann, muss im Fenster Com Port: ein Anschluss ausgewiesen sein. Sollte das, wie in Abb. 9 dargestellt, nicht der Fall sein, wird über Run – Identify Hardware… oder F7 die angeschlossene Hardware abgesucht und bei Erfolg der COM-Port angezeigt.
Übung 4 – Die Methoden des Objekts Parallax Serial Terminal
Der Zugriff auf das Terminalfenster erfolgt über das Objekt Parallax Serial Terminal mit einer Vielzahl von Methoden. Um sie einsehen zu können,
In der folgenden Übung werden einige der Methoden aufgerufen und gezeigt, wie Daten und Text im Terminalfenster dargestellt werden können.
Übung 5 – Dateneingabe/ Datenausgabe im Terminalfenster
Das Programm EnterAndDisplayValues.spin kann direkt aus dem Verzeichnis PE Kit – 6 – Object Lab in den Propeller Tool Editor geladen und ausprobiert werden.
Dazu muss über F12 zunächst das Terminalfenster geöffnet werden und – bevor man im oberen Fenster einen beliebigen Zahlenwert eingibt - die blinkende Taste Enable gedrückt werden.
Gibt man dann einen beliebigen Zahlenwert ein, erscheint sofort darauf die Darstellung der Dezimalzahl in verschiedenen Zahlensystemen.
Wie arbeitet das Programm?
In dem Programm kommen die folgenden Methoden des Objektes Parallax Serial Terminal mit dem Alias pst vor:
In der Dokumentation des Objektes findet man zu jeder Methode einen Hinweis.
Die Methode Start enthält einen Parameter Baudrate und den Rückgabewert okay.
Löscht den Bildschirm und wird ohne Parameter aufgerufen.
Der Stringpointer-Parameter erwartet die Startadresse eines Null-terminierten Strings. Die String-Direktive in string(„Dies ist … „) speichert den Wert, der zu der Zeichenkette in der Textnachricht gehört, im Programmspeicher des Propeller Chips. Der Compiler schließt einen solchen String automatisch mit einer 0 ab, er macht ihn null-terminiert.
Zeigt den Wert value mit digits Stellen an.
Die in der Variablen value abgelegte Zahl wird dezimal angezeigt.
Ähnlich wie bei Hex, wird der Wert value mit digits Stellen angezeigt.
Es wird eine neue Zeile mit Rücksprung veranlasst. Entspricht einem Wagenrücklauf bei der Schreibmaschine.
Das Objekt Parallax Serial Terminal enthält 16 Steuerzeichenkonstante, die mit dem Zeichen # referenziert und im Programmcode nachgeschlagen werden können.