USBport

  • 1
  • 2
  • Page 1 of 2
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

USBport

 · 
Posted: 26.05.2016 - 13:33  ·  #1
Hallo,
es sind jetzt einige Wochen (Monate her) als ich den neuen USB Treiber in Betrieb genommen hatte.
Miparo war so freundlich und hatte mir damals den USBport Treiber zum testen gegeben.
Das ging auch 1A.

Jetzt versuche ich den neuen USB Teiber einzubinden.
Aber es gibt jetzt Probleme... Der treiber wird nach genau 1,05 min Aktiv.
Wenn ich das Kabel stecke.?
Ich habe mir extra 2 LED eingelötet. ich zeig euch am besten mal mein Code,
vllt hat jmd vo euch eine Idee was das ist. Wie gesagt, alle 1,05 min wird der Teiber Aktiv.
Dann geht LEd2 an.


Code

Device = xmega256A3U, VCC=3.3;
{ $BOOTRST $20000}         {Reset Jump to $20000}

Define_Fuses
  Override_Fuses;
  NoteBook   = A;
  COMport    = USB;
  LockBits0  = [];
  FuseBits0  = [];
  FuseBits1  = [];
  FuseBits2  = [];
  ProgMode   = PDI;
FuseBits5  = [BODLEVEL1, BODLEVEL2, BODACT0];
Import SysTick,  USBport,  TickTimer  SerPortE0, SLIPportE1, SLIPportC0, SerPortD0, Fat16_32;

  USBmanufact             = 'E-Lab Computers';       // max 31 bytes
  USBprodName             = 'xMiniUSBApp';           // "     "
  USBpid                  = 30;
  USBvid                  = $9124;
  USBprodRel              = 201;
  USBcurrent              = 200;
  USBsernum               = 2143;  // Product serial number
  USBendPoints            = 1;                     // 1..6  TX/RX paare
//  USBvBUS                 = PortD.5;           // 

  uses uXmega_USB, uUSBIO, uFAT16_32, uFix64;
Implementation



Code

{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
  TickTimerStop;    //Brauche ich für meine App.
  InitPorts;
  EnableInts($87);
..
...
    xUSB_UserVendorRequest(@xUSB_VendorRequest); 
    xUSB_Enable;                                                   
 loop

    USBdataAvail:= false;
    HostFailed:= false;
    xUSB_Attach;
    while (not UsbDriverConnect)   do
      mDelay(300);
      incl(Led1);                   
    endwhile;             //Hier gehts erst nach 1,05 min raus.???????????????????????????

    excl(Led1);

                                                                                                            // wait for Windows Setconfiguration
    xUSB_RXsetBuffer(1, @USB_Rx_Receive, @RXbuf, 512);   // Link RX Event
    while UsbDriverConnect  do
      MainLoop;                         //<- so wie in dem Demo XMega_USBport
    endwhile;
    HostFailed:= true;
    xUSB_Detach;




Nach dem Einschalten muss ich immer 1.05 min warten, danach kann ich mit mein Delphi Tool
Kontakt auf nehmen.


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

Re: USBport

 · 
Posted: 27.05.2016 - 14:17  ·  #2
Hallo Frank,

und wo ist das
Code
   USB_SetControlCallback(@myUSB_ControlRequest);
   USB_init(@buffer);
   // und das
   repeat
   until USBDEV_State = UsbDev_STATE_Configured;
rolf
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

Re: USBport

 · 
Posted: 27.05.2016 - 14:58  ·  #3
Hallo Rolf,
ich habe mich genau an das Demo XMega_USBport gehalten.
Da ist es nicht drin.


Dein Demo sollte ja eine Grundlage für USB sein.
Siehe selbst.

Code

(***********************************************)
(* This is a simple demo program which shows   *)
(* how a high speed, high volume PC connection *)
(* can be constructed. More complex than the   *)
(* SmartUSB driver type                        *)
(***********************************************)

program xUSBPort; 

{ $NOSHADOW}
{ $WG}                     {global Warnings off} 

Device = xmega256A3U, VCC = 3.3; 

define_fuses
  Override_Fuses; 
  NoteBook                = D; 
  COMport                 = USB; 
  LockBits0               = []; 
  FuseBits0               = []; 
  FuseBits1               = []; 
  FuseBits2               = []; 
  // Brown-out is obligatory with USB !!! 
  FuseBits5               = [BODACT0, BodLevel0, {BodLevel1,} BodLevel2]; 
  
import SysTick, 
       SerPortC0, 
       USBport, 
       BeepPort; 

from System import Processes, Tasks; 

define
  // XMega USB must use the internal 32MHz OSC. So the system must use the 2MHz OSC 
  OSCtype                 = int2MHz, 
                            PLLmul = 16, 
                            prescB = 1, 
                            prescC = 1; 
  SysTick                 = 10;                 // msec 
  StackSize               = $0228, iData; 
  FrameSize               = $0370, iData; 
  
  // optional 
  Scheduler               = iData; 
  TaskStack               = $80, iData; 
  TaskFrame               = $100; 
  IDATA1                  = $5FC0; 
  
  
  USBmanufact             = 'E-Lab Computers';       // max 31 bytes 
  USBprodName             = 'xMiniUSBApp';           // "     " 
  USBpid                  = 30; 
  USBvid                  = $9125;                   // user provided 
  USBprodRel              = 201;                     // user provided 
  USBcurrent              = 200; 
  USBendPoints            = 1;                       // 1..6  TX/RX paare
  //USBvBUS                 = PortB.7;               // port and pin
  
  BeepPort                = PortR, 0; 
  SerPortC0               = 115200; 
  RxBufferC0              = 40, iData; 
  TxBufferC0              = 100, iData; 
  
uses uXmega_USB, uUSBIO;     // uUSBio contains some helpful functions

implementation

{$IDATA}

{------------------------------------------------------------------------------}
{ Type Declarations } 
type
  
{--------------------------------------------------------------} 
{ Const Declarations } 
const
  
{--------------------------------------------------------------} 
{ Var Declarations } 
{$IDATA}
var
  Header                  : TUserSetupProc; 
  LED[@PortR.1]           : bit; 
  TxBuffer                : array[512] of byte; 
  
{--------------------------------------------------------------} 
procedure SendFiledata; 
begin
  loop
    TxBlock(@TxBuffer, 512); 
  endloop; 
end; 

{--------------------------------------------------------------} 
//  User function to receive EP0 ControlRequests from Host 
{$VALIDATE $}
{-----------------------------------------------------------------------------}
function xUSB_VendorRequest(const Req : tUSB_SetupReq) : boolean; 
var
  ret   : boolean; 
  b     : byte; 
begin
  ret:= false; 
  case Req.bmRequestType of 
    $C0 : 
          case Req.bRequest of   // Device to Host 
            
          endcase; 
        |
    $40 : 
          case Req.bRequest of   // Host to Device 
            0 : 
              |
            1 : 
                if Req.wLength > 0 then 
                  return(true); 
                else 
                  //EP1 stall 
                  if Req.wLength = 0 then 
                    xUSB_Detach; 
                    mDelay(100); 
                    HardWareReset; 
                    return(true); 
                  endif; 
                endif; 
              |
          else 
            ret:= true; 
          endcase; 
        |
  endcase; 
  return(ret); 
end; 

{--------------------------------------------------------------} 
procedure MainLoop; 
var
  ch   : char; 
begin
  repeat
    if USBdataAvail then 
      HostCmd:= RxCmd; 
      ch:= HostCmd.cmd; 
      case HostCmd.typ of 
        CTRLcmd : 
                 // here your comands from PC are received
                  if ch = 'S' then 
                    Writeln(SerOutC0, 'Senddata'); 
                    mDelay(50); 
                    SendFiledata(); 
                  endif; 
                 // .... 
                |
      else 
        Writeln(SerOutC0, 'Unknown cmd'); 
        TXchar('?'); 
      endcase; 
    endif; 
  until (not UsbDriverConnect) {or (not USBvBUS.USBvBUSpin)} ; 
end; 

{--------------------------------------------------------------} 
{ Main Program } 
{$IDATA}
begin
  DDRR:= DDRR or $02;                          // LED
  Incl(PortR.1);                               // EVAL Board LED active low 
  EnableInts($87);                             // mandory for USB_ControlJob

  xUSB_UserVendorRequest(@xUSB_VendorRequest); // optional, if you need it! 

  xUSB_Enable;                                 // Attach USB and connect RxBuf for FIRST RX INT
  loop
    USBdataAvail:= false; 
    HostFailed:= false; 
    xUSB_Attach; 
    while (not UsbDriverConnect) {or (not USBvBUS.USBvBUSpin)}  do 
      Toggle(LED); 
      mDelay(300); 
      BeepClick; 
    endwhile;
                                       // wait for Windows Setconfiguration
    xUSB_RXsetBuffer(1, @USB_Rx_Receive, @RXbuf, 512);   // Link RX Event 
    while UsbDriverConnect {and USBvBUS.USBvBUSpin}  do
      MainLoop; 
    endwhile; 
    HostFailed:= true; 
    xUSB_Detach; 
  endloop; 
end xUSBPort.

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

Re: USBport

 · 
Posted: 27.05.2016 - 17:43  ·  #4
Hallo Frank,

dann schaue bitte mal in

XMega_USBsmart
XMega_USBsmart2

rein. Das sind die relevanten Beispiele.

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

Re: USBport

 · 
Posted: 31.05.2016 - 14:45  ·  #5
Hallo Frank,

hier mein USB Init in einer laufenden App:
Code
  
  procedure USB_Rx_Receive(Status : tUSBep_Status; nb_transfered : word); 
.....
  EnableInts($87); 
  SysLEDon(0);
  xUSB_UserVendorRequest(@USB_VendorRequest); 
  xUSB_Enable; 
  xUSB_Attach; 
  while (not UsbDriverConnect) do 
    SysLEDflashOn(1); 
    mDelay(300); 
  endwhile;                                             // wait for Windows Setconfiguration 
  xUSB_RXsetBuffer(1, @USB_Rx_Receive, @RXbuf, 1023);   // Link RX Event 

rolf
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

Re: USBport

 · 
Posted: 31.05.2016 - 17:24  ·  #6
Oh Danke Rolf, das werde ich morgen mal einbauen.

Rolf eine Frage an dich was ich unbedingt wissen muss.
In wie weit ist ein Xmega mit dem USB Port beschäftigt wenn keine Daten gesendet oder Empfangen wird. Ich sehe auf mein Oszi das alle 1000Hz auf den Empfangs-Sende Leitungen gequatscht wird. :-)

Hintergrund..
in meinem Xmega ist ein G-Code Parser drin, wenn ich am Steppen bin möchte ich auf
Deutsch gesagt "nicht gestört werden". Weil dieser Xmega auch die Rampen berechnet.

Bin wirklich am überlegen ob ich eine einfache RS232 einbaue.


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

Re: USBport

 · 
Posted: 31.05.2016 - 18:05  ·  #7
Hallo Frank,

da musst Du Bill Gates fragen. Der pollt nämlich kontinuierlich alle aktiven USB Ports.
Soweit ich weiss handelt der XMega USB das alles im Hintergrund ab solange das
keine relevanten Daten sind.

Und wenn das Steppen mit Timer Interrupts erfolgt ist da nichts zu befürchten.
Unser Fräser für die Prommer Gehäuse läuft da im Timer Interrupt und der PC
fragt laufend über USB die aktuellen Koordinaten ab. Null Problemo.

rolf
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

Re: USBport

 · 
Posted: 31.05.2016 - 18:55  ·  #8
Danke Rolf, genau das wollte ich wissen, dann kann ich sie doch einbauen,
weil ich hatte echt Angst das mir die USB beim Steppen mit Timer interrupt
auf die Finger haut. PC brauche ich nicht (will ich auch gar nicht) möchte alles
von MMC Card machen. und damit ich sehe wo ich gerade bin habe ich mir so einen kleinen
xmega gesetzt der STEP DIR überwacht und anzeigt.
Ich hoffe das ich bald mein neues TFT bekomme, damit ich euren neuen Treiber testen kann :-)

Habe zwar noch keine Z-Achse, aber zur Not macht es auch ein Stift das man sieht
wie die Ausgabe wird. Wenn es nicht stört, würde ich gerne mal zwei Bilder posten.
G02 und G03 stehen auch seit 2 Tagen. :-)
ist nur ne ganz kleine Fräse, die reicht mir.


Gruß Frank
Attachments
USBport
Filename: F1.jpg
Filesize: 102.06 KB
Title:
Download counter: 105
USBport
Filename: F2.jpg
Filesize: 84.03 KB
Title:
Download counter: 101
  • 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: 16 · Cache Hits: 15   143   158 · Page-Gen-Time: 0.040777s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI