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