So, gestetn wieder etwas an der Software arbeiten können. Die Firmware des STM32 habe ich jetzt im Großen und Ganzen
fertig, man kann den seriell mit Kommandos/Abfragen traktieren, und er generiert im Interrupt schön die 8 PPM-Pulse für
die Ausgangskanäle. Mangels (brauchbarer) Hardware-PWM muss ich das über einen Timer lösen, der pro Schritt Ausgabe-
auflösung einmal aufgerufen wird. 1.5 ms soll der Puls bei Neutralstellung sein, 1...2 ms ist die Servo-Range für die
jeweiligen Vollausschläge. Wenn ich jetzt 100 Schritte (0...100 %) in jede Richtung haben will, dann brauche ich eine
zeitliche Auflösung von 500 us / 100 = 5 us. Also den Interrupt 200000-mal pro Sekunde aufrufen. Bei 48 MHz CPU-Takt
habe ich dann 200 CPU-Takte zur Verfügung. Natürlich abzüglich Switching-Overhead; und das Hauptprogramm soll
ja irgendwie auch noch rechnen können. Wurde also eng, und ich hätte eigentlich gerne mehr als 100 Schritte gehabt.
Na gut, dafür macht der STM auch nichts anderes, als die Steuerbefehle entgegenzunehmen und in PPM-Signale umzu-
setzen. Failsafe ist noch drinnen, wenn länger als 2 s keine gültigen Steuersignals vom Host kommen, geht die blaue
Failsafe-LED an und alle Ausgänge gehen auf 1.5 ms Neutralwert.
Habe dann das Grundgerüst des Demons für den Linux-Host im Empfänger programmiert, der den STM mit den Daten
befeuert, und auch abfragen kann. Damit ich das auch irgendwie testen kann, gibt dieser Demon seine Ausgangswerte
sowie Eingangswerte (die später von der Fetnsteuerung kommen sollen) in einem Shared-Memory-Bereich aus - so kann
ich ein Monitoring-Tool bauen, das die Parameter live anzeigen kann, ohne im eigentlichen Realtime-Demon irgendwelche
speziellen Debug-Ausgaben vorsehen zu müssen.
Funktioniert nach längerem Rumgewürge soweit auch ganz gut, ich kann die PPM-Werte des STM ca. 65-mal pro Sekunde
updaten, wenns sein muß, bevor der Jitter am Ausgang zu groß wird. Da die Ausgangssignale im Bereich von 20...50 mal
pro Sekunden rausgehen, reicht das.
Jetzt muß hier noch die ganze Mixer-Funktionalität rein, die ich im originalen Fahrtregler im STM drinnenhatte. Will das jetzt
lieber auf dem Linux machen, da ist die CPU schneller und ich muss keine Rücksicht auf die Realtime-Puklsgenerierung nehmen.
Außerdem kann man dann die Konfigurationsparameter (z.B. Mappings welcher Knüppeleingang welchen PPM-Ausgang
steuert, und wie und ggfs. mit welchen Steuerkurven gemischt werden soll) in einer Konfig-DB ablegen, die man dann
evtl. später über ein Web-Frontend editieren kann.
In der Fernbedienung will ich dann einfach nur die 8 Knüppeleingänge auf 8 Ausgänge mappen. Dort muss dann nur die
Kalibrierung der Eingangspotis erfolgen, und eine eventuelle Richtungsumkehr, Totzonen und dergleichen rein.
FB ist noch nicht so weit, das kommt wenn der Empfänger mal gut läuft.
Nächste Baustelle ist jetzt die UDP-Kommunikation zwischen Fernbedienung und Empfänger. Mal sehen, wie gut das
klappt, mit Sockets-Programmierung stehe ich immer ein bißchen auf Kriegsfuß....
zur Hardware: Weil ich das gerade nicht in einem Bot teste, sondern die Platine bei mir auf dem Tisch liegt, habe ich an die
5V-Schiene ein Kabel mit einer Netzteil-Hohlbuchse angelötet -da stecke ich dann einfach ein Standard-12V-Netzteil an.
Dem Empfänger macht das nichts, weil der eh mit 3.3V läuft, sie von dem BEC des Fahrtreglers genommen und
mit einem Schaltregler runtergeregelt werden.
Da hatte ich dann nach stundenlanger Programmiererei einfach mal den Wunsch nach einem Erfolgserlebnis, und
aus der Grabbelkiste ein Servo genommen und angesteckt; wollte sehen ob das sich so bewegt wie ich es gerne hätte.
Puff, Servo läuft hart gegen einen Anschlag. Gut, wohl falschrum drauf - umgesteckt, Puff der STM32 tut seinem
Unmut mit Rauchzeichen kund. Hat wohl die 12V über das Servo an seine Ausgänge nicht vertragen; jaja ich hatte
vergessen, dass ja da grad 12V statt 5 anliegen.... grummel....
Mal schauen, ob ich den gewechselt kriege - kommt man natürlich bei der mit Steckern fertig bestückten Platine ganz
super ran...
Merke: nicht mitten in der Nacht irgendwelchen Kram "nur mal Schnell" irgendwo anstecken...
LG
-Michael