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

Fundamentum Propeller SPIN Programmierung

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.

 

 

 

 

 

 

 

 

Abb. 1

Das Objekt "TastBlink" enthält die beiden Methoden "tastzeit" und "blinker", die aus jedem anderen Objekt aufgerufen werden können.

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.

 

 

 

 

 

 

 

 

 

 

Abb. 2

Die in diesem Basiskurs 3 verwendete Hardware besteht aus einem Propeller Chip mit zusätzlich sechs LEDs und drei Tastern.

Alternativ zu einem Propeller Split kann auch ein Propeller BoE (Board of Education) oder AB (Activity Board) verwendet werden.

Ü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.

 

 

 

 

 

 

Abb. 3

Das Objekt "PunktNotation" ruft zwei Methoden aus dem Objekt "TastBlink" auf.

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:

  • TastLED.tastzeit(pinnr) bzw.
  • TastLED.blinker(pinnr, zeit, wdh)

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 …

  • Stackspeicher für den COG reservieren.
  • festlegen, welcher COG welchen Prozess ausführen soll.
  • … die COG-ID enthalten, damit gezielt Prozesse auch wieder gestoppt werden können.

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

<< Abb. 4 - Objekt LEDblinker mit den drei Methoden "Start", "Stop" und "Blink".

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.

Abb. 6 - Das Objekt "tasterzeit" kommt ohne neue COG-Zuweisung aus..

Über das Objekt LED_TasterSteuerung werden die Methoden zeit und start aus den Objekten ledBlinker bzw. TasterT mit der Punktnotation aufgerufen.

 

 

 

 

 

 

 

 

 

Abb. 7

Die Methoden "zeit" und "start" werden über das Hauptobjekt "LED_Tastersteuerung" 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

 

 

 

 

Abb. 8

Mit jedem Tasterdruck wird eine LED mit einer individuellen Frequenz (abhängig von der Länge des Tasterdrucks) hinzugeschaltet und von einem separaten COG betrieben.

 

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.

 

 

 

 

 

 

Abb. 9

Das Parallax Serial Terminal-Fenster.

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,

  1. starte das Programm Propeller Tool.
  2. öffne im Fenster links die Propeller Library.

 

 

 

 

 

Abb. 10

Über das Auswahlfenster in Propeller Tool wird das Verzeichnis "Propeller Library" geöffnet.

  1. Ein Doppelklick im linken unteren Fenster auf Parallax Serial Terminal.spin lädt das Proramm in Propeller Tool.
  2. Aktiviere im Editorfenster oben den Auswahlpunkt Documentation und lass dir alle Methoden dieses Objekts anzeigen.

Abb. 11 - Ein Ausschnitt der Methoden des Objekts "Parallax Serial Terminal"

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.

Abb. 12 - Das Programm "EnterAndDisplayValues.spin"

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.

 

 

 

 

 

 

Abb. 13

Die eingegebene Dezimalzahl 144711 wird als Bestätigung noch einmal dezimal und in hexadezimaler sowie binärer Schreibweise ausgegeben.

Wie arbeitet das Programm?

In dem Programm kommen die folgenden Methoden des Objektes Parallax Serial Terminal mit dem Alias pst vor:

  • Start, Clear, Str, Hex, Dec, Bin, Newline

 

In der Dokumentation des Objektes findet man zu jeder Methode einen Hinweis.

  • PUB Start(baudrate) : okay

Die Methode Start enthält einen Parameter Baudrate und den Rückgabewert okay.

 

  • PUB Clear

Löscht den Bildschirm und wird ohne Parameter aufgerufen.

 

  • PUB Str(stringptr)

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.

 

  • PUB Hex(value, digits)

Zeigt den Wert value mit digits Stellen an.

 

  • PUB Dec(value)

Die in der Variablen value abgelegte Zahl wird dezimal angezeigt.

 

  • PUB Bin(value, digits)

Ähnlich wie bei Hex, wird der Wert value mit digits Stellen angezeigt.

 

  • PUB newline

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.

 

  • pst#NL entspricht der Zahl „13“ und steht für „neue Zeile“.
  • pst#CS steht für die Zahl 16 und bedeutet „clear screen“.
Druckversion | Sitemap
© Reinhard Rahner - Gettorf