Es
gibt viele Gründe, TLScript um weitere Befehle zu erweitern.
Andererseits sind für die einfach gehaltene Oberfläche möglichst wenige
Befehle besser. Es wäre also ungünstig, die direkt sichtbaren Befehle
zu vermehren. Der Wunsch nach Erweiterungen kam zuerst auf, als es im
TestLab die Möglichkeit gab, die PWM-Frequenz und die Spannungsreferenz
umzuschalten, dies aber in TLScript nicht möglich war. Die Lösung liegt
im Befehl Call L. Normalerweise steht da z.B. Call L2, wobei ein
TLScript-Unterprogramm an der Adresse L2 aufgerufen wird. Wenn man aber
ein Label ab L240 (0xF0) angibt, werden interne Funktionen ausgeführt,
die als Spracherweiterungen dienen.
Mit Call L240 kann man nun die PWM-Frequenz ändern, nachdem in A ein
passender Parameter geschrieben wurde. Welche Werte in A man genau
übertragen kann, hängt vom jeweiligen Controller ab.
Rem PWMfreq
0x1080 PWM1 = 128
0x0100 A = 0
0x21F0 Call L240:
0x0200 B = 0
L1:
0x19FA Delay ms = 250
0x4100 Input A
0x2204 If A=B Jmp L1:
0x3400 B = A
0x21F0 Call L240:
Rem PWMfreq
0x2004 Jmp L1:
In gleicher Weise kann man mit Call 241 unterschiedliche
Spannungsreferenzen einstellen, die sich ebenfalls stark unterscheiden.
Nur der Pico kennt eine solche Einstellung nicht, weil bei ihm die
AD-Referenz immer 3,3 V ist. Allerdings kennt der 3,3V-Regler im Pico
zwei Modi, die unterschiedliche Welligkeit der Referenz bedingen. Mit
Call 241 schaltet man hier in den saubereren Modus. Insgesamt gibt es
sieben solche Unterprogramme, die bei allen vier Controllern im Wesentlichen die gleichen
Funktionen haben.
Call L240: PWM-Frequenz
Call L241: ADC-Referenz, 3.3 V beim Pico
Call L242: Schnelle Serienmessung
Call L243: Schnelle Zweikanal-Messung mit Ausgabe
Call L244: Übertragung der Sinustabelle
Call L245: DDS und Scope
Call L246: Sweep-Generator mit Scope
Call L247 bis L255: Noch frei
Der Pico besitzt als einziger keine Umschaltung der AD-Referenz. Call
L241 wird hier verwendet, um den 3,3V- Regler in seinen Modus mit
glatterer Betriebsspannung zu schalten. Im Help-Fenster findet man zum
jeweils eingestellten Controller neben dem Anschlussplan auch die
Erweiterungsfunktionen und die erlaubten Parameter. Die noch freien
Adressen dienen für eigene Erweiterungen der Firmware. Wer bestimmte
Zusatzfunktionen für sein Projekt braucht, kann sie sich leicht
einbauen. Davon wurde auch bereits reger Gebrauch gemacht.
Ein Beispiel für die Verwendung mehrerer Extensions ist der
DDS-Generator mit gleichzeitig laufendem schnellen Oszilloskop, das mit
CALL 254 gestartet wird. Zusätzlich wird am Anfang die PWM-Frequenz des
Pico auf 250 kHz erhöht und außerdem mit Call 244 die Sinusfunktion
geladen. Mit A = 2 wird im laufenden Programm festgelegt, dass pro Durchlauf zwei ganze
Schwingungen erzeugt werden. Die Ausgangsfrequenz ist 1,6 kHz. Man muss
das Ausgangssignal von PWM1 glätten und anAD0 legen. Die Anwendung
zeigt, dass man mit Extensions höhere Frequenzen erreichet als mit
klassischen TLScript-Programmen.
Rem DDS245 Pico
0x010A A = 10
0x21F0 Call L240:
Rem 250 kHz
0x21F4 Call L244:
Rem Sinus
0x0102 A = 2
Rem 1,6 kHz
L1:
0x1A01 Delay s = 1
0x21F5 Call L245:
REM DDS
0x2004 Jmp L1:
Die Übersicht der verwendbaren Extensions findet man jederzeit in der
Help-Funktion (Siehe Bild ganz oben) zum jeweils aktiven Controller.
Die Exstensions Call L247 bis L255 sind meist noch frei. Damit hat
jeder die Möglichkeit, eigene Erweiterungen einzufügen, ohne dass die
IDE verändert werden muss. In jeder der vier Firmware-Versionen für die
einzelnen Controller findet man die Funktion void extensions(void), die
man passend erweitern kann.
Beim CH32V003 wurden zahlreiche weitere Erweiterungsfunktionen
hinzugefügt. Man kann dort Rechtecksignale bis 24 MHz erzeugen, ein
Oszilloskop mit einer Abtastrate von 500 kHz aufrufen und vieles mehr.
Um die vielen Funktionen unterzubringen wurde eine neue Gruppe unter
Call 250 gebildet, in der man mit B bis zu 255 neue Extensions
unterbringen könnte. Als einziger der Controller erhält der
CH32V003-Controller die Möglichkeit, einzelne Ports als
Open-Drain-Ausgänge zu nutzen. Auch gibt es hier mehrere weitere
Messgeräte.