xmega usb

  • 1
  • 2
  • Page 1 of 2
Dieter
 
Avatar
 
Subject:

xmega usb

 · 
Posted: 29.07.2012 - 22:07  ·  #1
Hallo zusammen !
Es geht um AVRCO USB Treiber für Xmega Devices

was besagt der
Define USBvBus Portx.x // ein Port muss angegeben werden none nicht zulässig.

Es hat sicher mit extern/intern Speisung über USB zu tun.
=> Hat jemand ein Schaltungsbeispiel ?

Dieter
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: xmega usb

 · 
Posted: 29.07.2012 - 22:37  ·  #2
Hallo Dieter,

bevor der Treiber Kontakt mit dem Host aufnehmen kann, muss sichergestellt sein dass der Host angeschlossen ist, d.h. der Host liefert seine 5V an der Buchse. Theoretisch könnte man darauf verzichten. Hätte aber sicher ein paar unangenehme Folgen.
Die Mega AVRs haben für diesen Zweck einen festen Pin definiert. Beim XMega liegt das in der Verantwortung des Users bzw. der Applikation

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

Re: xmega usb

 · 
Posted: 30.07.2012 - 14:52  ·  #3
Hallo Dieter,
wobei hier
Define USBvBus Portx.x // ein Port muss angegeben werden none nicht zulässig.
ein None noch zu überlegen wäre.

VBUS ist ja nur erforderlich sollte das Gerät auch Portable sein.
Ansonsten ist VBUS nicht umbedingt nötig.
Hier kannst Du auch mit
Code

  repeat
  until USBDEV_State = UsbDev_STATE_Configured;

warten ob das Device angestöpstelt wurde.
Das kommt nur wenn Windows den USB Treiber geladen hat und Setconfiguration aufgerufen wurde.
Der ganze Aufwand ist nur nötig da beim ersten Connect ja der EPOUT = RXbuffer neu verlinkt werden muss. Da der USB beim anstecken erst ein USB Reset macht und hier nur der Control Endpoint EP0 automatisch initialisiert wird.
Ohne einen gültigen RX Buffer bleibt der Xmega USB im Idle und es wird nichts empfangen.

Man kann sich das auch einfacher machen und Du sendest als erstes aus Deinen Host Prog einen Control Request womit Du dein Device neu initialisierst.

Code

  Windows:
  usb_control_msg(SelectedDev.hDev, USB_TYPE_VENDOR or USB_RECIP_DEVICE or USB_ENDPOINT_OUT, request, value, index,
    nil, 0, 2000);


Code



Var
  Header         : tUSB_Request_Header;

{$Validate $}
Function myUSB_ControlRequest(bRequest : Byte; wValue : word) : boolean;
begin
  Header:= USB_ReadHeader;
  case Header.bmRequestType of
  1 : if Header.wLength > 0 then
                  b:= $00;
                  USB_ControlSend(@b, 1); // irgendwas zum Host senden
                  return(true);
                endif;
              |
  $40 : case bRequest of   // Host to Dev
            0 :USB_ControlSend(nil, 0); 
                USB_RxSetBuf(@RxBuf);  // mein Device Init RX Buffer
                return(true);
              |
          1 : if Header.wLength > 0 then  // oder Board reset
                  USB_ControlSend(nil, 0);
                  mDelay(100);
                  HardWareReset;
                endif;
              |
   endcase;
end;




Gruß
miparo
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: xmega usb

 · 
Posted: 30.07.2012 - 19:32  ·  #4
@all,
this
Define USBvBus Portx.x
is still necessary but with the next update a "NONE" instead of a port is also valid.

rolf
Dieter
 
Avatar
 
Subject:

Re: xmega usb

 · 
Posted: 30.07.2012 - 19:54  ·  #5
Hallo miparo
danke für deine schnelle antwort.
habe ein wenig gegoogelt und gesehen, dass einige boards
ohne einen extra pin auskommen ( zb. A3BU_XPLAINED-Bord) => und auch mit Windows -Treiber
klarkommen.
wäre super, wenn ihr das integrieren könntet (die beine werden knapp)

ein demo-programm ist ja wohl obligatorisch !

noch eine frage zum schluss :
wie macht ihr das mit den 5 Volt am vbus pin (Xmega nur 3,6 Volt max zulässsig)
mit einem spannungsteiler oder nur vorwiderstand ?

eure bewährten und von mir sehr geschätzten schaltungsbeispiele sind sehr selten geworden.

gruss dieter
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: xmega usb

 · 
Posted: 30.07.2012 - 20:34  ·  #6
Hallo Dieter,
VBUS hat ja schon seine Berechtigung um das abklemmen vom Host zu erkennen.
Im USBsmart gibt aber aus Platzgründen nicht alle Funktionen wie im kommenden großen USB Treiber. Hier ging es primär im die Codegröße.
Der Kleine war haupsächlich als "Boot"Loader gedacht und für kleinere Application.
Beim Kleinen führen halt viele Wege nach Rom.
Das fängt schon mit dem USB_ControlJob an. Der ist der Übersicht halber im Loop drin.
Eleganter geht das mit einem Task.
Aber ein Demo Prog soll ja immer so einfach wie möglich sein.
Das XMega_USBsmart Demo enthält ja alles wesentliche.

Sollte am USB Port nur der XMega hängen langt hier eine Z-Diode oder ein kleiner LF33/TS2940 wobei nicht alle USB Ports immer die 5V erreichen.

Gruß
miparo
Dieter
 
Avatar
 
Subject:

Re: xmega usb

 · 
Posted: 30.07.2012 - 21:29  ·  #7
das geht ja ratz fatz hier, mit den antworten................
..danke miparo sollte keine kritik sein...

mit vbus pin habe ich den meldeeingang portx.x usbvbus gemeint nicht die versorgung der schaltung.
habe mich ein bischen undeutlich ausgedrückt sorry.

gruss dieter
und danke noch mal
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: xmega usb

 · 
Posted: 30.07.2012 - 21:41  ·  #8
Quote by Dieter

das geht ja ratz fatz hier, mit den antworten................
..danke miparo sollte keine kritik sein...

Habe ich auch nicht so gesehen. 8-)


Quote by Dieter

mit vbus pin habe ich den meldeeingang portx.x usbvbus gemeint nicht die versorgung der schaltung.
habe mich ein bischen undeutlich ausgedrückt sorry.

gruss dieter
und danke noch mal


Klar.
Ich wollte nur anmerken wozu man den VBUS Pin gebrauchen "kann".

Grüße
  • 1
  • 2
  • Page 1 of 2
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   135   149 · Page-Gen-Time: 0.038919s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI