- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 10

Thema: RP6 USB-Kommunikation; Keine Reaktion & alle LED's aus?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.05.2010
    Beiträge
    16

    RP6 USB-Kommunikation; Keine Reaktion & alle LED's aus?

    Anzeige

    E-Bike
    Hallo,
    ich will meinen rp6 über USB steuern. Am PC funktioniert das ganz gut, mit diesem simplen Code:
    Code:
    //Init
                var Port = new SerialPort("com5", 38400, Parity.None, 8, StopBits.One);
                Port.Open();
                Port.Write("start");
                Port.DataReceived += new SerialDataReceivedEventHandler(Port_DataReceived);
    Allerdings will ich es nicht vom PC, sondern von meine .NET Gadgetgeer aus steuern, vielleicht kennt das jemand hier.
    Der Code ist ebenfalls c# und sieht ganz ähnlich aus, nur leider funktioniert es nicht
    Code:
    static void DeviceConnectedEvent(USBH_Device device)
            {
    
                Debug.Print("Device connected");
                
                //Debug.Print((device.TYPE == USBH_DeviceType.Serial_FTDI).ToString());
                USB = new USBH_SerialUSB(device, 38400, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
                usb.Open();
                WriteMessage("start");
                new Thread(new ThreadStart(Listener)).Start();
            }
    
           
    
    
            public static void WriteMessage(String message)
            {
                byte[] bytes = StringToByteArray(message);
                usb.Write(bytes, 0, bytes.Length);
            }
    Und zwar wird der Code zwar ohne Fehlermeldung ausgeführt, aber es kommt keine Antwort vom RP6 und dessen LED's gehen alle aus.
    Ich muss dann das USB-Kabel trennen, dann gehen sie wieder an... Weiß jemand woran das liegt, bzw was für Gründe es haben könnte das alle LED's ausgehn?

    MfG
    challenger92

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Mal ins Blaue vermutet - das "USB Kabel" ist quasi ein Wandler von USB auf RS232 mit 5 V Pegel. Dazu nötig ist auf der Geräteseite ein Treiber den den Wandler im System als Serial Device einbindet und als COMx im Gadgetgeer bereit stellt. Ist das der Fall? Wenn ja, sollte die Hardware genau so eingestellt sein wie sonst im PC was Baudrate Stopbits, xon/xoff usw. angeht. Schaut man sich nun Schaltpläne vom RP6 und USB Wandler an, sieht man das der Wandler über das DTR Signal ein RESET der M32 erzeugen kann. Folglich vermute ich, das die DTR Leitung vom Gadgetgeer anders gesteuert wird als der PC das macht und somit den rp6 fälschlicher Weise resettet oder gar im dauerreset hält. Eigentlich hat die Leitung eine andere Funktion aber sowas wird gern für solche Fälle zweckentfremdet, da man so Steuerleitungen (wie z.B. Reset) bekommt die sonst eigentlich nicht vorhanden wären. Das Verhalten vom RP6 am Gadgetgeer wäre damit zu erklären, obs auch wirklich daran liegt... keine Ahnung.
    Um solche Probleme auszuschließen gehört für mich da (auf das RP6 Board) ein Jumper hin... mit dem man das DTR Signal als Reset hardwareseitig abschalten kann. Ist leider nicht vorgesehen, lässt sich aber durch eine Platinenunterbrechung und bischen Lötarbeit nachrüsten...
    Gruß RolfD
    Geändert von RolfD (08.04.2012 um 15:50 Uhr)
    Sind Sie auch ambivalent?

  3. #3
    shedepe
    Gast
    Die Frage ist auch ob die SerialPort.Write Funktion bei dem String "start" die gleichen Bytes sendet wie deine WriteMessage Funktion. Ansonsten das Beachten was bereits RolfD geschrieben hat

  4. #4
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Ich hab jetzt endlich diesen Gadgeteer gefunden... ist es das hier? http://www.ghielectronics.com/catalog/product/297
    Wäre einfacher gewesen wenn du mehr infos dazu schreibst.
    Also dieses Teil dengelt man wohl am besten per serial/UART ohne Spannungswandler für RS232 an - wobei zu berücksichtigen ist, das nicht alle ARM7 boards mit 5V Pegel klar kommen, manche laufen mit nur 3,3V und benötigen einen Pegelwandler. Es macht wenig Sinn, den USB Host zu verwenden da für den FTDI Chip auf der anderen Seite erst ein Treiber her müsste. Ansonsten bleibt die Problematik des DTR Signals (Welches man im RP6 Loader sogar von Hand steuern kann - Target Control/Hold in Reset). Das Modul dürfte sich aber auch erstklassig über SPI/TWI (ggf. mit Wandler) andengeln lassen. Allerdings frage ich mich grade, wozu ein ARM7 Board, wenn einfachste Zusammenhänge schon Probleme bereiten. SBC Devices wie Gatgeteer, Arduino, RP6 usw. sind kein Lego - weder Hardware- noch Softwareseitig.
    Gruß RolfD
    Geändert von RolfD (09.04.2012 um 17:44 Uhr)
    Sind Sie auch ambivalent?

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Geändert von radbruch (09.04.2012 um 17:19 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    07.05.2010
    Beiträge
    16
    Das Problem ist, der Gadgetgeer hat zwar einen FTDI - Treiber an Bord, aber dieser unterstüzt die Steuerung des RTS-Signal (noch) nicht. Kann man da RP6-Seitig was machen? In deinem Thread radbruch hast du eine Möglichkeit ja schonmal beschrieben, aber danach kann man den RP6 nicht mehr flashen oder?

  7. #7
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Ach RTS wars .. nicht DTR.. auch gut. Ja das gekreuzte Kabel... *seufz* Lösung ist trotzdem ein Jumper in der MRESET Leitung des RP6, das lässt dir auch die Möglichkeit den USB-Dongle weiterhin am PC mit RP6Loader zu nutzen. Man kann sich aber auch selbst nen Kabel konfektionieren, wo das RTS nicht an den RP6 durchgereicht wird - mit Microschiebeschalter oder so...
    Gruß Rolf
    Geändert von RolfD (09.04.2012 um 18:58 Uhr)
    Sind Sie auch ambivalent?

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    07.05.2010
    Beiträge
    16
    Wo genau muss ich den Jumper setzen? Habe ihn jetzt zwischen MRESET und VDD gesetzt. Jetzt bleibt der Bot schonmal an, die grüne LED blinkt wenn ich die Verbindung herstelle
    Aber er ignoriert den Startbefehl, den ich vom Gadgetgeer aus sende. Was habe ich jetzt wieder falsch gemacht?

    Edit: muss am Gadgetgeer liegen, am PC ist sein Verhalten ganz normal, außer dass flashen nicht geht.
    Edit2: hat sich erledigt kleiner Fehler im Code, jetzt funktioniert es Danke!!!
    Geändert von challenger92 (09.04.2012 um 19:57 Uhr)

  9. #9
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Ich halte nichts davon, Leitungen ohne Vorwiderstand gegen GND oder VDD zu ziehen, ich meinte den Jumper als Brücke um eine unterbrochene Leiterbahn bei Bedarf zu verbinden aber scheinbar drücke ich mich zu ungenau aus...
    Gruß Rolf
    Sind Sie auch ambivalent?

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    39
    Beiträge
    1.516
    Hallo,


    > Habe ihn jetzt zwischen MRESET und VDD gesetzt.

    --> BÖSE, nicht machen!
    (das erzeugt einen Kurzschluss am RTS Pin wenn du das USB Interface anschließt und der Pin low ist)


    Einen passenden Jumper gibts schon auf dem Mainboard - der ist aber standardmäßig nicht bestückt (weil man den normalerweise nicht braucht). Einfach eine Leiterbahn auf der Rückseite durchtrennen, dann den Jumper einlöten. Eigentlich gedacht um zwischen Boot und ISP umzuschalten.
    s.a. http://www.rn-wissen.de/index.php/RP...Programming.29

    Es ist übrigens völlig normal und gängige Praxis die Steuerleitungen für sowas zu verwenden.


    Ich frage mich allerdings auch warum Du überhaupt den USB Adapter dazwischen schalten willst? Das ist an einem Mikrocontroller ziemlich nutzloser Overhead - der USB Adapter emuliert ja eine serielle Schnittstelle / UART damit mans einfach am PC nutzen kann. Der Gadgeteer hat aber doch sicher irgendwo einen normalen UART frei?
    Da einfach einen 3.3V <-> 5V Levelshifter zwischen und fertig. Da brauchst Du auch keine USB Software Treiber und nix für.




    MfG,
    SlyD

    PS:
    Im Schaltplan des USB Interfaces sind die Text Labels DTR und RTS vertauscht (war bis vor kurzem nur niemandem aufgefallen).
    Macht für die Hardwarefunktion natürlich nix, ist nur der Text verdreht gewesen.
    Also es ist natürlich RTS an der Reset Leitung.

    Das PDF muss nur noch auf der Webseite geupdated werden...

Ähnliche Themen

  1. ENC28J60... keine Reaktion der LED´s
    Von Felix H. im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 4
    Letzter Beitrag: 29.04.2010, 20:49
  2. M32 - Keine Reaktion bei Beispielprogramm
    Von V:X im Forum Robby RP6
    Antworten: 9
    Letzter Beitrag: 09.01.2010, 13:46
  3. Keine Reaktion vom RS232-IR-TRANSCEIVER
    Von bladeboarder im Forum Asuro
    Antworten: 24
    Letzter Beitrag: 08.01.2010, 19:52
  4. Antworten: 11
    Letzter Beitrag: 20.10.2007, 17:07
  5. Asuro- keine Reaktion nach zusammenbau
    Von sony-psp007 im Forum Asuro
    Antworten: 81
    Letzter Beitrag: 26.06.2007, 14:04

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress