Hallo, ich versuche gerade per JETI Daten auf dem Rückkanal vom RX zur JETI-Box zu übertragen. Ich habe dazu an meinem µC die Rx mit der Tx Leitung über eine 1n4007 verbunden. An der Rx(Anodenseite) ist der JETI-RX(2.4EX) an den Port (Ext.) angeschlossen. Zum Testen sende ich 34 Bytes 0xFE, 32 x'H', 0xFF. Die JetiBox zeigt den gefundenen RX an und auch die RX-Spannung (3,3V). D.h. der RX wurde gefunden. Der TX piepst dann einmal lang, pause, usw. Eine Anzeige meines Textes bekomme ich nicht. Habe ich noch was übersehen? Muss ich noch was beachten? Frank
Ich bin mir momentan nicht sicher ob der Anschluss richtig ist... Ich habe es nach der Mikrokopter-Anleitung gemacht. Ich schau wenn ich zuhaus bin mal in meine Unterlagen, wie ich es gelöst habe. Gruß Termi
Irgendwelche Links, Gerätebezeichnungen? Warum soll jeder erst grübeln, was Du meinst.
Hallo Nils, danke für Dein Angebot mit dem Nachschauen. Ich habe es nach dieser Anleitung gemacht: http://www.mikrokopter.de/ucwiki/JetiBox Hallo Peter, wenn man so tief an einem Problem arbeitet fällt es (mir) schwer einen Schritt zurück zu machen :-) Also: Das RC Übertragungssystem ist ein JETI duplex (2,4EX). Sender und Empfänger. Verkabelung hier abgeschaut: http://www.mikrokopter.de/ucwiki/JetiBox JETI-Protokol: http://www.jetimodel.com/en/Telemetry-Protocol/JETI-Telemetry-Communication-Protocol/ Mein STM32 ist wie folgt initialisiert: USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_9b; USART_InitStructure.USART_StopBits = USART_StopBits_2; USART_InitStructure.USART_Parity = USART_Parity_Odd; Baudrate passt. Das kann ich mit dem Scope sehen. Code:
1 | void SendJeti(void) |
2 | {
|
3 | uint16_t i = 0; |
4 | |
5 | //Framebeginn
|
6 | while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); |
7 | USART_SendData(USART1, 0x00FE); |
8 | |
9 | for (i=1; i<=32; i++) |
10 | {
|
11 | //Senden von 32 x 'H'
|
12 | while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); |
13 | USART_SendData(USART1, 0x0148); |
14 | }
|
15 | |
16 | //Frameende
|
17 | while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); |
18 | USART_SendData(USART1, 0x00FF); |
19 | |
20 | //Antwort abwarten
|
21 | wait_ms(50); |
22 | }
|
Gesendet wird auch, sieht man mit dem Scope. Frank P.S. Das mit dem Piepssignal hat sich geklärt. Es war Akkuunterspannung des Rx (Wegen der 3,3V Spannungsversorgung) Ich versorge den Rx jetzt mit 5V. Damit ist das Piepsen weg. Unter Mx an der Jetibox wird aber weiterhin nix angezeigt :-(
Hallo, bin wieder etwas weiter. Die gedrückten Taster an der JetiBox kann ich jetzt im µC erkennen und Aktionen ausführen. Leider zeigt mit die Box immer noch keinen Text an. Nur "Mx Connecting". Kann es sein das es irgendeinen Konflikt mit dem "alten-" und dem neuen "EX"-Protokoll gibt? Ich hatte das so verstanden, das man beide parallel betreiben kann. Frank
Also ich mache Sensoren für MPX M-Link, aber ich kann dein Problem grade überhaupt nicht verstehen. Ich kenne das Jeti Protokoll nicht. Aber reicht es die richtigen Daten über den UART rauszuschreiben? Gibts da keinerlei Timings-Constraints? Sonstige Dinge zu beachten? Bei M-Link ist das Timing wichtig. Sendest du exakt nach Spezifikation? gruß cyblord
Hallo cyblord, laut Scope sende ich nach Spec. Die Übertragung geht über einen Kanal der Rx und Tx vom µC über eine Diode zusammenfasst. Dann gibt es beim Protokoll 4 Varianten. Es müsste eigentlich alles passen. Eigentlich :-) Frank
Das Problem liegt beim USART. STM erlaubt nur insgesamt neun Datenbits, und zwar inklusive Parität. Deswegen bedeutet USART_WordLength_9b nicht etwa 9 Bit + Parität. Das Jeti-Duplex-Protokoll benötigt jedoch beides, d.h. echte neun Nutzdatenbits plus Parität. Die ATmega-Prozessoren, wie sie von Jeti durchgängig eingesetzt werden, beherrschen jedoch die geforderte Betriebsart. Um mit einem STM32 arbeiten zu können, muss man zu anderen Tricks greifen, z.B. zu einem Software-UART mit DMA. Das funktioniert in unseren Fernsteuerungen (iVol 2G16 usw.) mit Jeti-Modul(en) und Jetibox-Anschluss einwandfrei.
Ich habe mir mal ein Menü für einen Multiwii-Kopter gebaut... FÜr ein AIO Pro V1. Da sitzt aber ein Atmega drauf... Habe mir dafür mehrere Arduino Libs zusammenkopiert ;-). Wenn du mir deine Emails als PM schickst mach ich dir das Projekt als Zip fertig, evtl kannst du abkupfern. Auf der Empfänger Seite geht auch die Anleitung von Jeti nicht, da muss man sich an die von mikrokopter halten (hast du ja schon gemacht) Auf der Senderseite hab ich es damals aber anders gelöst (kp warum): Rx---->100Ohm-------+------->4k7Ohm ----> Jeti TG2 Pin D tx------------------^ So lief es bei mir. Gruß Ert
Hallo Andreas, danke für Deine Antwort. Du meinst also die USART_WordLength_9b sind inklusive der USART_Parity_Odd? Das wäre ja ultradämlich :-( USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_9b; USART_InitStructure.USART_StopBits = USART_StopBits_2; USART_InitStructure.USART_Parity = USART_Parity_Odd; Ich kann das 0xFO des Rx empfangen und auswerten!? Gruß Frank
Hallo Niels, danke für Dein Angebot mir dem Sourcecode. Da ich einen STM32 verwende wird mir das laut Andreas leider nichs nützen. Danke trotzdem. Frank.
Hallo, so. Wieder etwas weiter gekommen. Ich habe mir jetzt erstmal über einen 104µs Timerinterupt eine eigene USART-Senderoutine gebaut. Die Bits sind 104µs lang und ich kann jetzt 1 startbit, 9 daten bits, 1 parity(odd) und 2 stoppbits senden. Laut Scope ist alles toll! Leider zeigt die verd* JetiBox immer noch nichts an :-(. Nur "Mx Connecting". Am Rx kann ich auf der Zusammengefassten D-Leitung alle 200ms ein 0xF0, das den Tastenzustand der Box wiedergibt, ablesen (Scope). Ich sende dann auf Tastendruck (Rechts) ein Datenpacket mit den 32 Byte Nutzdaten. Demnach bin ich (µC)Slave? Bei Start- und Ende"byte" ist das 9. Bit = 0 und bei den 32 Daten"bytes" ist das 9. Bit = 1. Dies kann ich auch alles auf dem Scope sehen und ich bekomme das Protokoll mit dem Scope auch entschlüsselt. Er zeigt mit zwar Parityfehler an, was aber auch nicht verwunderlich ist, da ich beim Scope dieses besch* Sonderformat auch nicht genau einstellen kann. Auf Senderseite scheinen die Daten auch gar nicht erst anzukommen (Scope). Muss ich im Tx oder Rx noch irgendwas parametrieren, damit die Daten auch an die Box gesendet werden? habe in der Anleitung nichts dazu gefunden (oder überlesen) Frank
Hallo, ich hab auch mal Daten mit einem Mikrcontroller auf der JetiBox ausgegeben. Ich musste alle Info mühselig aus dem Internet zusammen kramen und selber messen. Hab dann per Mail Jeti gefragt ob sie nicht die Daten veröffentlichen wollen. Jetzt suche ich im Internet und finde gleich das passende PDF. Vllt. bringt es dir was. mfg. Moritz
Hallo Moritz, danke für Deine Antwort. Das Dokument kenne ich. Es ist meine Arbeitsgrundlage :-) Nachdem ich mit dem 9 Bit Modus beim STM32 meine Probleme hatte sende ich jetzt Spec. konform. Muss man beim Einschalten noch irgendeine Initialisierung anstossen oder müssten die "Simple Text" Daten unter "Mx" sofort angezeigt werden? Ich sende jetzt nach jeder 0xF0 oder Tastensendung der Box einen 34 "Byte"Frame. Gibt es noch irgendetwas anderes zu beachten? Frank
Hallo, leider immer noch keinen Erfolg:-( Kann es sein, das der Jeti Rx nicht mit den 3,3V des STM32 zurechtkommt? Die Sofwareusart arbeitet vom Timing her perfekt. Laut Spec. müsste es gehen: Logic levels: Maximum level of logical zero “0”: 1,5V Minimum level of logical one “1”: 3,0V Muss man die Verbindung noch initialisieren? Frank
Hallo, ich hab mit 5V gearbeitet. Weiß aber nicht genau wie das jetzt ist, neue version oder so. Vllt mal mit nem Oszi am Sender messen oder so. mfg Moritz
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.