Raspberry Pi Pico und Portausgaben
Elektronik-Labor
Projekte
Mikrocontroller
Raspberry
Der Raspberry Pi Pico ist ein interessanter Mikrocontroller, der
sehr bequem mit Thonny in MicroPython programmiert werden kann. Die
vollständige Dokumentation mit allen Handbüchern findet man hier: https://www.raspberrypi.org/documentation/rp2040/getting-started/ Ein
Blick auf die Anschlüsse lässt erkennen, dass hier unzählige
Anwendungen warten.
Auf der Platine befindet sich ein Spannungsregler für 3,3 V. Bei der
Überprüfung der Betriebsspannung ist eine starke Welligkeit
aufgefallen. Man erkennt ein Sägezahnsignal mit rund 30 mVss und 50
kHz. Das lässt Ärger erwarten, wenn man genaue Messungen mit dem
AD-Wandler durchführen will.
Die Hintergründe werden im Raspberry Pi Pico Datasheet erläutert.
Ein Blick in den Schaltplan zeigt den Schaltregler. Der Eingang PS
ist kommentiert. Per Default liegt hier ein Nullpegel über 100 k. Das
schaltet den PFM-Modus für beste Effektivität ein. Es gibt aber
auch den PWM-Modus, der für weniger Ripple sorgen soll. PS
liegt an GPIO23 des Controllers, der nicht an die Kontaktreihen der
Platine geführt ist.
Das erste kleine Programm soll den Pin23 hochschalten, um den
Schaltregler in den PWM-Modus zu versetzen. Außerdem enthält es einen
Geschwindigkeitstest für die schnellsten möglichen Portausgaben.
Vorlagen für Portzugriffe findet man im
raspberry-pi-pico-python-sdk.pdf.
Zum Vergleich hat mir Rainer sein Programm in CirquitPython geschickt:
#CircuitPython
#Set Port GPIO23 RPI Pico True
import board
from microcontroller import pin
from digitalio import DigitalInOut, Direction, Pull
# see RPI-PICO-R3_PUBLIC-SCHEMANTIC
#
# PS=0: PFM mode (default, best efficiency)
# PS=1: PWM mode (improved ripple but much worse efficiency at light loads)
ps = DigitalInOut(pin.GPIO23)
ps.direction=Direction.OUTPUT
ps.value=True
Auf der Betriebsspannung sieht man jetzt nur noch ein PWM-Signal mit 20 mVss und 1 MHz. Das dürfte weniger Probleme bereiten.
Am Port 0 sieht man die schnellsten mit einer Schleife erzeugbaren
Pegelwechsel. Das Rechtecksignal hat eine Frequenz von 63,5 kHz und
zeigt ein Zittern von 2 µs. Ich will ja nicht meckern, aber ein Tiny13
kann das besser. Das Problem tritt bei allen 32-Bit-Controllern auf.
Für wirkliche Echtzeitaufgaben muss man andere Wege gehen.
Das Spektrum des Ausgangssignals bestätigt die nicht ganz saubere Ausgabe eines Rechtecksignals.
Elektronik-Labor
Projekte
Mikrocontroller
Raspberry