SRXL Mutiplex Protokoll in MultiWii_2_1 einbauen

rudirabbit

Neuer Benutzer
#1
Hallo,
Das Protokoll ist dem SBUS ähnlich, die Daten kommen auch seriell am UART.

Nach Anpassen des Startbytes bzw. der Protokollänge und Auswertlogig scheint vom UART nur Datenmüll zu kommen.
Die Baudrate habe ich auf 115200 angepaßt.

Das SBUS Futaba läuft aber mit 8E2, dies muss im Code definiert worden sein, nur wo.
Vermutlich dort
Code:
static void inline SerialOpen(uint8_t port, uint32_t baud)
Kein UCSR(n)C wird dort angefasst :S:

Für SRXL brauche ich aber 8N1,...

Es sollte das UCSR1C angefasst werden, etwa so (für 8 N 1)
Code:
UCSR1C = _BV(UCSZ11) | _BV(UCSZ10)
Das Protokoll an sich ist nicht das Problem, habe ein PC Demoprogramm gebaut welches einwandfrei funktioniert.
 

rudirabbit

Neuer Benutzer
#2
Das mit 8N1 wäre nun gefixt, zumindest kommen jetzt plausible Daten

In der RX steht in der funktion readsbus
Code:
 int val = SerialRead(1);
    if(sbusIndex==0 && val != SBUS_SYNCBYTE)
      continue;
....
Diese If Abfrage funktioniert so nicht, ich stelle auch in Frage ob der Futaba SBUS damit funktioniert.
Laut unseren Tests sollte es so aussehen:
Code:
 if ((sbusIndex==0) && (val != SBUS_SYNCBYTE))
continue;
Ich bin eigentlich ein Pascal/Delphi Mensch, C ist also nicht soo mein Ding, kann also auch falsch liegen.
Sind Entwickler dieses Projekts in diesen Forum ?
 

rudirabbit

Neuer Benutzer
#5
Hallo,
So wir haben es nun am Laufen, noch nicht geflogen.
Die Anzeigen in MultiWii Conf passen jedenfalls.

Wegen der Servowege:
Code:
rcValue[i]  = (SRXL[po]<<8|SRXL[po+1])/2.3+614;
Die Berechnung schaut so aus mit den "Variablen" 2.3 (m) und 614 (b) die wir für die benutzte Funke ermittelt haben.
Lässt sich aber auch auf andere Sender anpassen.

m = (maxWert-minWert) / 1000;
b= 1000 - (minwert/m)

rcValue = (SRXL[po]<<8|SRXL[po+1])/m+b;

Nun muss man natürlich noch minWert und maxWert wissen, also der Wert bei Knüppel min und max.
Dazu habe ich ein Windows Programm gebaut, das diese Werte anzeigt.

Ich habe aber fast den Eindruck, das dies keine zu brauchen scheint. Oder haben wenige Leute diese Hardware ?
 

Anhänge

furaifx

Erfahrener Benutzer
#6
Fliege eigentlich hauptsächlich die Flächenmodelle mit M-Link bin nur für die Copter zusätzlich noch auf Graupners System eingestiegen. Wenn der Multiplex Bus mit Multiwii zusammen funktionieren würde wäre das aber eine feine Sache ;).
 

fdietsch

Erfahrener Benutzer
#7
Gibtes was neues ?
 

jpo

Neuer Benutzer
#10
Hallo,
danke für die Mühe Multiplex zu implementieren.
Leider bekomme ich es mit der Beispieldatei nicht ans laufen.
Bin im Programmieren nicht so fit.
Habe ein Flyduino Mega und bekomme beim kompilieren immer

core.a(HardwareSerial.cpp.o): In function `__vector_25':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/HardwareSerial.cpp:118: multiple definition of `__vector_25'
MultiWii_2_1_SRXL.cpp.o:C:\Program Files (x86)\Arduino/Serial.ino:542: first defined here
c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions
core.a(HardwareSerial.cpp.o): In function `__vector_51':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/HardwareSerial.cpp:169: multiple definition of `__vector_51'
MultiWii_2_1_SRXL.cpp.o:C:\Program Files (x86)\Arduino/Serial.ino:543: first defined here
core.a(HardwareSerial.cpp.o): In function `__vector_54':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/HardwareSerial.cpp:186: multiple definition of `__vector_54'
MultiWii_2_1_SRXL.cpp.o:C:\Program Files (x86)\Arduino/Serial.ino:544: first defined here
core.a(HardwareSerial.cpp.o): In function `__vector_26':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/HardwareSerial.cpp:227: multiple definition of `__vector_26'
MultiWii_2_1_SRXL.cpp.o:C:\Program Files (x86)\Arduino/Serial.ino:463: first defined here

Bin für jede Hilfe dankbar,

Joachim
 

rudirabbit

Neuer Benutzer
#11
Hallo:

Habe mir den Code angesehen, ist ja auch schon ne Zeit lang her.
Es wird der Serielle Port 1 benutzt, das ist im Source Code Fest drin, müsste man noch ändern.
Wenn du jetzt den Port 1 schon für GPS vergeben hast kommt es zu dem Problem.

Es wären die Zeilen 352,353 und 101 in der RX Datei zu ändern.
Also : Serial1.begin(115200); z.b. Serial2.begin(115200); dort wo der Empfänger angeschlossen ist.
 

jpo

Neuer Benutzer
#12
Hallo rudirabbit,
danke für die Hilfe. Es läßt sich jetzt kompilieren, ich werde es diese Woche ausprobieren.

Schönes WE noch,

Joachim
 

Felias

Erfahrener Benutzer
#13
Hallo zusammen,

gabs hier noch was Neues? Würde zu gern die Smart SX nutzen, ohne viele Kabel verlegen zu müssen. Wenn man Summensignal verwöhnt ist, fällt es schwer drauf zu verzichten...
 
FPV1

Banggood

Oben Unten