Gast
#7175251
Spielereien mit asm_thumb / Micropython auf dem PI PICO Mit Micropython kann man auf erfrischend einfache Art und Weise mit dem PICO arbeiten: Python ist meist schon installiert, Thonny nachladen, USB-Kabel anstecken und ab geht die Post. Wer schon einmal mit Microcontrollern gearbeitet hat, der vermisst vielleicht die Möglichkeit des direkten Zugriffs auf die Register. Auch das ist mit Micropyhton kein Problem, über asm_thumb kann man Bekanntschaft mit den Registerm schließen. Der asm-Code wird ohne große Verrenkungen mit Hilfe eines Decorators in den Programmcode eingebunden. Das ist ideal für diejenigen, die dem PICO das entlocken wollen, was Micropython verbirgz. Ich habe beispielhaft mit dem direkter Zugriff auf die GPIOs (ohne machine.Pin) und mit der PWM-Konfiguration auf Register-Ebeme experimentiert. Was kann man damit erreichen ? Man kann verstehen, was "unter der Haube" abläuft - oder, warum es nicht abläuft. Zum Beispiel, warum ein geradzahliger PWM-Pin und der folgende ungeradzahlige PWM-Pin nicht auf unterschiedliche Frequenzen konfiguriert werden können (was im Manual nicht erwähnt wird). Und Micropython unterstützt auch nicht alle Features des Controllers. So kennt etwa machine.PWM keine Optionen, um den phase-correct Modus zu aktivieren oder um Pins zu invertieren. Auch die Performance kann (u.U) deutlich besser werden. Beispiel: Um alle 29 Pins des PICO (nacheinander) zu schalten, benötigt Micropython ca. 1500us. Der Assembler Code schafft das in ca 90us (wenn alle Pins innerhalb einer asm-Schleife geschaltete werden), Wird nur an einem einzelnen Pin gewackelt, entschwinden die Vorteile des asm-Codes, denn der wird über eine Python Funktiom aufgerufen - und die braucht halt ihre Zeit. Für diejenigen, die mit Micropython auf dem PICO arbeiten, aber etwas über den Tellerrand von Micropython hinausschauen wollen, habe ich einige Beispiele als Einstiegshilfe in der Anlage zusammengestellt. Michael S.