Die neue
Befehlsanordnung von Michael Moske
hat mich überzeugt, weil ich jetzt tatsächlich die gerade benötigten
Befehle schneller finde. Ich habe diese Verbesserung deshalb mit ins
TestLab 4.2 aufgenommen. Weitere Änderungen betreffen die Hilfe-Seiten
für die einzelnen Controller. Sie wurden auf die neue Schreibweise mit
dem Call-Befehl umgeschrieben. Und ein weiterer Fehler wurde
korrigiert. Im TestLab-Schieberegler für PWM2 wurde die Beschriftung
bei neuen Ausgaben geändert.
Neu dabei ist diesmal eine TestLab-Version, die automatisch alte
pbas-Programme in tlc-Scripts umwandet und sie schon beim Laden mit der
Dateiendung .tls wieder speichert. Viele interessante Programme wurden
im Elektronik-Labor nur als Text vorgestellt. Man kann sie in einen
Texteditor kopieren und dann als .pbas speichern. Dann werden sie
einmal mit TestLab42pbas2tls.exe geladen und sind ab dann als
TestLab-Scripts zugänglich.
if length(Zeile) > 1 then begin
// Zeile
:= StringReplace(Zeile, 'Goto', 'Jmp', [rfReplaceAll, rfIgnoreCase]);
// Zeile
:= StringReplace(Zeile, 'Gosub', 'Call', [rfReplaceAll, rfIgnoreCase]);
// Zeile
:= StringReplace(Zeile, 'Return', 'Ret', [rfReplaceAll, rfIgnoreCase]);
SelectedIndex := ListBox1.ItemIndex;
ListBox1.Items.Insert(SelectedIndex, Zeile);
end
Der Auszug aus dem FreePascal-Quelltext zeigt, welche PicoBasic-Schlüsselworte ersetzt werden. Aus Goto wird Jmp usw. Diese
Zeilen sind in Quelltext auskommentiert, wurden aber für die Version
TestLab42pbas2tls.exe aktiviert.
Aktualisierung
Bei der Umstellung von PicoBasic auf TLScript hatte ich in allen
Programmen Goto durch Jmp, Gosub durch Call und Return durch Ret
ersetzt. Aber eine Sache hatte ich übersehen: damals gab es eine andere
Schreibweise für Hexzahlen und Binärzahlen. Anlässlich der
Überarbeitung meines ersten Buchs zum TestLab musste ich alle Programme
testen, und dabei sind einige Programme aufgefallen, bei denen das eine
Rolle spielte. Sie wurden jetzt aktualisiert und verwenden die neue
Schreibweisen 0xFF und 0B11111111.
Auf ein anderes Problem hat mich Michael Moske aufmerksam gemacht: Wenn
beim CH32V003 in einem Programm sowohl Delay ms als auch Delay µs
verwendet wird, bleibt es hängen. Weil ich den Systick für die
Millisekunden verwende und Delay_Us() ebenfalls darauf zugreift,
kommt es zu einem Konflikt. Die Mikrosekunden mussten also anders
gelöst werden, und zwar mit einer Zählschleife.
void k24(){delayus+=2; if(delayus>dat){delayus=0; adr++; }} // Delay us
Hier wird zugleich ein anderes Problem gelöst. Wenn man in einem
Programm eine Wartezeit von ca. 100 µs bis 255 µs verwendet hat, konnte
es Probleme beim Laden eines neuen Programms geben, weil in dieser Zeit
mehrere seriell gesendete Bytes verschluckt werden konnten. Michael
hatte zwar den Trick gefunden, dass man zuerst Stop sendet und dann
erst das neue Programm hochlädt. Aber das ist jetzt nicht mehr nötig,
weil nun auch die Mikrosekunden-Wartezeiten auf mehrere Durchläufe der
Interpreterschleife aufgeteilt werden. Erst wenn die Wartezeit
abgelaufen ist, geht es mit adr++ weiter. Zum Test habe ich das
erweiterte Speed-Progrmm mit eingeschaltetem Quarz und meinen
Freqeunzzähler verwendet. Die Mikrosekunden-Wartezeit ist jetzt in
Stufen von 2 µs gerastert.
Rem Speed CH32
0x0212 B = 18
0x21FA Call L250:
0x09FF Pdir = 255
L1:
0x0800 Pout = 0
0x18FA Delay µs = 250
0x08FF Pout = 255
0x18FA Delay µs = 250
0x2003 Jmp L1:
Weitere Versuche haben gezeigt, dass ein gestörtes Upload bei
Verwendung der µs-Wartezeit auch beim Arduino Nano vorkommen konnte.
Auch hier wurde deshalb diese Zählschleife eingebaut, die nun in Stufen von 5 µs gerastert ist. Beim Pico gab es
das Problem nicht, vermutlich weil die USB-Funktionen einen Puffer
verwenden. Und
auch der Tiny3216 braucht nicht verändert zu werden.
Mit diesen letzten Änderungen wird das TestLab 4.2 nun zur aktuellen Version. Ab jetzt ist auch ein readme.txt dabei:
Kurzanleitung
TestLab42.exe
kann ohne einen angeschlossenen Controller gestartet werden, um Beispielprogramme
aus den Unterverzeichnissen zu laden, anzusehen
und zu verändern, oder um eigene TLScript-Programme zu schreiben.
Für den Betrieb
mit einem RPi Pico muss zuerst die Firmware
TLScriptPico42.ino.uf2 aus dem Verzeichnis Firmware\TLScriptPico
geladen werden. Im TLScript-Fenster muss dann
der Pico und seine Schnittstelle (z.B. COM4) eingestellt werden. Es
erscheint
die Meldung „COM open“. Damit ist die
Verbindung hergestellt, und man kann mit Run Programme starten oder im
TestLab-Fender direkte Messungen ausführen.
In gleicher Weise
werden andere Controller mit ihrer speziellen Software im Verzeichnis Firmware
unterstützt.