XMega USBsmart setzt aus

  • 1
  • 2
  • 3
  • 4
  • 5
  • Page 3 of 5
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 - 16:27  ·  #17
Quote by miparo

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.


Hallo miparo,
das war keine Absicht, ich wollte es eigentlich nur ändern ;)
Habs geändert ;)

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 - 17:20  ·  #18
Hallo pvs,
also ist der Fall abgeschlossen ?

Quote

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.


Aber lustig war es doch und es hat deine USB Kenntnise vertief :D/

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 - 21:09  ·  #19
Quote by miparo

Hallo pvs,
also ist der Fall abgeschlossen ?

Aber lustig war es doch und es hat deine USB Kenntnise vertief :D/

miparo

Hallo miparo,

ja, das Problem ist abgeschlossen. Aber kannst Du mir noch erklären, warum das 2. EP0 Paket noch vom XMEGA erhalten wird?

Eigentlich sende ich doch nur das ControlRequest $00 value $60 und dann bekomme ich diese Telegram im XMEGA?

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 


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 - 21:34  ·  #20
Hallo pvs,
ich hatte oben ja schon geschrieben, das dein myUSB_ControlRequest so falsch ist.
Es fehlt das äußere case
$C0= Device to Host bzw.
$40= Host to Device was im Sample benutzt wird.

Sieh mein Prog.

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 - 21:48  ·  #21
Quote by miparo

Hallo pvs,
ich hatte oben ja schon geschrieben, das dein myUSB_ControlRequest so falsch ist.
Es fehlt das äußere case
$C0= Device to Host bzw.
$40= Host to Device was im Sample benutzt wird.

Sieh mein Prog.

miparo


Hallo miparo,

ok Danke

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

Re: XMega USBsmart setzt aus

 · 
Posted: 30.09.2014 - 09:05  ·  #22
Hallo miparo,

ich muss Dich noch mal was fragen.
Nach dem das schnelle lesen ja nun ohne Probleme klappt, wollte ich mein Schreiben wieder aktivieren (PC zu XMEGA). Aber es läuft nicht mehr, wurde da was vom Ablauf geändert?

am PC:
Code

 if devOpen then
  begin
         iERR:= usb_bulk_write(ADevice.Handle, $82, dataConfigCPU1, 64, USB_TIMEOUT);
        if iERR < 1 then
        begin
         WriteLog('bulk write 1 failed');
          SDIAppForm.USBInitialize;
           Exit;
        end
       else
        begin
         WriteLog('bulk write 1 ok');

        end;
  end; // Ende wenn dev nicht offen

Egal was ich mache iErr ist immer <1, eigentlich sollte hier da der Wert der gesendeten Daten liegen, sprich 64. Oder?

Am XMEGA hatte ich ein ganz einfaches handling wie folgt:
Code

Process USB_RxTx (32, 256 : iData ); {Stacksize = 128 bytes, Framesize = 128 bytes}
//Procedure USB_CheckRxTx;
Var Count, C: byte;
 InBuffer  : Array[0..31] of WORD;
 OutBuffer : Array[0..59] of Byte;
 iTest,
 xc        : integer;
 testChar  : char;
begin

  if USB_RxDataAvail then
    Count:= USB_RxCount;
     ComLed;
 DebugOut('USB Datenanzahl:'+ ByteToHex( Count ));
// Kennungen XFER USB
//   cmdWrite        : Word = $FFFF; // Schreibbefehl
//   cmdRead         : Word = $0000; // Lesebefehl
//   kenCfgBlock1    : Word = $0001; // Config Block 1
//   kenCfgBlock2    : Word = $0002; // Config Block 2
//   kenCfgBlock3    : Word = $0003; // Config Block 3
//   kenCfgBlock4    : Word = $0004; // Config Block 4
//   kenOnline       : Word = $0F01;
//Structconst
// Cfg1   :   TPVSConfig1;
// Cfg2   :   TPVSConfig2;
// Cfg3   :   TPVSConfig3;
// Cfg4   :   TPVSConfig4;

// ziehe Block in Zwischenspeicher zum prüfen!
copyblock(@rxbuf, @InBuffer, sizeof(rxbuf));

// Prüfe Eingangsblock
if InBuffer[0] = kenCfgBlock1
  then
   if InBuffer[1] = cmdWrite
    then
    // Prüfe ob es einen Unterschied gibt um EEPROM Speicher zu schonen....
     if not CompareBlock(@rxbuf, @Cfg1, sizeof(rxbuf))
      then
        copyblock(@rxbuf, @Cfg1, sizeof(rxbuf));
         DebugOut('CFG1; Änderungen übernommen.');
      endif;
       DebugOut('Cmd: '+IntToStr(InBuffer[1]) +' / Kennung: '+IntToStr(InBuffer[0]));
     endif; // Ende bei Write

elsif InBuffer[0] = kenCfgBlock2
 then
   if InBuffer[1] = cmdWrite
    then
    // Prüfe ob es einen Unterschied gibt um EEPROM Speicher zu schonen....
     if not CompareBlock(@rxbuf, @Cfg1, sizeof(rxbuf))
      then
        copyblock(@rxbuf, @Cfg2, sizeof(rxbuf));
         DebugOut('CFG2; Änderungen übernommen.');
      endif;
       DebugOut('Cmd: '+IntToStr(InBuffer[1]) +' / Kennung: '+IntToStr(InBuffer[0]));
     endif; // Ende bei Write
 endif; // Ende

  USB_RxSetBuf(@RxBuf);            // we need more data ..

endif; // Daten vorhanden ??

end; // Ende der Funktion


Eigentlich bin ich der Meinung, das ich zum schreiben auf dem XMEGA nicht unbedingt vorher ein ControlRequest machen muss. Das hatte vorher ja auch ohne Probleme funktioniert.

Oder muss ich dem XMEGA vorher sagen "...da kommt was...". Das habe ich die ganze Zeit eigentlich nicht gemacht, da der XMEGA in den ersten beiden Worten erkennen kann was es ist.

Oder ich habe mir beim ganzen testen irgendwas an der Function zerschossen :(

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

Re: XMega USBsmart setzt aus

 · 
Posted: 30.09.2014 - 09:50  ·  #23
Hallo pvs,
Ein write auf $82 kann nicht funktionieren, da >$80 eine IN Endpoint Adresse ist. Adressen beziehen sich immer :Host to Device.

Also ein usb_bulk_write(ADevice.Handle, $02, .... wäre richtig.

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

Re: XMega USBsmart setzt aus

 · 
Posted: 30.09.2014 - 16:12  ·  #24
Quote by miparo

Hallo pvs,
Ein write auf $82 kann nicht funktionieren, da >$80 eine IN Endpoint Adresse ist. Adressen beziehen sich immer :Host to Device.

Also ein usb_bulk_write(ADevice.Handle, $02, .... wäre richtig.

Miparo


Hallo miparo,

irgend so was war ja klar :(, wer lesen kann ist klar im Vorteil.
So viel hin und her geändert....naja, hätte ja auch mal die CONST nehmen können, dann klappt das auch mit dem Nachbarn ;)

Code
// USB Endpoint Adressen
  Ep1TxAddrX = $01;
  Ep1RxAddrX = $81;
  Ep2TxAddrX = $02;
  Ep2RxAddrX = $82;

Ich denke das war es schon :) Danke Dir für den Tipp.

Gruß
Thorsten
  • 1
  • 2
  • 3
  • 4
  • 5
  • Page 3 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: 15 · Cache Hits: 14   138   152 · Page-Gen-Time: 0.026012s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI