
RPi Pico - Need for Speed
von Martin Müller
Elektronik-Labor
Projekte
Mikrocontroller
Raspberry
Es gibt mehrere Möglichkeiten den RPi Pico zu programmieren. Für den
Einstieg erscheint die Programmierung mit MicroPython in der Thonny-IDE
oder die Arduino-IDE mit einer entsprechenden Erweiterung am besten
geeignet. Man kann schauen, wie schnell der RPi Pico arbeitet, wenn er
mit verschiedenen IDEs programmiert wurde. Dazu wird in einer Endlossschleife der Pin 1 des RPi Pico ein- und ausgeschaltet.
MicroPython
MicroPython in der Thonny-IDE schafft dies mit einer Frequenz von ca.
63 kHz. Der RPi Pico läuft selbst mit einer Taktfrequenz von 125 MHz.
Die behäbigen 63 kHz sind der Tatsache geschuldet, dass das
Pythonscript immer wieder Zeile für Zeile so übersetzt wird, dass der
Mikrocontroller damit etwas anfangen kann.
Betrachtet man sich den Spannungsverlauf an Pin 1, so sieht man, dass
jede zehnte Schwingung etwas länger dauert als die übrigen (s. Bild
oben). Offensichtlich läuft hier noch der eine oder andere Prozess
zusätzlich im Hintergrund ab.
Arduino-IDE
Verwendet man die Arduino-IDE, so empfiehlt es sich die von Earle F.
Philhower III. erstellte Boarderweiterung zu verwenden. Sie kann leicht
als zusätzliche Boardverwalter-URL hinzugefügt werden. Eine
detaillierte Beschreibung findet sich beispielweise hier:
https://arduino-pico.readthedocs.io/_/downloads/en/latest/pdf/
Der Quellcode aus der Arduino-IDE wird vor der Übertragung auf den RPi
Pico in einen maschinenlesbaren Code umgewandelt (compiliert), was der
Geschwindigkeit beim Ausführen des Programms zugute kommt. Das
Umschalten des Pins erfolgt mit einer Frequenz von etwa 594 kHz. Das
ist gut 9 mal schneller als mit MicroPython. Der Spannungsverlauf an
Pin 1 zeigt, dass das Umschalten jede Millisekunde für 10 Mikrosekunden
unterbrochen wird, um auch hier Zeit zu geben, Prozesse im Hintergrund
ablaufen zu lassen.
Die Arduino-IDE lässt sich auch in „reinem C“ programmieren. Dazu
ersetzt man „void setup()“ und „void loop()“ durch „int main()“. Mit
der oben genannten Boarderweiterung stehen tatsächlich alle Funktionen
der RPi Pico-SDK zur Verfügung. Anders als im Arduino-Sketch wird jetzt
nur das compiliert und zum Mikrocontroller übertragen, was man selber
in den Quellcode geschrieben hat. An Pin 1 wird eine Frequenz von 31,25
MHz gemessen. Das ist etwa 52 mal schneller als der ursprüngliche
Arduino-Sketch, und knapp 500 mal schneller als MicroPython.
Um wirklich die volle Kontrolle über den RPi Pico zu erhalten, wird man
aktuell nicht umhin kommen das RPi Pico-SDK samt zugehöriger Toolchain
zu installieren. Entsprechende Hinweise findet man in der Dokumentation
der Raspberry Pi Foundation.
MicroPython in der Thonny-IDE unterstützt die PIO-Funktionen
(Programmable Input Output) des RPi Pico. Damit kann man sehr schnell
beliebige Pins setzen und abfragen. Allerdings läuft das eigentliche
Pythonscript, wie schon beschrieben, recht langsam.
Programmiert man die Arduino-IDE mit der genannten Boarderweiterung in
„reinem C“, gestattet sie vollen Zugriff auf die Funktionen des RPi
Pico-SDK. Sie ist somit sehr schnell, unterstützt jedoch nicht die
PIO-Funktionen.
Elektronik-Labor
Projekte
Mikrocontroller
Raspberry