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

1 - Objekte einbinden

Bevor wir anfangen, sollte die von Parallax Inc. entwickelte zip-Datei PropBOE_Spin_LEDs_20120130 heruntergeladen und im Arbeitsverzeichnis entpackt werden. Sie enthält die Beispieldateien, auf die sich das Folgende bezieht.

Aufruf einer Benutzerbibliothek
Aufgaben
  • Klicke auf das Objekt Timing.spin im Auswahlfenster von PT. Das Programm wird geladen.
  • Wähle aus der Optionsschaltfläche Documents. Die Beschreibung zu allen im Objekt Timing  enthaltenen Methoden inklusiver weiterer Beschreibungen werden angezeigt; die Methodennamen beginnen alle mit PUB.
  • Wiederhole diesen Vorgang mit dem Objekt Input Output Pins.

Über die Optionsschaltfläche lassen sich verschiedene Bildschirme und Ansichten öffnen.

Bild 1 - Über die Optionsschaltfläche Documentation wird ein erläuternder Text zu den in einem Objekt enthaltenen Methoden ausgegeben.

Über die Optionsschaltfläche Summary werden alle Methoden innerhalb des Objekts Timing anzeigt.

Bild 2 - Über die Optionsschaltfläche Summary werden die einzelnen Methoden eines Objektes ausgegeben.

In der Einstellung Condensed werden die Programmzeilen der einzelnen Methoden innerhalb des Objektes Timing gezeigt.

 

Bild 3 - In der Darstellung Condensed wird der Quellcode einer Methode angezeigt.

Eine Übersicht über das Objekt Input Output Pins verschafft man sich auf die gleiche Art, wie eben beschrieben. Mit diesem Wissen wird das Programm LED_1.spin aus Propeller SPIN, Abschnitt 3 neu geschrieben.

Ein Programm mit verschiedenen Objekten entwickeln - Teil 1
Aufgaben
  • Lade das Programm LED_1.spin in den Editor des PT und speichere es im Verzeichnis LED ab.
  • Kopiere in das gleiche Objekt die Objekte "Input Output Pins" und "Timing".
  • Ändere das Programm so ab, wie in Abb. 4 dargestellt.
  • Kompiliere das Programm mit einem Aufruf von F10.

Programm

Bild 4 - Geändertes Programm LED_1.spin mit OBJ Block nach dem Compilieren
Ein Programm mit verschiedenen Objekten entwickeln - Teil 2
Aufgaben
  • Im linken oberen Fenster sollte jetzt das Objekt LED_1 erscheinen mit den beiden optisch eingerückten Objekten Input Output Pins und Timing.
  • Ändere jetzt die Programmzeilen in der Methode PUB main wie in Abb. 5 gezeigt und speichere das neue Programm unter LED_1_mitObjekten ab. Nach dem Compiliervorgang (F10) sollte der neue Name des Objektes oben links im Fenster erscheinen.

Programm

Bild 5 - Lauffähiges Programm mit zwei zusätzlichen Objekten

In einem SPIN Programm muss zu Anfang stehen, welche Objekte benutzt werden; ihre Bezeichnungen werden im OBJ-Block in Anführungszeichen eingetragen. Vorangestellt und durch einen Doppelpunkt getrennt erscheint der Aufrufname des Objektes.

In den Programmzeilen des Hauptprogramms werden die Methoden der einzelnen Objekte über den Aufrufnamen, gefolgt von einem Punkt und den speziellen Methodenname benannt. Übergabeparameter werden in Klammern gesetzt.

2 - Programmblock, Objekt und Methode

Jeder Dateiname eines Objektes erhält einen Aufrufnamen, der dann im Programmcode verwendet werden kann. Im folgenden Bild wird das noch einmal deutlich gemacht. Im OBJ-Block werden die beiden Objekte "Propeller Board of Education" mit Aufrufnamen system und "Parallax Serial Terminal Plus" mit Aufrufnamen pst deklariert.

Im PUB Block wird die Methode Clock aus dem Objekt "Propeller Board of Education" über den Aufrufnamen aufgerufen

  • system.Clock(80_000_000)
    

gefolgt von einem Aufruf der Methode Str aus dem Objekt pst

  • pst.Str(String("Hello!"))
    
Courtesy of Parallax Inc.

Nach soviel Theorie kommen jetzt die Anwendungen.

3 - Textausgabe im Terminal

Textausgabe im PT Terminal
Material
  • 1x  Prop-BoE oder Prop-AB mit USB-Anschlusskabel
  • 1x  Steckernetzteil
Aufgaben
  • Übertrage das Programm Hallo.spin in den PT Editor und speichere es ab.
  • Überprüfe, ob die in das Programm eingebundenen Objekte sich im gleichen Verzeichnis wie das Programm befinden. Wenn nicht, kopiere sie dort hin.
  • Öffne mit F12 das PST (Parallax Serial Terminal).
  • Starte das Programm mit F10 und klicke im PST auf den Taster Enable.
  • Überprüfe, ob der Text Hallo! im Terminal angezeigt wird.

Programm

Abbildung 6 - Programm Hallo.spin mit den Objekten "Propeller Board of Education" und "Parallax Serial Terminal Plus"

Wie arbeitet das Programm?

Die Methode Start enthält nur zwei Zeilen. Der Aufrufname system ist mit dem Objekt "Propeller Board of Education" verbunden, pst mit dem Objekt "Parallax Serial Terminal Plus".

Ein Doppelklick links unten im Fenster des PT auf das Objekt "Propeller Board of Education" lädt die Datei in den Editor. Dort findet sich - bei Umschaltung auf das Anzeigeformat Documentation -  an entsprechender Stelle ein Hinweis zum Gebrauch des Befehls Clock.

Abbildung 7 - Dokumentation zum Objekt "Propeller Board of Education"

Auf gleiche Weise kann man sich Informationen über den Gebrauch der Methode Str im Objekt "Parallax Serial Terminal Plus" verschaffen.

Abbildung 8 - Dokumentation zum Objekt "Parallax Serial Terminal Plus"

4 - Was ist ein Nullterminierter String?

Das Kommando String("Hallo!") legt die einzelnen Zeichen zwischen den Anführungszeichen im Programmspeicher ab und beendet die Eingabe standardmäßig mit einer Null.

Nullterminierter String
Aufgabe
  • Öffne im PT das Objekt 1_Text Hallo.spin.
  • Compiliere das Programm mit F8 und klicke im geöffneten Object Info Fenster auf den Button Show Hex.

5 - Zahlenwerte im Terminal ausgeben

Zahlenwerte im Terminal ausgeben
Aufgabe
  • Ändere die Programmzeilen im Programm 1_Text Hallo so ab, wie in Abb. 9 dargestellt.
  • Speichere das Programm ab und starte es mit F12 (Terminal) und F10 (Compilieren). Vergiss nicht, den Button Enable im Terminalfenster rechtzeitig zu aktivieren.

Programm und Terminalausgabe

Abbildung 9 - Text und Zahlausgabe im Terminal

6 - Schleifenzähler

Schleifenzähler
Aufgabe
  • Es wird ein Schleifenzähler, der von 1 bis 10 zählt, programmiert.
  • Übertrage das Programm Zaehler.spin in den PT und speichere es ab.
  • Starte das Programm mit F12 (Terminal) und F10 (Compilierung). Es sollten alle Zahlen von 1 bis 10 untereinander im Terminal ausgegeben werden.

Programm und Terminalausgabe

Abbildung 10 - Programm Zaehler.spin mit Terminalausgabe

Weitere Darstellungen des Befehls repeat

Mit der erweiterten Programmzeile

  • repeat i from 1 to 10 step 2
    

wird in 2-er Schritten bis 10 gezählt: 1, 3, 5, 7, 9 oder mit

  • repeat i from 10 to 1
    

rückwärts von 10 bis 1 gezählt oder mit

  • repeat 3
    

alles was danach eingerückt ist, wird dreimal wiederholt. Probiere es aus!

7 - Einfache Termberechnungen

Einfache Termberechnungen
Aufgabe
  • Es werden einfache mathematische Terme über die Terminaleingabe von Zahlenwerten berechnet.
  • Übertrage das Programm Arithmetik.spin in den PT und speichere es ab.
  • Starte das Programm mit F12 (Terminal) und F10 (Compilierung).
  • Gib im oberen Fenster des Terminals eine Zahl ein und bestätige mit der Rücksprungtaste.
  • Gib eine zweite Zahl ein und bestätige die Eingabe wiederum mit der Rücksprungtaste.
  • Drücke die Rücksprungtaste ein weiteres Mal und das Ergebnis der Addition wird angezeigt.

Programm

Abbildung 11 - Einfaches Programm zur Addition von Zahlen mit Werteeingabe über Terminal

Informationen über weitere Rechenoperatoren findest du über Help - Propeller Manual im Hauptmenü von PT unter dem Stichwort unary operators (unitäre Operatoren) und binary operators (binäre Operatoren).

8 - Einfache Entscheidungen

Im folgenden Programm werden über das Terminal eine Zahl eingegeben und der Rechner meldet zurück, ob es eine positive oder negative Zahl oder Null ist.

Einfache Entscheidungen
Aufgabe
  • Übertrage das Programm Entscheidung.spin in den PT und speichere es ab.
  • Starte das Programm mit F12 (Terminal) und F10 (Compilierung).
  • Gib im oberen Fenster des Terminals eine Zahl ein (mit oder ohne Vorzeichen) und bestätige die Eingabe mit der Rücksprungtaste.
  • Im Terminal sollte anschließend ausgegeben werden, ob die eingegebene Zahl positiv, negativ oder die Null war.

Programm und Terminalausgabe

Abbildung 12 - Programm Entscheidung.spin mit Werteingabe über das Terminal

9 - Daten speichern und lesen

Soll eine größere Menge von Daten abgespeichert werden, dann macht man dies über Feldvariable. Im folgenden Beispielprogramm werden zunächst 6 Datenwerte eingegeben und anschließend wieder ausgelesen und im Terminal angezeigt.

Programm und Terminalausgabe

Abbildung 13 - Programm Feldvariable.spin mit Terminalausgabe

Wie arbeitet das Programm Feldvariable.spin?

Die Deklaration einer Feldvariablen in SPIN entspricht der in der Sprache C. Die Feldelemente werden immer von Null beginnend hochgezählt; das verwirrt etwas. Mit der Deklaration im VAR-Block werden insgesamt 7 Variable, 6 Feldvariable: wert[0], wert[1], ..., wert[5] und eine Variable i. Alle Variablen sind vom Typ long.

In der Methode start werden nacheinander zwei Schleifen jeweils sechsmal durchlaufen. Die erste Schleife liest die Werte ein und in der zweiten Schleife werden die Werte im Terminal ausgegeben.

10 - Taster abfragen

Schaltskizze

Schaltungsaufbau

Courtesy of Parallax Inc.

Wird einer der beiden Taster gedrückt, dann erkennt der Controller Eingang (P3 und/oder P4) an seinem Eingang eine 1 und es fließt ein geringer Strom von +3,3V über den Widerstand 10kOhm nach Masse. In den Controller fließt kein Strom, da beide I/O Ports auf Eingang geschaltet sind.

Taster abfragen
Aufgabe
  • Übertrage das Programm taster.spin in den PT und speichere es ab.
  • Starte das Programm mit F12 (Terminal) und F10 (Compilierung).
  • Drücke den unteren Taster und beobachte das Terminalfenster. Der Wert 0 sollte sich, sobald der Taster gedrückt wird, auf 1 ändern. Der obere Taster erzielt keine Wirkung.

Programm und Terminalausgabe

Wie arbeitet das Programm Taster_1?

Im OBJ-Block werden vier Bibliotheken eingebunden, die wir bereits aus vorherigen Übungen kennen. Im VAR-Block wird eine Variable zustand deklariert. In der Methode start wird mit pst.Home der Cursor ganz links oben im Terminalfenster positioniert und mit pst.Bin(zustand, 1) wird der Wert der Variablen zustand als 1-stellige binäre Zahl ausgegeben. Nach einer Pause von 50ms beginnt das Programm wieder von vorne.

 

Schauen wir uns die Methode In im Objekt Input Output Pins noch etwas genauer an.

Der Propeller Controller interpretiert einen Spannungswert an seinem Eingang, der größer ist als 1,65 V als HIGH oder 1 und wenn er darunter liegt als LOW oder 0.

11 - LED mit Taster steuern

LED mit Taster steuern
Aufgabe
  • Übertrage das Programm taster_led.spin in den PT und speichere es ab.
  • Starte das Programm mit F10 (Compilierung).
  • Drücke den unteren Taster und beobachte die LED. Sobald der Taster gedrückt wird, sollte eine LED anfangen zu blinken.

Programm

Wir haben alle Befehle in diesem Programm bereits angesprochen, so dass es keine Schwierigkeit bereiten sollte, jede Programmzeile von Taster_Led.spin zu erklären.

 

Was man noch machen könnte!

Da nach der Schaltskizze bzw. dem Schaltungsaufbau aus Abschnitt 10 zwei Taster und zwei LEDs beschaltet sind, kannst du zum Abschluss dieses Kapitels selbst noch ein paar Übungen machen. Folgende Möglichkeiten bieten sich an:

  1. Jeder Taster schaltet eine ihm zugeordnete LED so lange ein, wie er gedrückt wird.
  2. Jeder Taster schaltet eine ihm zugeordnete LED dauerhaft ein. Wird er ein zweites mal gedrückt, geht auch nur diese wieder aus.
  3. Wird einer der beiden Taster gedrückt schaltet er beide LEDs ein (dauerhaft). Wird derselbe Taster  ein zweites mal gedrückt, gehen beide LEDs wieder aus (schwer).

Kommentar schreiben

Kommentare

  • olaf (Sonntag, 10. Dezember 2017 08:35)

    wow...die mit Abstand beste Site, die ich bisher zu diesem Thema gesehen habe :-))
    Vielen Dank dafür. Hilft super beim Erklären!!

  • David Eisenblätter (Sonntag, 11. Februar 2018 13:38)

    Sehr schön erklärt, und zufällig heute, wo ich nochmal nach einer detailierten Gedankenstütze diesbezüglich gesucht habe!

    Vielen vielen Dank!

    David.

Bitte geben Sie den Code ein
* Pflichtfelder
Druckversion Druckversion | Sitemap
© Reinhard Rahner - Gettorf