Raspberry Pico – REPL nicht verfügbar

Tipp: Eine while Schleife von MicroPython kann aktuell auf dem Pico nicht zuverlässig durch den KeyboardInterrupt (CTRL+C) unterbrochen werden. Dies liegt anscheinend an Schwierigkeiten, die mit der Implementation des USB Protokolls in Verbindung stehen (siehe z.B. hier: https://github.com/hathach/tinyusb/issues/1273).

Mit Thonny oder auch Pymakr kommt man während einer laufenden while Schleife nicht mehr auf die Konsole (REPL).

Ein Ausweg ist die Python Minikonsole:

python -m serial.tools.miniterm --filter direct --eol CRLF --encoding utf-8

Mit Ctrl+D kann nun ein Soft Reboot des Pico ausgeführt werden und danach Tada reagiert der Pico wieder auf den Keyboard Interrupt.

Kann sein, dass man es ein paar mal probieren muss, bevor der Pico auf den Neustart reagiert.

Grundsätzlich sollte man weiterhin auf dem Pico Endlosschleifen vermeiden und für permantes Auslesen von Sensor Werten eine Timer Funktion verwenden:

from machine import Timer
timer = Timer()

def do_something(t):
    pass

def start_timer():
    global timer
    timer = Timer(freq=1, callback=do_something)

def stop_timer():
    global timer
    timer.deinit()

Eine alternative Möglichkeit ist anstatt CTRL-C eine beliebiges anderes Zeichen als KeyboardInterrupt zu definieren:

# definiere Keyboardinterrupt: "q"

def start_timer_loop():
    micropython.kbd_intr(ord('q'))
    while True:
        do_something(None)
        utime.sleep(1)

Interessanterweise funktioniert dann der Ausweg über die Python Minikonsole nach dem Softreboot nicht mehr.

Diese Seite verwendet Cookies, um die Nutzerfreundlichkeit zu verbessern. Mit der weiteren Verwendung stimmen Sie dem zu.

Datenschutzerklärung