www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit Custom Board (AVR32UC3B0256)


Autor: Mario K. (shockwaverider)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich habe ein Problem mit einer selbst designten Platine, auf der der 
oben genannte Mikrocontroller implementiert ist. Der interne 
USB-Controller wird per Micro-USB-B Stecker an einen entsprechenden 
WinXP-Host-PC zur Energieversorgung des Boards und zum Flashen des 
Mikrocontrollers verwendet.

Soweit so gut. Ich habe die Fuse-Bits bereits so eingestellt, dass der 
MCU durch Drücken eines entspr. Buttons bei gleichzeitigem Reset in den 
Programmiermodus wechselt, in dem er über BatchISP und AVR32-Studio auch 
problemlos geflasht werden kann.

Ich hatte auch bereits eine kleine Software für das EVK1101 Eval-Board 
erstellt, in der ich über USB-CDC (Virtual COM) eine simple 
Kommunikation mit Hilfe von Hyperterminal etablieren konnte. Nun habe 
ich die Software abgeändert, so dass sie eigentlich auch für das Custom 
Board verwendbar sein müsste.

Nach dem Flashen erkennt WinXP leider die USB-CDC-Verbindung des Custom 
Boards nicht, wie noch im Fall des EVK1101, sondern meldet lediglich 
"Unbekanntes Gerät". Ein anderes simpelstes Programm (LED blinken 
lassen) lies sich allerdings anstandslos in den MCU des Custom Boards 
einprogrammieren und lief dort auch ohne Probleme.

Dazu muss ich noch sagen, dass ich, wie dies in den FAQ's von Atmel 
beschrieben wird, im Verzeichnis /SOFTWARE_FRAMEWORK/BOARDS des Projekts 
ein neues Verzeichnis erstellt und einen eigenen Header userboard.h 
eingefügt habe. Hier drin habe ich FOSC32, FOSC0 und die zugehörigen 
Startup-Zeiten neu definiert. Ich hab mich dabei beim Aufbau an 
evk1101.h orientiert.

Da ich in der Hardware den USB-ID Pin nicht angeschlossen habe, weiß ich 
nicht so recht, was ich bei #define USB_ID und #define USB_VBOF etc. 
schreiben soll. Anschließend habe ich natürlich auch in board.h 
entsprechend auf diesen neuen Header verwiesen.

Hat jemand von euch schon einmal etwas ähnliches im Zusammenhang eines 
Anschlusses eines neu entwickelten AVR32-Boards an den PC über USB-CDC 
erlebt? Muss ich ggf. den Treiber at32uc3xxx_cdc.inf editieren und 
anpassen, damit Windows das Board erkennt?

Ich wäre euch für jede Hilfe bzw. jeden Tipp wirklich sehr dankbar.

Liebe Grüße.

Autor: sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Da ich in der Hardware den USB-ID Pin nicht angeschlossen habe, weiß ich
>nicht so recht, was ich bei #define USB_ID und #define USB_VBOF etc.
>schreiben soll. Anschließend habe ich natürlich auch in board.h
>entsprechend auf diesen neuen Header verwiesen.

Dann solltest du dir mal die entsprechenden Stellen im Datasheet 
anschauen, sonst kann es sein das USB im Host Mode anstatt Device Mode 
startet.

>Muss ich ggf. den Treiber at32uc3xxx_cdc.inf editieren und
>anpassen, damit Windows das Board erkennt?

Wenn du die Vendor und Product ID nicht verändert hast, eigentlich 
nicht.

Mein Tipp währe es sich die Enumerierung eines EVK1101 und deines Boards 
mit einem USB Monitors aufzuzeichen. Danach kannst du beide 
Enumerierungen vergleichen und schauen was sich verändert hat.

Autor: Mario K. (shockwaverider)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo sepp und die anderen,

ich habe mit USBTrace einmal die Vorgänge während des Einsteckens des 
EVK1101 (siehe evk1101.jpg) und des Custom-Boards (customboard.jpg) 
aufgezeichnet. Leider bin ich nicht so bewandert mit dem USB-Protokoll 
bzw. mit der Funktionsweise der Deskriptoren.

Evtl. könntet ihr euch die beiden Screenshots einmal kurz ansehen, und 
mir mitteilen, was eurer Meinung nach im Falle des Anschlusses des 
Customboards schiefläuft. Vielen Dank.

Irgendwie schafft es WinXP im Falle des Customboards nicht den Request 
"GET_DESCRIPTOR_FROM_DEVICE" auszusenden, sondern beginnt stattdessen 
mit dem Request "QUERY_CAPABILITIES". Worauf könnte dies evtl. 
hinweisen? Was meint ihr? Er scheint überhaupt gar nicht erst dazu zu 
kommen den Deskriptor auszulesen, sondern scheitert schon vorher. D.h. 
es würde wahrscheinlich nichts bringen in den Sources 
"usb_descriptors.h(.c)" herumzufuschen, da er ja soweit überhaupt gar 
nicht vordringt, oder?

Ich bin euch für jede Anmerkung dankbar.

Schönen Gruß.

Autor: Mario K. (shockwaverider)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch der USBTrace-Screenshot zum Plugin des Customboards.

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.