XMega USBsmart setzt aus

  • 1
  • 2
  • 3
  • 4
  • 5
  • Page 2 of 5
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: XMega USBsmart setzt aus

 · 
Posted: 17.09.2014 - 13:24  ·  #9
Tja, wir können nur Rätseln, da du kein Win (Teil)Code gepostet hast.

Evtl. liegt es auch an der libusbdyn.pas, wo was mit den Typen vermutlich nicht stimmt.
Aus dem Internet halt.

Läuft es den jetzt mit dem neuen Demo ?

Der USB braucht die 32MHZ um die 48MHz zu erzeugen und die DFFL dazu, zum kalibrieren.
Die 2MHz sind ja keine Einschränkung, einfach PLLMUL = bis 31 und dann hast du auch die 62 MHz.
Was auch funktioniert. Dein Problem liegt aber nicht am Speed.

miparo
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: XMega USBsmart setzt aus

 · 
Posted: 18.09.2014 - 12:49  ·  #10
Quote by miparo

Läuft es den jetzt mit dem neuen Demo ?

Hallo miparo,

leider nein, habe aber noch nicht genauer Deinen Code ansehen können.
Nur kurzer Test gemacht:

1. Dein XMEGA Programm übersetzt und eingespielt.
2. INF Datei/Treiber mit AVRCO erzeugt und installiert
3. Programm gestartet....

Hier kommt immer Can't open Device..

Ich schaue mal in den nächsten Abenden etwas genauer in Deinen Code, vielleicht muss ich noch was für mich anpassen.

Aber auf dem ersten Blick sehen Deine Anpassungen SEHR GUT aus :3some:

Gruß
Thorsten
Attachments
USB XMEGA PID/VID
Filename: USBTest1.jpg
Filesize: 63.33 KB
Title: USB XMEGA PID/VID
Information: USB XMEGA PID/VID
Download counter: 98
USBFehler
Filename: USBTest2.jpg
Filesize: 37.93 KB
Title: USBFehler
Information: USBFehler
Download counter: 107
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: XMega USBsmart setzt aus

 · 
Posted: 18.09.2014 - 16:40  ·  #11
Hi,
da sind doch zwei Edit's , wo du nur Deine VID/PID hättest eintragen müssen, statt ein neues inf zu generieren und installieren.
Ich installiere nie immer einen neuen Treiber, ist auch unnütz.
Zum testen haben die immer die gleiche VID/PID.
Und das Prog. habe ich nur unter D2007 getestet.Werde es gleich nochmal mit XE6 compilieren.

Einfach mal mein Exe nehmen.


miparo
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: XMega USBsmart setzt aus

 · 
Posted: 18.09.2014 - 20:37  ·  #12
Hallo miparo.
Quote by miparo

Hi,
da sind doch zwei Edit's , wo du nur Deine VID/PID hättest eintragen müssen, statt ein neues inf zu generieren und installieren.

Hatte ich probiert, da es nicht geklappt hat, habe ich mal das XMEGA Projekt von Dir genommen einschließlich der PID/VID, wollte es halt mal mit Deinen Einstellungen testen.

Mit Deiner Exe, meinem XMEGA-Programm und mit Deinen angegebenen PID/VID läuft es.
Habe aber auch hier immer wieder TimeOuts. ich muss jetzt erst mal die ganzen Anpassungen (vom testen) rückgängig machen. Mache ich wahrscheinlich am Samstag :)

Quote by miparo

Und das Prog. habe ich nur unter D2007 getestet.Werde es gleich nochmal mit XE6 compilieren.

Einfach mal mein Exe nehmen.

Ich habe es unter Delphi 2010 getestet, die XEx Reihe habe ich noch gar nicht getestet.

Gruß
Thorsten
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: XMega USBsmart setzt aus

 · 
Posted: 18.09.2014 - 21:57  ·  #13
und libusb_1.2.6 installiert ?
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: XMega USBsmart setzt aus

 · 
Posted: 19.09.2014 - 03:34  ·  #14
Hallo pvs,
das "can't open device" war ein Fehler von mir, da d noch Char in der libusb rum lümmelten, so das es im Unicode Compiler nicht lief.
Habe es aber jetzt unter XE getestet und läuft einwandfrei.

Zusätzlich habe ich das smartUSBtest_PC und Xmega Prog. noch etwas erweitert.
Hier wird jetzt im Process noch der SHT20 Temperatur Sensor, per I2C gelesen + etwas Fix64 Math, also jede Menge zu tun.
Auf der PC Seite wird dann noch der txCounter verglichen, ob auch das richtige Paket angekommen ist.
Wie man im USB Log sieht, vergehen da auch nur ein paar Millisekunden.
Aber: Selber Dame gleiche Spiel. Null Timeouts.
Evtl. hast du da noch einen alten 8086 am laufen :D

Update im Post oben.

miparo
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: XMega USBsmart setzt aus

 · 
Posted: 21.09.2014 - 10:44  ·  #15
Hallo miparo,

war mit dem Update auf 1.2.6 etwas tricky, Windows hat immer wieder den 1.2.2 aus seinem System gezogen (obwohl ich den Treiber im Gerätemanager gelöscht habe :( ). Erst als ich per Hand den Suchpfad für den Treiber auf das richtige Verzeichnis gesetzt habe hat er die Version 1.2.6 gezogen :aerger:

Hast Du was am USB-Smart geändert?`
Ich verstehe hier etwas nicht mehr ganz:

1. Wenn ich richtig verstanden habe, hast Du die RequestTypes im LibUSB festgelegt und überträgst
die eigentlichen Befehle an das Device mit dem value.
Code
USBdevWrite(ADevice, USB_RECIP_DEVICE, $60, 1, 0)

Das ist für mich einleuchtend, ist das ein ZWANG von USB-Standard, dies so zu machen?

Mein Device erhält dann:
Code
000001: Vendor-Specific Request (DOWN), 21.09.2014 10:51:58.046 +4.643 (1. Device: PVS2014-CPU)
Destination: Device
Reserved Bits: 0
Request: 0x0
Value: 0x60
Send 0x0 bytes to the device

Das ist soweit klar.

Dann antwortet das Device (wahrscheinlich als ACKN gemeint:
Code
000002: Control Transfer (UP), 21.09.2014 10:51:58.082 +0.036. (1. Device: PVS2014-CPU) Status: 0x00000000
Pipe Handle: Control Pipe
Setup Packet
 40 00 60 00 01 00 00 00                           @.`.....
Recipient: Device
Request Type: Vendor
Direction: Host->Device
Request: 0x0 (Unknown)
Value: 0x60
Index: 0x1
Length: 0x0


Aber warum taucht die Antwort in meinem Empfangsspeicher EP0 ControlRequestvom USBsmart dann auf?
Code
USBreq1:$40
USBreq2:$40 unbekannt


Der ControlRequestTask erhält nun 1 EP0 Request, die kommen aber nicht vom Device (lt. USB Analyser), sondern vom USBsmart selbst, diese werden nicht über das USB-Interface empfangen sondern nur gesendet.
Die $40 könnte vom Ackn kommen, aber warum landen diese in dem Empfang EP0 beim XMEGA, oder habe ich einen Denkfehler?

Hier meine Routine vom ControlRequest
Code
Function myUSB_ControlRequest(bRequest : Byte; wValue : word) : boolean;
// need always answer from device
Var
  b : byte;
begin
  Header:= USB_ReadHeader;
   DebugOut('USBreq1:$'+ ByteToHex( Header.bmRequestType ));

  Case Header.bmRequestType Of
    $0:
      Case wValue Of // Host to Dev
          $00 : // do a real RESET
               USB_ControlSend(nil, 0);
               DebugOut('USBcmd:$'+ ByteToHex( bRequest ));
               mDelay(100);
               USB_Detach;
               mDelay(500);
               HardWareReset;
               USB_ControlSend(NIL, 0);  // send back ACK
               Return(True);
            |
           $20 : // write to a Port
//          PortF:= Lo(wValue);
               USB_ControlSend(nil, 0);  // ACK the request
               DebugOut('USBcmd:$'+ ByteToHex( bRequest ));
               Return(True);
            |
           $30 : // Read a Port
               b:= $F;
               //  b:= PinF;
               USB_ControlSend(@b, 1);  // send back ACK and PortF status
               DebugOut('USBcmd:$'+ ByteToHex( bRequest ));
               Return(True);
            |
           $40 : // do Beep
               USB_ControlSend(NIL, 0);  // send back ACK
               DebugOut('USBcmd:$'+ ByteToHex( bRequest ));
               Return(True);
            |
           $60 : // empfange Config
               USB_ControlSend(NIL, 0);  // send back ACK
               DebugOut('USBcmd:$'+ ByteToHex( bRequest ));
               usbAct:= $60;
               Return(True);
            |
           Else
               USB_ControlSend(Nil, 0);              // unknown vendor request, do an ACK
               DebugOut('USBcmd:$'+ ByteToHex( bRequest )+' unbekannt');
               return(true);
          Endcase;
      |
     Else
       USB_ControlSend(Nil, 0);              // unknown vendor request, do an ACK
       DebugOut('USBreq1:$'+ ByteToHex( Header.bmRequestType )+' unbekannt');
       return(true);
     Endcase;

end;

Jedenfalls sind die Timeouts weg, ohne das ich noch was an meinen Tasks oder XMEGA Abläufen ändern musste :)

Und auch wenn ihr das lustig gefunden habt, ich konnte es nachvollziehen, immer wenn der Rechner größere Dateien geladen hatte, z.B. aus Netzwerk oder auch EXCEL. Kam sofort der Timeout auf dem XMEGA. Und es ist KEIN 8086 sondern auf 2 Rechnern das gleiche QuadCore 3,3GHz 16Gbyte RAM und 64Bit Windows.
Aber egal Hauptsache es läuft jetzt, Danke.

Gruß
Thorsten
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: XMega USBsmart setzt aus

 · 
Posted: 21.09.2014 - 15:57  ·  #16
Hallo pvs,
Quote

Jedenfalls sind die Timeouts weg, ohne das ich noch was an meinen Tasks oder XMEGA Abläufen ändern musste :)

Und auch wenn ihr das lustig gefunden habt, ich konnte es nachvollziehen, immer wenn der Rechner größere Dateien geladen hatte, z.B. aus Netzwerk oder auch EXCEL. Kam sofort der Timeout auf dem XMEGA. Und es ist KEIN 8086 sondern auf 2 Rechnern das gleiche QuadCore 3,3GHz 16Gbyte RAM und 64Bit Windows.
Aber egal Hauptsache es läuft jetzt, Danke.



Im ControlRquest fehlt dir die Entscheidung, ob es ein IN oder OUT Request ist.
Kann später mal zu Problemen führen.
Welche Parameter man benutzt, ob value oder Index,bleibt dem User überlassen.
Und DebugStr und solche Sachen sind problematisch.
So kurz wie möglich halten.
In dem Log unten sieht man den USBdevWrite(ADevice, USB_RECIP_DEVICE, $60, 1, 0) und das
anschließende USB_ControlSend(nil, 0) ACK sehr schön.


Also lag es am alten libusb Treiber 1.2.2 , da wir am usmSmart nichts geändert haben?

Bitte keine doppel Zitate, du weisst doch was du vorher geschrieben hast.
Das lässt sich schlecht lesen und dein Post ist jetzt ins Zitat gerutsch.


miparo
  • 1
  • 2
  • 3
  • 4
  • 5
  • Page 2 of 5
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 16 · Cache Hits: 15   138   153 · Page-Gen-Time: 0.024356s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI