SBUS FrSky (Futaba) RP2040 PIO

OP Persönliche Seite #7830626
Lesenswert?

Anbei ein SBUS-Dekoder [1] für eine FrSky Fernsteuerung. Der Dekoder läuft in Micropython auf einem RP2040 unter Verwendung der PIO. So bleiben die seriellen Schnittstellen für andere Aufgaben frei. Nutzer einer originalen Futaba Fernsteuerung müssen das SBUS-Signal invertieren, was jedoch im PIO Code relativ einfach umzusetzen ist.

[1] https://github.com/Joe-Grabow/USV/tree/main/01%20Hardware/09%20RC%20Control/02%20Software

#7857845
Lesenswert?

Ich denke, ich werde alt

jetzt bin ich am Zug rum zu nölen á la "Warum machst du das nicht mit nem 8 oder 32 Bit µC, sondern mit einem Applikationsprozessor und einer rescourcenintensiven Sprache wie µPhyton?"

Yada Yada

Doch, ein bisschen ernst meine ich die Frage. Hat das einen tatsächlichen konzeptionellen Grund, oder sind Pi´s / Mini-Pi´s und Phyton einfach deine angestammte Toolchain?

Bei mir sind es mehr µC. Wahrscheinlich würde ich auch mit Kanonen auf Spatzen schießen und ne Bluepill unter Arduino verwenden. Einfach, weil ich die mit dem Framework von RogerClark Melbourne so verwenden kann, dass ich die Ease-Of-Use Vorteile vom Arduino habe und gleichzeitig fit genug mit dem STM32 bin, um für Custom-Kram die Register barematel zu konfigurieren.

#7857861
Lesenswert?

Jasson J. schrieb:

Ich denke, ich werde alt

Keinen Widerspruch (bei deinen Aussagen)!

"Warum machst du das nicht mit nem 8 oder 32 Bit µC, sondern mit einem

Applikationsprozessor

Nu rate mal was ein RP2040 ist.

einer Sprache wie µPhyton?"

Keine Ahnung was ein Phyton sein soll, so etwas gibt es gar nicht. Allerdings nutzen viele MicroPython.

rescourcenintensiven

Er nutzt Hardware, PIO Hardware, da wäre selbst Thumb Assembler nicht schneller.

OP Persönliche Seite #7857879
Lesenswert?

Jasson J. schrieb:

"Warum machst du das nicht mit nem 8 oder 32 Bit µC, sondern mit einem Applikationsprozessor und einer rescourcenintensiven Sprache wie µPhyton?"

Gerne möchte ich auf deine Fragen antworten.

Der RP2040 enthält u.a. einen 32 Bit Prozessor. Das FUTABA-SBUS Signal ist recht exotisch und ich wollte zu Übungszwecken die PIO nutzen. Der RP2040 muß noch etwas mehr erledigen [1] als nur den SBUS zu dekodieren.

[1] https://github.com/Joe-Grabow/USV/tree/main/01%20Hardware/07%20drive

#7858323
Lesenswert?

Ah ok - I see

Es kann auch gut sein, dass ich ESP Derivate nur deshalb (noch) nicht verstärkt einsetzte, weil ich in der Materie nicht warm bin. Schade eigentlich, weil gerade die Dinger mit WLan / BT / BLE einem schöne Dinge ermöglichen. Da hinke ich der Zeit hinterher.

Ich schreib meine Überlegungen im Eröffnungspost gerne dazu - auch weil ich mich "gerne selbst reden höre" (ich finde Hobby hat auch was mit erlaubter Selbstbeweihräucherung zu tun :> ) und weil der Konzeptteil finde ich zum interessanten Teil gehört.

Manchmal stelle ich den auch dem "Seht mal, was ich gebaut habe" Teil nach, weil die es interessiert das ohnehin lesen und die die das Konzept nicht juckt, einfach was süffisantes zu lesen haben und sich den TLDR Teil sparen können.

#7858338
Lesenswert?

Jasson J. schrieb:

Es kann auch gut sein, dass ich ESP Derivate nur deshalb (noch) nicht verstärkt einsetzte, weil ich in der Materie nicht warm bin.

Siehst du, das ist mir nun völlig neu. Und vermutlich auch allen anderen – wirklich allen anderen – welche sich mit den Picos auseinander gesetzt haben.

Die sind also tatsächlich vom ESP abgeleitet. Außer natürlich dass es eine völlig andere Prozessor-Architektur ist. Und eine völlig andere Hardware-Architektur ist. Und die ersten Picos (mehrere Jahre lang) ohne jedwede Funkanbindung hergestellt wurden.

Die Welt hat doch immer noch Überraschungen bereit…

Ich schreib meine Überlegungen im Eröffnungspost gerne dazu -

Ja, das mit dem ›Überlegen‹, so hat jeder sein Kreuz zu tragen…

#7858634
Lesenswert?

Norbert schrieb:

Und die ersten Picos (mehrere Jahre lang) ohne jedwede Funkanbindung hergestellt wurden.

Knapp 1,5 Jahre, nicht mehrere. Allerdings hatte es dann nochmal ziemlich lange gedauert, bis auch Bluetooth nutzbar wurde. Das Schöne an den Pico-Dingern ist, dass halt alles recht offen ist.

Auf Micropython-Ebene lassen sie sich allerdings fast gleich nutzen, bis auf eben die PIO, die hier ja auch zum Einsatz kommen. Ich finde das Projekt schon ziemlich interessant, komme nur leider gerade aus Zeitgründen nicht dazu, an meinen RC-Helikoptern zu basteln. SBUS kommt da auch zum Einsatz, wobei ich protokollmäßig sowieso dank EdgeTX auf einem Multiprotokollmodul-Sender eh ziemlich offen bin.

#7858644
Lesenswert?

Norbert schrieb:

Liegt da (bei ESP) nicht noch ein RTOS dazwischen?

Das mag sein, oder auch nicht – soweit habe ich mich mit den ESPs nicht beschäftigt. Ist aber für die Nutzung von Micropython nicht von Belang. Natürlich gibt’s Unterschiede, deswegen das „fast“ – es ist aber in vielen (einfacheren) Fällen schlicht nicht von Bedeutung. Wie bei Arduino: In der Regel kannst du Arduino-Code für RP2040 auf für ESP32 bauen, und umgekehrt, solange du keine für den jeweiligen Controller spezifischen Sachen nutzt. Bei Micropython musst du’s bei generischen Sachen nicht mal neu kompilieren, allenfalls die Pins anpassen.

#7858655
Lesenswert?

Jack V. schrieb:

Ist aber für die Nutzung von Micropython nicht von Belang.

Also ich find's schon angenehm, wenn ich zwei von zwei Kernen nutzen kann.

In einem gebe ich dir aber Recht, wenn man Micropython auf der Ebene des typischen Arduino Nutzer einsetzt — Google, Copy, Paste, Test, Swear, Ask — dann kann man das wirklich fast vergleichen. ;-)

Dieses typische Verhalten konnte ich erst neulich (vor ein oder zwei Tagen) beobachten. Erst wurde mit Worthülsen geworfen, dann wurde die Erklärung nicht verstanden, dann kam das oben zitierte Eingeständnis.

#7858670
Lesenswert?

Norbert schrieb:

Also ich find's schon angenehm, wenn ich zwei von zwei Kernen nutzen kann.

Beim RP2040 geht das problemlos, soweit ich weiß (ich konnte meine Rechenbedürfnisse bislang mit einem Kern erfüllen), und mit dem ESP hab ich mich, wie gesagt, auch noch nicht weit genug beschäftigt, um da was sagen zu können. Bin halt mit den RP2040 in die 32-Bit-Welt vorgestoßen, und da Mensch Gewohnheitstier ist […]

Norbert schrieb:

In einem gebe ich dir aber Recht, wenn man Micropython auf der Ebene des typischen Arduino Nutzer einsetzt — Google, Copy, Paste […]

Dem Vernehmen nach soll es auch sowohl bei Arduino, als auch bei Micropython User geben, die wissen, wie man das Manual aufruft – und die es auch nutzen können. Ich finde dieses „Der nutzt Arduino|Micropython, der kann nur Copypasta, und doof isser auch!“ ein wenig problematisch.

#7858684
Lesenswert?

Jack V. schrieb:

Beim RP2040 geht das problemlos, soweit ich weiß

Das funktioniert hervorragend, um nicht zu sagen heraus baumelnd. So gut sogar, dass ich mir gelegentlich einen nutzbaren Dritt- oder Viertkern im RP2xxx wünsche. Bei mir verteilt sich der Einsatz von Python, C und Assembler mittlerweile paritätisch. Ich muss allerdings gestehen, dass ich mir einen Präprozessor für Micropython gebaut habe um die unterschiedliche Hardware/Addressen der RP2040 und RP2350 für Libraries zu abstrahieren.

Jack V. schrieb:

Dem Vernehmen nach soll es auch sowohl bei Arduino, als auch bei Micropython User geben, die wissen, wie man das Manual aufruft – und die es auch nutzen können. Ich finde dieses „Der nutzt Arduino|Micropython, der kann nur Copypasta, und doof isser auch!“ ein wenig problematisch.

Grundsätzlich schon. Aber die Restmenge, die laute Restmenge. Da trennt sich eben die Weu vom Spreizen.

PS. Man darf nicht vergessen, dass das Arduino Framework primär für die Menschen gedacht war, welche zum Beispiel auf der Dokumenta fettige Badewannen ausstellen.

»Empowering anyone to innovate«

#7859006
Lesenswert?

Bitteschön
Besten Dank :-)
Vielleicht könnte es nützlich sein, sich an Vorgehen der Arduino-Welt zu orientieren.
Im Arduino Bereich hat es sich als gute Praxis etabliert, die kurzen Code-Beispiele in einem Ordner "examples" zu platzieren. Dann hat man eine standardisierte Struktur und kann die Code-Beispiele als Templates schnell als Startpunkt für das eigene Projekt kopieren.

Beitrag #7859013 wurde von einem Moderator gelöscht.
Beitrag #7859016 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren