mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USB ATMEL - device erkannt, schreibt nicht raus


Autor: Alexander Poddey (alexatmikro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
ich experimentiere gerade mit den USB-devices, die bei den AT91xxx mit 
onboard sind (in meinem Fall: AT91SAM7x256).

Ich gehe nach der Application Note 'AT91 USB CDC Driver Implementation' 
vor, habe den code in meine Anwendung übernommen, kompiliert, geflashed.

Das USB-device wird vom kernel gesehen (/var/log/messages):

kernel: [99854.452041] usb 1-2: new full speed USB device using uhci_hcd 
and address 114
kernel: [99854.627426] usb 1-2: configuration #1 chosen from 1 choice
kernel: [99854.631041] usb 1-2: New USB device found, idVendor=03eb, 
idProduct=6119
kernel: [99854.631057] usb 1-2: New USB device strings: Mfr=0, 
Product=1, SerialNumber=0
kernel: [99854.631065] usb 1-2: Product: AT91USBSerial

eigentlich sollte ich dann einen virtuellen COM pert (/dev/ttyUSBx) 
sehen. Ist aber nicht so.
Ein händisches
>modprobe usbserial vendor=0x03EB product=0x6119
wie von ATMEL empfohlen ändert daran auch nichts.

>lsmod | grep -i usbserial zeigt:
usbserial              26472  2 ftdi_sio,pl2303

pl2303 ist mein 'hardware' usb-serial adapter.

Wenn ich den einstecke sieht die meldung so aus:

kernel: [102659.716045] usb 2-1: new full speed USB device using 
uhci_hcd and address 45
kernel: [102659.870796] usb 2-1: configuration #1 chosen from 1 choice
kernel: [102659.874804] pl2303 2-1:1.0: pl2303 converter detected
kernel: [102659.891140] usb 2-1: pl2303 converter now attached to 
ttyUSB0
kernel: [102659.891524] usb 2-1: New USB device found, idVendor=067b, 
idProduct=2303
kernel: [102659.891533] usb 2-1: New USB device strings: Mfr=0, 
Product=0, SerialNumber=0

Interessant ist die 3. Zeile 'now attached to ttyUSB0'. Das fehlt beim 
AT91. Was mache ich verkehrt?


Alex

Autor: Alexander Poddey (alexatmikro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
seitens Mikrocontroller:

der ganze USB-startup code läuft, auch der connect:
      //=== Device is not configured
      if (USBD_GetState() < USBD_STATE_CONFIGURED){

  USBD_Connect();
  while (USBD_GetState() < USBD_STATE_CONFIGURED);
      }

der erste write auf das USBDevice
CDCDSerialDriver_Write(usb_dbuff, DATABUFFERSIZE, 0, 0);

kehrt mit USBD_STATUS_SUCCESS zurück.

Alle weiteren write-Versuche melden USBD_STATUS_LOCKED -  das device 
nimmt die ersten Daten an, wird sie dann wohl aber nicht los.

Was stimmt hier nicht?

Autor: Benjamin S. (recycler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst nicht aktiv schreiben, die Daten muss der USB-Treiber 
anfordern. Und nur dann darfst du was in den Puffer legen :)
Hast du den Beispielcode 1:1 kopiert oder selber was 
zusammenprogrammiert?
Nutzt du die richtigen Endpunkte?

Autor: Alexander Poddey (alexatmikro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe den Beispielcode im wesentlichen übernommen (das ist eine 
Beispielanwendung, welche vom USART liest und auf USB rausschreibt also 
einen serial2USB converter nachbildet).

Ich habe lediglich den USART 'abgehängt'.
Der code läuft so, daß wenn Daten vom USART gelesen wurden (in Puffer), 
diese Daten dann über
CDCDSerialDriver_Write(usb_dbuff, DATABUFFERSIZE, 0, 0);
per USB an den PC überträgt.

Insofern verstehe ich
>Du kannst nicht aktiv schreiben, die Daten muss der USB-Treiber
>anfordern.

nicht.

Soweit ich das verstanden (und bei anderen USB2serial) devices gesehen 
habe müßte der AT91USB chip mit dem ATMEL code PC-seitig vom Treiber 
USBserial erkannt und als /dev/ttyUSBx angebunden werden. Und das 
passiert eben nicht obwohl im ATMEL howto so beschrieben.

Gruß
Alex

Autor: Alexander Poddey (alexatmikro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.