Tau Labs Software unterstützt vielfältige Hardware

cGiesen

Erfahrener Benutzer
Es gibt auf dem REvo noch eine Flesi-IO Port.
Das ist normalerweise der Eingang für den Empfänger.
Es wird dazu ein Adapter Kabel mitgeliefert.
Aber auf eben jenem Port gibt es noch die Beiden UARTS, I2C und SPI stehen dort auch noch zur Verfügung.

Siehe hier:
https://github.com/TauLabs/TauLabs/wiki/RevoMini

Ich muss dann mal schauen, ob ich durch vergleichen schlauer werde
 
Der FlexiIOPort oder bei TL Receiverport hat keine zwei USARTs nur einen.
Entweder 8 PWM oder derzeit 1 PPM
Möglich wäre PPM oder SPI oder CAN und 1 USART6 und noch 2PWM die man eventuell noch zu IO oder analog machen kann.
 

cGiesen

Erfahrener Benutzer
Laut Schaltplan sind es zwei!
UART3 und UART6

Edit: Jetzt wo Du es sagst. Hast recht :(
Sind nur die Handshake Leitungen

Aber immerhin, könnte ich SUMD anschließen oder Blauzahn
 

Anhänge

Zuletzt bearbeitet:

ernieift

Erfahrener Benutzer
puhhhh,
nun endlich mal ein update bei picoC. Ich habe auf die aktuelle Version 2.2 r603 hochgerüstet. War gar nicht so einfach, da sich doch einige Sachen geändert haben. Dafür ist der Code ein auch wenig kleiner geworden. Sourcegrösse und Stack lassen sich nun über Settings anpassen. Ein Sack voll Mathefunktionen ist auch drin. Das Ding ist vom Source her (hoffentlich) sauber. Jedenfalls geht es bei mir gut. Alles kann ich aber auch nicht testen ;). Hier mal ein Bild von der 'Entwicklungsplatform'. Mit dem GY-86 läuft das FF4 ohne Änderungen am Target. Der USB2SERIAL-Adapter hängt am USART2 und versorgt nebenbei das Board.
FlyingF4.jpg
PicoC ist derzeit im FF4 und Quanton eingebaut. Beim Revolution (und -mini) gibt es Konflikte mit dem alten Pymite Source. Wenn man den disabled sollte es dort auch ohne Probleme gehen. Ich habe nochmal auf dem FF3 getestet. Wenn ich Gleitkomma und Stringfunktionen rausnehme, dann sind immernoch ca 600 Byte zuwenig Platz im Flash. Klar kann man auch HoTT Telemetrie rausnehmen damit es passt, aber wer will das...
Eingebaute UAVOs sind AltholdSmoothed, AttitudeActual, FlightbatteryState, FlightStatus und GPSPosition. Fürs Timing gibt es ein delay() und für genaues Intervall sync(). Wenn es einen USART gibt, kann man dessen Baudrate auch ändern. Den TestValue im PicoCStatus kann man lesen und schreiben.
Filesystem geht auch. Nur einen gcs Code wird es von mir so schnell nicht geben. Ich kriege den QT-Designer nicht so wie ich will ans Laufen. Mit ControlCodes kann man die Sources über den USART hoch- und runterladen.
Für Ausgaben ist noch nichts drin. Um keinen bösen Hack zu bauen, werde ich wohl auf die AccessoryChannels zurückgreifen. Damit kann man dann die Fernsteuerung in picoC reinreichen und die Servos o.ä. über picoC steuern. Muss ich noch probieren. Ich denke das sollte aber gehen. Wenn das funktioniert, dann braucht es noch ein AccessorySetting um die Anzahl der Instanzen einzustellen.
Ich denke, wenn das hier fertig ist, muss ich mir noch 'ne Menge Doku aus den Fingern saugen. Sonst kommt am Ende kaum jemand damit klar. Was ich bisher getestet habe ging super. Da es frei programmierbar ist, hat man genug Möglichkeiten sich eigene Sachen auszuprobieren.
Was die Geschwindigkeit angeht, bin ich selber überrascht. Das Teil ist, obwohl ein Interpreter, ziemlich flott.
Als nächstes werde ich auf meinem Quanton weitermachen und mal einen Servo zum laufen bringen. Als Idee könnte man die Hott Telemetrie um eine Overlayzeile erweitern. Dann könnte man mit picoC in die Statuszeile ein paar Infos reinschreiben.
Leider ist bei meiner MX-12 das Display kaputtgegangen. Ich sehe nur noch die obere Hälfte. Von Graupner habe ich nur die Info bekommen, dass ich knapp 40€ hinschicken soll und die mir dann eins zuschicken. Nachdem ich aber wenigstens ein Angebot/Rechnung dazu haben wollte haben die sich nicht mehr gemeldet. Muss ich mich wohl nochmal drum kümmern.
bis dahin und vg
ernieift
 

Netsrac

Time Traveler
Okay, aber das ist dann wieder China....kommt bei mir irgendwie nur jedes zweite Paket an.

Gibt es einen Unterschied zwischen V1.0 und V1.1?

Das von Ebay sagte V1.1, das bei rc-Timer ist V1.0
 

ernieift

Erfahrener Benutzer
Hallo Carsten,
vielleicht wirst Du ja doch noch glücklich mit dem Sparky. Habe eben einen PR gemacht, der über 1KB RAM auf allen Targets spart. Beim Einstellen der UART-Puffer, war ich damals etwas faul und habe einfach die defines der gcs-telemetrie benutzt. Die liegen bei RX und TX auf je 512Bytes. Da die HoTT Telemetrie Byte für Byte übertragen wird, habe ich die nun auf insgesamt 32Byte runtergeschraubt. Beim Stack habe ich auch noch 100 Byte abgezogen.
Wenn man auf einem STM32F4 coded, kjann man schonmal nachlässig werden, was den Speicherbedarf angeht. 48KB gegenüber 192KB ist da schon ein Unterschied.
Auf dem Quanton und FF4 läuft es. Kannst Du ja mal ausprobieren. Mit James Hilfe habe ich nun auch mehrere Branches für das gleiche Projekt. Alles neumodischer Kram. Sowas gab es früher nicht :)! Geht aber gut.
vg ernieift
 

cGiesen

Erfahrener Benutzer
Das hört sich ja alles toll an.
Aber das Sparky kommt wenn, nur auf die kleinen Copter zum Toben.
Dann bin ich Naze32 auch 'los'
Ich freue mich schon auf die Telemetrie, die aber nur Sinn macht, wenn ich einen Weg finde, einfach die Spannung zu messen.
Wichtiger ist mir aber, dass ich meinen Hamerhead erstmal in den Griff bekomme.
DAs mit dem Driften leuchtet mir noch nicht ganz ein.
In die Halle konnte ich leider nicht, da meine Frau tuppern war ;)
Deshalb konnte ich auch noch nicht einfach ausprobieren.
 

ernieift

Erfahrener Benutzer
Wo ist da das Problem? Einfach einen Spannungsteiler an den Accu (einen kleinen C nicht vergessen) und fertig. Da Du aber das Revo drauf hast, bin ich mir nicht so sicher wie das da geht.
 

ernieift

Erfahrener Benutzer
Hallo,
ich hab' da mal was vorbereitet:
IMG_2027.JPG IMG_2026.jpg
@Carsten: Du wolltest doch eine blinkende LED, oder? Einfach picoC im Interaktivmodus laufen lassen und per Com das Script hochladen und mit main(); aufrufen. Läuft solange der Copter gearmed ist.
Morgen versuche ich mal ein Video zu machen...
vg ernieift
 

Flensburger

Erfahrener Benutzer
Hallo ernieift,
das sieht ja toll aus. Ist es im auf Github.TauLab.NEXT vom FlingF4 implementiert ? Haben wollen :D

Mein GPS ist endlich gekommen, ein NEO-6M für nen 10'er + 5EUR Versand. Dafür leider eine Wartezeit von einem Monat. Funktioniert auf Anhieb.
 

ernieift

Erfahrener Benutzer
Hat jemand Lust auf Sonar? Dann Github aktualisieren und testen:

Code:
#include "system.h"
#include "pwm.h"
PWMFreqSet(2,10); /* set channel 5-6 to 10Hz */
PWMMinSet(5,0);   /* set channel 5 Min to 0 */
PWMValSet(5,10);  /* set channel 5 to 10µs pulse */
while (getchar() != 27) {
 float distance = PWMValGet(1)/58.0;
 printf("Distance = %f cm\n", distance);
 delay(500);
}
vg ernieift

PS: Schaltung vergessen. Trigger an OUT5, Echo an IN2 bei PPM+PWM+ADC.
PPS: Wer will kann ja die Temperatur aus dem Baro lesen und damit kompensieren ;)
 
Zuletzt bearbeitet:

Flensburger

Erfahrener Benutzer
Äh, ja, habe gerade eben das HC-SR04 auf den Tisch bekommen.

Hat jemand Lust auf Sonar? Dann Github aktualisieren und testen:

Code:
#include "system.h"
#include "pwm.h"
PWMFreqSet(2,10); /* set channel 5-6 to 10Hz */
PWMMinSet(5,0);   /* set channel 5 Min to 0 */
PWMValSet(5,10);  /* set channel 5 to 10µs pulse */
while (getchar() != 27) {
 float distance = PWMValGet(1)/58.0;
 printf("Distance = %f cm\n", distance);
 delay(500);
}
vg ernieift

PS: Schaltung vergessen. Trigger an OUT5, Echo an IN2 bei PPM+PWM+ADC.
PPS: Wer will kann ja die Temperatur aus dem Baro lesen und damit kompensieren ;)
 

Flensburger

Erfahrener Benutzer
nee, muss erst mal auf den neuesten Stand kommen, ich hoffe heute noch testen zu können.
Ich bekomme Deine Version nicht übersetzt:

CC build/fw_pipxtreme/fw_pipxtreme.bin.firmwareinfo.c
/home/jh/workspace/TauLabs/TauLabs-ernieift-picoC_next/build/fw_pipxtreme/fw_pipxtreme.bin.firmwareinfo.c:60:24: error: invalid suffix "xNone" on integer constant
/home/jh/workspace/TauLabs/TauLabs-ernieift-picoC_next/build/fw_pipxtreme/fw_pipxtreme.bin.firmwareinfo.c:61:15: error: 'None' undeclared here (not in a function)
make[1]: *** [/home/jh/workspace/TauLabs/TauLabs-ernieift-picoC_next/build/fw_pipxtreme/fw_pipxtreme.bin.firmwareinfo.o] Fehler 1
make: *** [fw_pipxtreme_tlfw] Fehler 2
jh@linux-cjtf:~/workspace/TauLabs/TauLabs-ernieift-picoC_next>


Das ist die erzeugte Datei fw_pipxtreme.bin.firmwareinfo.c:

#include <stdint.h>

/**
* We have 100 bytes for the whole description.
*
*
* Structure is:
* 4 bytes: header: "TlFw".
* 4 bytes: GIT commit tag (short version of SHA1).
* 4 bytes: Unix timestamp of compile time.
* 2 bytes: target platform. Should follow same rule as BOARD_TYPE and BOARD_REVISION in board define files.
* 26 bytes: commit tag if it is there, otherwise branch name. '-dirty' may be added if needed. Zero-padded.
* 20 bytes: SHA1 sum of the firmware.
* 20 bytes: SHA1 sum of the uavo definitions.
* 20 bytes: free for now.
*
*/

struct __attribute__((packed)) fw_version_info {
uint8_t magic[4];
uint32_t commit_hash_prefix;
uint32_t timestamp;
uint8_t board_type;
uint8_t board_revision;
uint8_t commit_tag_name[26];
uint8_t sha1sum[20];
uint8_t uavosha1[20];
uint8_t pad[20];
};

const struct fw_version_info fw_version_blob __attribute__((used)) __attribute__((__section__(".fw_version_blob"))) = {
.magic = { 'T','l','F','w' },
.commit_hash_prefix = 0xNone,
.timestamp = None,
.board_type = 0x03,
.board_revision = 0x01,
.commit_tag_name = "unreleased",
.sha1sum = { 0xb0,0x04,0x06,0xd0,0x6e,0x6a,0x0f,0x04,0xf5,0xca,0x76,0xaf,0x73,0x73,0xa3,0x33,0x5c,0x93,0xc8,0x1a },
.uavosha1 = { 0x4b,0x85,0x05,0xd9,0x3a,0xaa,0xf7,0x51,0x1f,0x57,0x46,0xf2,0x03,0xea,0x92,0x5f,0x9b,0x2c,0x4a,0x58 },
};

/**
* @}
*/
 
Zuletzt bearbeitet:
FPV1

Banggood

Oben Unten