www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USB Mikrocontroller von ATMEL


Autor: Gregor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich möchte einen ATMEL AT90USB647 Mikrocontroller mit eingebauten USB 
Controller verwenden um Messwerte von einem meiner Platine auf den PC zu 
übertragen. Nun ist mir beim Ansehen der ATMEL Datenblätter aufgefallen, 
dass es hierbei unterschiedliche Typen gibt:

Der AT90USB646 ist ein USB- Function Mikrocontroller, wohingegen
der AT90USB647, den ich verwenden möchte ein USB- On the Go (OTG) 
Mikrocontroller ist.

Gibt es also einen Unterschied zwischen einem USB- Function und einem 
USB- On the Go Mikrocontroller?

LG Gregor

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
On The Go unterstützt auch noch den Host-Modus. Den braucht man. wenn 
man mit einem Mikrocontroller auch noch USB-Stick oder sowas ansteuern 
will.
PDAs haben solch Controller i.d.R. integriert, da sie einerseits an den 
PC anschließbar sind, um Daten auszutauschen (PDA als USB-Device), 
andererseits kann man häufig irgendwelche USB-Devices an einen PDA 
anschliessen...

Autor: Gregor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort.

Da hätte ich noch eine Frage:

Der USB Controller des AVR benötigt sicher eine Firmware.  Wie sieht es 
hier mit der Auslastung des Controllers durch die Abarbeitung der 
Firmware aus? Der Controller sollte nämlich während des USB 
Datenaustausches auch noch andere Aufgaben (nicht besonders 
rechenintensive) ausführen können.

Autor: Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist kein Thema, Rechenzeit bleibt genug, da der USB-Teil die 
eigentliche Datenübertragung übernimmt. Du schiebst quasi die Daten in 
den Fifo, der Controller versendet Sie dann. Richtig anstrengend ist 
allerdings die Implementierung des USB-Protokolls, wenngleich es auch 
einige mitunter sehr passende Sourcecodes hierfür gibt. Aber das erste 
Da-Ding von Windows, das Dein USB-Gerät akzeptiert hat, motiviert 
ungemein...:-) Viel Spass beim einfräsen.

Autor: Gregor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wird eine Firware die das USB Prokoll implementiert nicht von ATMEL zur 
Verfügung gestellt?

Autor: Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das stimmt. Wenn Du allerdings andere Funktionen benötigst oder mal 
nen Fehler suchen musst, bist Du dem Atmelcode hoffnungslos 
ausgeliefert. Letztlich hilft es ungemein, wenn man versteht, was Atmel 
da programmiert hat. Weiterhin ist der Code nicht für jeden Compiler 
geeignet. Eine Umsetzung birgt ein paar Fehlerquellen und schwups, geht 
nichts mehr.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...und Atmel programmiert teilweise auf seltsame Weise...

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Martin A. (realnameuser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was muss man jetzt nun wirklich tun
um den Controller über USB Programmieren zu können

ich hab z.B. das AT90USB162 USB Entwicklungs-Board hier im shop bestellt
(kann ich jetzt leider nicht mehr im shop finden???)

kann man direkt mit z.B. AVR Studio loslegen ???
(bitte nicht lachen, ich bin absuluter Anfänger)

Autor: Ulrich P. (uprinz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Der USB Code ist in C Programmiert und ist eben genau deswegen etwas 
merkwürdig, weil er mit dem IAR dem Keil und dem gcc compiliert werden 
kann. Außerdem finden sich noch einige Relikte aus einer Implementierung 
für einen 8051er mit USB darin. Es ist hilfreich einen Editor zu haben, 
der Codeteile anhand von #define aus und einblenden kann.

Ich habe aber schon einige Sachen mit dem ATMEl Code gemacht vor allem 
dem einfachsten, dem CDC Device. D.h. der Controller hängt an einem PC 
und simuliert einen COM Port, was bei korrekter Implementation ohne PC 
Seitigen Treiber funktioniert. Das Komplexe bei USB ist nämlich nicht 
der Controller, sondern der Treiber auf der PC Seite.

Wenn Du das CDC Beispiel von ATMEL verwendest hast Du relativ schnell 
verstanden, was Du wo ändern kannst / musst um es Deinen Wünschen 
anzupassen. Schau Dir ggf. einfach bei http://www.usb.org/home die Doku 
an.

Es gibt ein paar Dinge, die ATMEL icht fertig gemacht hat. So werden nur 
die nötigsten Device Informationen beim Anstecken übertragen. Die 
Seriennummer fehlt z.B. was dazu führt, dass beim Wechsel des USB Ports 
am PC immer eine neue COMx Schnittstelle emuliert wird. Um immer auf der 
gleichen Schnittstelle, also COM6 oder so, zu bleiben, muss man diesen 
Teil noch aktivieren.
Es gibt auch Programme, die die Handshake Leitungen benötigen, zumindest 
RTS/CTS und DSR/DTR sollten funktionieren. Das hat ATMEL einfach weg 
gelassen. Ich hatte das in einer Version 1.0.4 von deren CDC Demo mal 
alles eingebaut und man hat mir auch gesagt das zu veröffentlichen. Ist 
aber bis heute nicht geschehen. Also auf Wunsch, kann ich Dir das 
zukommen lassen.

Allerings habe ich bei genau dieser vergleichsweise einfachen Aufgabe 
das meiste gelernt, was für die USB Verwendung auf einem Controller 
nötig ist.

Meine Entwicklungsumgebug ist ein AT90USB1287 und ein AT90USB162 WinAVR 
( AVRgcc) und ein Editor, natürlich kann man bei installiertem WinAVR 
uch das AVRStudio einsetzen, kein Problem nur eine Frage der Vorliebe.

Für das Stöbern in unbekanntem Code hat sich bei mir der SourceInsight 
Editor bewährt. (Nicht billig, Nutzen aber unbezahlbar)

Gruß, Ulrich

Autor: Martin A. (realnameuser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok,
ich möchte eigentlich ohne Umwege den Controller programmieren
WinAVR und AVR Studio hab ich schon runtergeladen

wenn ich's richtig verstanden hab brauch ich also
noch einen Treiber auf der PC Seite  ???

emil: realnameuser(at)web.de

danke

Autor: Ulrich P. (uprinz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jein...

Also, wenn Du den Baustein über USB programmieren willst, dann musst Du 
das Flash-Tool von Atmel installieren. Dieses legt dann ein verzeichnis 
mit der .inf und einer .sys oder/und .dll an.
Steckst Du den AVR dann mit gedrückter HWB Taste oder auf GND gelegter 
HWB Leitung an den USB, dann wird einmalig zur Treiberinstallation 
aufgefordert.
Danach kannst Du das immer wieder machen und der Flasher erkennt den USB 
ebenso, wie der PC.

In Bezug auf Deine eigene Software auf dem USB Chip kommt es darauf an, 
was Du machen willst. Für die in den AMEL Application Notes angegebenen 
Beispiele für Memory, HID und CDC brauchst Du keinen Treiber, sondern 
nur eine .inf Datei, die dem Windows sagt, dass das Device eben eines 
dieser standard Dinger ist, die die Windows eigenen Treiber benutzen 
wollen. D.h. wenn Du mit der Flasher Prozedur vom Anfang meines Textes 
eben das CDC Beispiel geflasht hast und dann reset ohne HWB Leitung 
ausführst, erkennt der PC Deinen AT90USB eben als neues Devivce und 
hätte gerne eine .inf dafür. Die findest Du für jedes Beispiel in den 
jeweiligen Quellcode Unterverzeichnissen. Die gibst Du dem Windows auf 
Anfrage einfach und fertig.

Die INF Datei ist kein Treiber, sondern stellt lediglich die Verbindung 
zwischen einer Vendor- und Product-ID und einem dafür zuständigen 
Treiber seitens Windows her. Da HID, Memory und CDC bereits in Windows 
existieren, reicht die einfache INF.

Gruß, Ulrich

Autor: Martin A. (realnameuser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, pc hat den AT90USB erkannt
(allerdings musste ich zusätzlich den Reset betätigen)

jetzt versuch ich mit dem AVR Studio 4.13 sp2 zu verbinden
->Connect to selected AVR Programmer ->Connection failed

an was kann das liegen?
mach ich was grundsetzliches falsch?

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.