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
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...
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.
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.
Wird eine Firware die das USB Prokoll implementiert nicht von ATMEL zur Verfügung gestellt?
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.
http://www.fourwalledcubicle.com/MyUSB.php http://fourwalledcubicle.com/blog/archives/category/projects/myusb
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)
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
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
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
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?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.