Forum: Projekte & Code SBUS FrSky (Futaba) RP2040 PIO


von Joe G. (feinmechaniker) Benutzerseite


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

von Christoph M. (mchris)


Lesenswert?

Danke für's posten.
Meiner Meinung nach wäre ein einfaches Beispiel gut, damit man schnell 
sieht, wie das Modul eingebunden und verwendet wird.

von Jasson J. (jasson)


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.

von Norbert (der_norbert)


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.

von Joe G. (feinmechaniker) Benutzerseite


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

von Jasson J. (jasson)


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.

von Norbert (der_norbert)


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…

von Jack V. (jackv)


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.

von Norbert (der_norbert)


Lesenswert?

Jack V. schrieb:
> Auf Micropython-Ebene lassen sie sich allerdings fast gleich nutzen,

Liegt da (bei ESP) nicht noch ein RTOS dazwischen?
Und wenn man den zweiten Kern benutzen möchte,
dann läuft anstelle dessen alles auf dem ersten Kern im time-slicing?
Vielleicht ist das ja mittlerweile gefixt,
hab' mich lange nicht mehr darum gekümmert.

: Bearbeitet durch User
von Jack V. (jackv)


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.

von Norbert (der_norbert)


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.

von Jack V. (jackv)


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.

von Norbert (der_norbert)


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«

: Bearbeitet durch User
von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Christoph M. schrieb:
> Meiner Meinung nach wäre ein einfaches Beispiel gut, damit man schnell
> sieht, wie das Modul eingebunden und verwendet wird.

Bitteschön
https://github.com/Joe-Grabow/USV/blob/main/01%20Hardware/09%20RC%20Control/02%20Software/00%20doc/UART_RX_Dokumentation.pdf

von Christoph M. (mchris)


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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.