TestLab 4.2

Elektronik-Labor  Projekte  Mikrocontroller  TLScript  






Download (18.5.26): TestLab42.zip

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.







Elektronik-Labor  Projekte  Mikrocontroller  TLScript