Elektronik-Labor Projekte Mikrocontroller PicoBasic

Der PicoBasic-Simulator
ist in die ursprüngliche PicoBasic3.0-Oberfläche ohne das TestLab integriert.
Das ist sinnvoll, weil das TestLab nur mit der Hardware verwendet werden kann.
Hier geht es um die reine Programmiersprache. Auf der Bedienungsoberfläche von PicoBasic3.0
gibt es die neue Schaltfläche „simulate“. Klickt man darauf, öffnet sich das
Simulatorfenster und das gerade geladene Programm läuft virtuell am Bildschirm
ab. Ein Mikrocontroller muss nicht angeschlossen sein. Der Simulator ist
nützlich bei der Programmentwicklung und beim Erlernen von PicoBasic.
Schauen wir uns als
erstes Beispiel das Programm 5_Blink1.pbas
an. Das Programm wird mit
„Open“ ins TestLab geladen, mit „simulate“ in den Simulator übertragen und dort
mit „Start“ gestartet. Mit „Step“ kann das Programm schrittweise durchgegangen
werden. Weil hier keine Eingaben durch den User vorgesehen sind, sind alle Pins
mit Pdir = 255 als Ausgänge geschaltet. Die Pegel der Pins werden sinnfällig
durch Farben angezeigt: Grau = low, rot = high. Die Simulation läuft nicht in
Echtzeit ab, sondern langsamer.
Laden wir als
nächstes das Programm 5_Pin.pbas.

Hier sind mit Pdir =
240 = binär 1111 0000 die unteren vier
Pins als Eingänge geschaltet. Man kann hier über die Checkboxen Eingangspegel
setzen, was durch eine weiße bzw. hellrote Farbe angezeigt wird. Diese Pegel
werden eingelesen und dann analog auf den oberen vier Pins ausgegeben. Dass die
oberen vier Pins Ausgänge sind, sieht man an der grauen bzw. roten Farbe, aber
auch am „X“ neben den Checkboxen. Man kann hier zwar auch Häkchen setzen, das hat
aber keine Wirkung. An der Hardware sollte man Ausgänge auch nicht von außen
auf einen anderen Pegel ziehen, weil dies den Mikrokontroller beschädigen kann.
Über den Pins werden
zusätzliche Werte angezeigt:
Mit Input = 1 (also binär
0000 0001) ist der Wert der Inputs gemeint.
Mit Output = 16
(also binär 0001 0000) ist der Wert der Outputs gemeint.
Mit Port = 17 (also
binär 0001 0001) ist der Wert des gesamten Ports gemeint.
Analoge Inputs und Outputs:
Analoge Inputs kann
man mit den drei Schiebereglern nachahmen. Der Wertebereich bewegt sich
zwischen 0 und 255, was an der Hardware dem Betriebsspannungsbereich
entspricht. An den Balkenanzeigen sieht man analoge Ausgangsspannungen,
ebenfalls im Bereich der Betriebsspannung. Im Beispiel wird AD0 eingelesen und
der Wert an PWM1 ausgegeben. Der Digitalwert ist A = 190. Die Balkenanzeige
bewegt sich sprunghaft, weil der Eingang mit niederer Frequenz abgetastet wird.

Datenspeicher [B+]
Mit [B+] = A steht ein Array mit 256
Elementen zur Verfügung. Die Indizierung der Elemente erfolgt mit der Variablen
B. Beispiel B = 5, der Wert
von A wird in das Element [5] geschrieben. Mit jedem Aufruf von
[B+] = A wird B automatisch um 1
erhöht. Das ist nützlich, wenn Messreihen der Reihe nach abgespeichert werden
sollen. Man startet also mit einem Startindex (z.B. B = 0) und füllt dann den Speicher mit B[0], B[1], B[2] … B[n]. Mit A = [B+] werden die gespeicherten Werte
nach A geschrieben, wobei auch hier B mit jedem Aufruf um 1 erhöht wird. Um die
gespeicherte Messreihe abzurufen, startet man also mit dem gleichen Startindex.

Kommunikation zwischen dem Mikrocontroller und dem PC
Mit Print A kann man vom Mikrokontroller
Werte an den PC schicken. Diese werden dann in dem untersten langen Fenster
angezeigt (im Beispiel 142). Das funktioniert auch in der Simulation. Wenn ein
Mikrokontroller angeschlossen ist, sollte man den Simulator stoppen, damit es
nicht zu Zugriffskonflikten kommt.

Mit Input A kann man Werte vom PC an den
Mikrokontroller senden. Den Wert schreibt man in das kleine Fenster unter
„pico“ (Absenden mit RETURN). Sobald man auf die Bedienungsoberfläche klickt,
wird das Simulatorfenster in den Hintergrund gestellt, die Simulation läuft
aber weiter. Das ist normalerweise sinnvoll, in dieser Anwendung aber störend.
Im Beispiel wurde der Wert 17 gesendet und vom PC wieder zurückgesendet.

Pullup- / Pulldown-Widerstände
Der Simulator
verwendet Pullup und Pulldown exakt wie der Rpi Pico. Die verschiedenen anderen
Mikrocontroller, die mit PicoBasic programmiert werden können, unterscheiden sich
in den Eigenschaften ihrer Ports, sodass Pullup und Pulldown nicht dieselbe
Wirkung haben. Man kann jedoch Programme für den Rpi Poco entwickeln, simulieren
und dann vielfach auch in den Arduino Nano oder den Tiny3216 laden, solange
Pullup und Pulldon nicht verwendet werden.

Der Simulator ist so
programmiert, dass mit Pullup = 255
alle Pullup-Widerstände „virtuell“ eingeschaltet werden. Bei den auf Eingang
programmierten Pins sieht man das daran, dass die Pins hellrot aufleuchten,
obwohl keine Häkchen gesetzt sind. Bei den auf Ausgang programmierten Pins
ändert sich nichts, weil die Ausgangstreiber den Pegel bestimmen. Man kann aber Eingänge von außen auf LOW schalten.
Mit Pulldown = 255 (oder Pullup = 0) werden alle
Pullup-Widerstände ausgeschaltet. Ob Pulldown-Widerstände eingeschaltet sind,
sieht man nicht, weil der Default-Wert „low“ ist. Offene Eingänge werden in der
Simulation ebenfalls immer „low“ angezeigt, während sie in der Realität zufällige Zustände
einnehmen können.
4.9.24: PicoBasic
Sprachumfang