Ein Blinker an der seriellen Schnittstelle
von Burkhard Kainka
Den ersten eigenen Versuchen an der seriellen Schnittstelle steht nun nichts mehr im Wege. Leider wird die Leitung RTS nicht unterstützt, obwohl sie prinzipiell verwendbar ist. Der Grund für diese Lücke ist wohl darin zu suchen, dass das Betriebssystem RTS teilweise für ein Hardware-Handshake verwendet. Damit ist leider anderen Programmen der ordentliche Zugang verwehrt. Aber - soviel schon an dieser Stelle - es gibt ja auch noch den „unordentlichen" Zugang über POKE-Befehle, der in Kapitel genauer vorgestellt wird. Vorerst bleibt TXD die einzige Ausgangsleitung, mit der man arbeiten kann.

Anschluss einer LED an TXD
Ganzen Artikel lesen...
Das erste kleine Programmbeispiel soll einen LED-Blinker an der Leitung TXD realisieren. Die Schnittstelle muss dazu mit einer beliebigen Baudrate geöffnet werden. Dann erfolgt in einer endlosen Schleife ein Ein- und Ausschalten des Break-Zustands. Außerdem wird noch eine passende Wartezeit eingefügt.
#blink.bas
open "com1:",9600 as #5
while 1
put #5,-3
a=fn wait (0.250)
put #5,-2
a=fn wait (0.250)
wend
end
Das erste Basic-Programm
Wenn man nach eine LED mit Vorwiderstand an der Leitung TXD anschließt, kann dieses kleine Übungsprogramm getestet werden. Was bei der Arbeit mit HotPaw Basic besonders auffällt, ist der leichte Umgang mit kleinen Programmänderungen. Dazu ergreift man den Palm-Stift, wechselt in den Editor und editiert die gewünschten Zeilen.
Man kann z.B. mit unterschiedlichen Wartezeiten experimentieren. Die Funktion fn wait (time) erzeugt eine Wartezeit in Sekunden und liefert -1 zurück, wenn die Wartezeit durch ein Benutzer-Ereignis abgebrochen wurde. Die tatsächliche Auflösung beträgt 20 ms = 0,02 s. Der schnellste Blinker erreicht damit eine Frequenz von 25 Hertz.
Noch interessanter ist es zu untersuchen, wie schnell HotPaw Basic maximal werden kann. Dazu nimmt man die Wartezeiten ganz aus dem Programm und untersucht das Ergebnis mit einem Oszilloskop.
#blink2.bas
open "com1:",9600 as #5
while 1
put #5,-3
put #5,-2
wend
end
Erzeugen möglichst schneller Rechtecksignale

Die Impulsfolge mit Unterbrechungen
Man erkennt Rechteckimpulse mit einer Low-Zeit von nur 0,1 ms aber mit einer High-Zeit von 1 ms. Der Rücksprung in der Programmschleife braucht also die meiste Rechenzeit. Alle 100 ms gibt es zusätzlich eine deutliche Unterbrechung von etwa 5 ms. Diese Ereignisse gehen vermutlich auf den Basic-Interpreter zurück, der hier überprüft, ob eine Anforderung zum Abbruch des Programms vorliegt.
An diesem Programm zeigt sich ein grundsätzliches Problem aller Steuerungen mit Basic. Nach einiger Zeit nämlich stoppt das Programm, weil der Palm in den Schlafmodus geht. Dies geschieht, nachdem der Anwender eine gewisse Zeit lang keine Stifteingaben mehr vorgenommen hat. Die Verzögerung ist zwar einstellbar, aber leider nur bis zu drei Minuten. Dieses Verhalten schont die Batterien und ist für den normalen Gerbrauch sehr sinnvoll, aber leider eine Einschränkung für viele erweiterte Anwendungen. Der Schlafmodus lässt sich prinzipiell durch Aufruf bestimmter Betriebssystems-Routinen unterbinden. Dies gelingt jedoch nur mit einem C-Compiler, nicht aber mit Basic.
Litertur: MSR mit USB und Java

Lernen Sie die ganze Vielfalt vom Franzis Buch- und Softwareverlag kennen