Basiskurs 3 – Abschnitt 2 - Parallax Serial Terminal
Mit Hilfe des Terminals lassen sich Reaktionen von Sensoren leicht überprüfen; damit hat man ein schnelles und einfach einsetzbares Instrument, um bei einer Schaltungsentwicklung Fehler zügig erkennen und eingrenzen zu können.
In Übung 6 werden die Tasterzustände von drei Tastern (verbunden mit P24, P25 und P26) binär kodiert dargestellt. Ein geschlossener (gedrückter) Taster wird mit einer 1, ein offener (nicht gedrückter) mit 0 angezeigt.
I/O Pinzustände im Terminalfenster darstellen | |
Material |
|
Aufgaben |
|
Schaltungsaufbau
Das Programm TasterDisplay.spin
Darstellung im Terminalfenster
Timing und Kommunikation der Kerne (COGS)
In Übung 6 überwacht ein Kern die Taster und überträgt Informationen an das pst-Objekt über Methodenaufrufe. Die Methode Start des Parallax Serial Terminal (PST) startet einen seriellen Treiber in einem anderen Kern. Dieser überträgt die Informationen an das PST, sobald er sie von dem Kern, der die Taster überwacht, bekommt.
Das PST ist auf 115.200 Bits pro Sekunde (bps) eingestellt oder anders gerechnet: es wird ein Bit in 1/115.200 s oder ungefähr 8,68 µs übertragen. Jedes übertragene Zeichen besteht aus je einem Start- und Stopbit und 8 Datenbits. 10 Bits oder ein Zeichen werden in ca. 86,8 µs übertragen. Das vorliegende Anwendungsprogramm überträgt mit jedem Durchlauf der Endlosschleife REPEAT drei Zeichen. Für die komplette Übertragung der drei Zeichen braucht es:
Der reziproke Zeitwert gibt an, wieviele Nachrichten aus drei Zeichen pro Sekunde übertragen werden können. Für diese Übung ergibt das:
Würde das SPIN-Objekt die Nachrichten mit einer Frequenz > 3840 Hz übertragen, könnte das zu einem Puffer-Überlauf beim PST und damit zu Datenverlusten führen.
Da es auch noch geringe Verzögerungszeiten beim Datenaustausch zwischen den Kernen gibt, sollte die maximale Frequenz etwas niedriger als die errechnete sein. 3500 Hz sollten es maximal sein.
In dieser Übung wird allerdings nur der Tasterzustand abgefragt. Die Frequenz der Aufeinanderfolge von Taster schließen und Taster öffnen lässt sich auch mit einer Verzögerungszeit pro Schleifendurchlauf von 0,1 s = 100 ms noch ohne erkennbare Einbußen durchführen. Deutliche Einschränkungen erkennt man bei einer Wartezeit-Einstellung von
von 0,2 s. Schnell hintereinander ausgeführte Änderungen des Tasterzustandes werden nicht mehr sicher erkannt.
Das nachfolgende Programm LEDansteuerungPST.spin zeigt einen Weg auf, wie man Ausgangszustände von I/O Pins über das Terminalfenster eingeben und die Reaktion darauf an LEDs ablesen kann.
LED Ansteuerung über Terminaleingabe | |
Material |
|
Aufgaben |
|
Das Programm LEDterminalsteuerung.spin
Ausgabe im PST
Übung 8 – Der DAT-Block
DAT-Blöcke werden in SPIN zur Ablage umfangreicher Daten und Zeichen sowie Texten und Nachrichten eingesetzt. Er kann aber auch Assembler-Code enthalten, der an einen Kern (COG) übergeben werden soll.
Übung 8 - Der DAT-Block | |
Material |
|
Aufgaben |
|
Das Programm Testnachrichten.spin
Die Darstellung im Terminalfenster
Wie arbeitet das Programm Testnachrichten.spin?
Ergänzt man das vorliegende Programm mit zwei zusätzlichen Programmzeilen (Zeilen 26 und 27), wird im Terminalfenster die Speicherstelle angezeigt.
Die Methode TestDatMessages startet im Objekt Parallax Serial Terminal die Methode Start mit dem Wert 115_200, wartet zwei Sekunden und löscht dann das Terminalfenster.
In der äußeren Wiederhol-Schleife REPEAT wird der Inhalt der Speicheradresse @MyString und von counter im Terminalfenster angezeigt. Counter wird um 1 erhöht. Es folgen die Darstellungen der Speicherinhalte an den Stellen @MyOtherString und @BlankLine.
Wo der Text des DAT-Blocks im Speicher abgelegt ist, lässt sich über das Objekt-Info-Fenster (F8) schnell herausfinden.
In der inneren indexierten Wiederhol-Schleife REPEAT wird der Inhalt der Werteliste ValueList im Terminalfenster angezeigt. Auf die kommagetrennten Werte der Liste wird über einen Array-Aufruf zugegriffen. Zuerst wird der Speicherinhalt von @ValTxt im Terminalfenster angezeigt, gefolgt vom Wert in der Speicheradresse [@ValueList][index]. Die Zählung startet mit dem Indexwert 0.
Übung 9 – Die Objekte FloatString und FloatMath
In dieser Übung werden einige Objekte aus der Propeller Bibliothek vorgestellt, mit der sich reelle Zahlen verarbeiten lassen. RechnenMitReellenZahlen demonstriert den Umgang mit reellen Zahlen am Beispiel einiger Grundrechenoperationen. Das Objekt FloatMath enthält einige Methoden, von denen ein paar vorgestellt werden. Zur Darstellung der Ergebnisse im Terminalfenster wird das Objekt FloatString eingesetzt.
Das Programm RechnenMitReellenZahlen.spin
Darstellung der Ergebnisse im Terminalfenster
Sämtliche Methoden des Objektes FloatMath lassen sich über das Fenster des Object Inspectors oben links in der Terminaloberfläche aufrufen.
Ein Doppelklick auf den Ordner FloatMath lädt das Objekt in den Editor. Aktiviert man anschließend den Button Documentation, erscheinen alle Methoden des Objektes im Terminalfenster zusammen mit den notwendigen Parameterangaben und Informationen zu den Rückgabewerten.
Übung 10 – Objekte und Adressen von Variablen
Variable haben im RAM eine Adresse. Das in dieser Übung genutzte Objekt
ist ein Beispielobjekt, das sich Werte von Variablen des Elternobjektes
holt (siehe Abb. 9 und 10). Beachte, dass der Methodenaufruf AddrBlnk.Start Parameter für zwei Adress-Werte enthält:
Der Methode Start werden die Werte, die an der Speicheradresse
abgelegt sind, übergeben.
Das sind zum Programmstart: 17 und 10_000_000 (Zeile 27 und 28). Die Adressen dieser beiden Speicher müssen hinter dem vom Programm belegten Speicher liegen. Mit F8 lässt sich das Object Info-Fenster öffnen und der Programmspeicher einsehen. Er ist bis zur Speicherstelle 059716 belegt.
Die Speicheradresse @pin der Variablen pin ist mit 059816, die von @rateDelay mit 059C16 angegeben. Leider lassen sich die aktuellen Einstellungen während der Laufzeit des Programms nicht über das Object Info Fenster darstellen, sonst hätten dort folgende Eintragungen gestanden:
... die ersten vier Byte für den Wert 17 und die sich rechts anschließenden vier Byte für den Wert 10.000.000 (beide in hexadezimaler Schreibweise).
Wie arbeiten die Programme?
Das Elternobjekt hat der Methode Start des Objektes AddressBlinker die Speicher-Adresse @pin (0598) , die eine I/O Pinzahl (17) und @rateDelay (059C), die eine Blinkrate (10000000) enthält, übergeben. Die Methode Start startet einen neuen Kern und übergibt diese Parameter der Methode Blink
Zum Programmstart blinkt die LED an P17.
Mit jedem Durchlauf der REPEAT-Schleife in AddressBlinkerControl.spin (Eltern-Objekt) werden die Pinzahl und die Clockticks abgefragt. Erfolgt keine Eingabe, ändert sich am aktuellen Zustand nichts. Erfolgt die Eingabe
abgelegt.
Damit ändert sich der Inhalt der beiden Speicherstellen pinAddress und rateAddress, die von der Methode Blink ständig abgefragt werden. Die Folge: die Blinkfrequenz und die angesprochene LED ändern sich je nach Eingabewert sofort.