Hallo, nach einigen Stunden suchen im Internet, durchstöbern des Datasheets vom Controller... irgendwie habe ich gerade einen leichten Tiefpunkt :( Mit µC Programmierung in C habe ich keine Schwierigkeiten, da bin ich realtiv fit drin. Doch jetzt wollte ich mcih mal etwas weiterbilden und was neues ausprobieren :) Doch leider scheitert es hier... Was ich habe/machen möchte. Ich habe mir das Entwicklungsboard mit dem AT90USB162 gekauft und würde damit gerne etwas rumspielen. Zunächst: Nein, ich nehme keinen FTDI Chip ;) Mit COM-Schnittstellen habe ich aus Visual Basic herraus schon gearbeitet, jetzt will ich mich an USB herrantrauen. Leider gibt es auf diesem Gebiet wirklich nicht sehr viele Informationen im Internet. Eigentlich habe ich Fragen zum gesamten Thema AT90USB und die USB Verbindung. Über Links würde ich mich sehr freuen, ebenso auch über Antworten ;) Ist es zum Beispiel machbar, dass ich die vorhandene USB Schnittstelle von dem Controller verwende, und darüber auf der UART Schnittstelle was wegschicke? Also sprich: Ich habe zum Beispiel ein µC mit 2 UART Schnittstellen. Die eine Schnittstelle nutze ich dazu, um mit dem PC/Software zu kommunizieren. Mit Hilfe der Software schicke ich auf den µC Daten, die er auf der UART2 wieder herrauschickt. Ich hoffe ihr versteht was ich meine... Jetzt könnte ich natürlich vor der einen UART1 Schnittstelle einfach einen FTDI Chip vorsetzen, der mir aus einer USB einen virtuellen Comport zaubert, und damit hätte ich das Problem gelöst. Aber ist es möglich, den AT90USB per USB anzusprechen via einer Software und damit die UART Schnittstelle zu steuern? Sozusagen das UDR der UART Schnittstelle per USB zu beschreiben ;) Ist das möglich?? Ich weiß, ziemlich verwirrend geschrieben ;) Vielen Dank schonmal, Gruß Markus
Markus Schwarz schrieb: > Ist es zum Beispiel machbar, dass ich die vorhandene USB Schnittstelle > von dem Controller verwende, und darüber auf der UART Schnittstelle was > wegschicke? > > Also sprich: Ich habe zum Beispiel ein µC mit 2 UART Schnittstellen. Die > eine Schnittstelle nutze ich dazu, um mit dem PC/Software zu > kommunizieren. > Mit Hilfe der Software schicke ich auf den µC Daten, die er auf der > UART2 wieder herrauschickt. Ich hoffe ihr versteht was ich meine... Bis hierhin habe ich nicht wirklich was verstanden... ;-) > Aber ist es möglich, den AT90USB per USB anzusprechen via einer Software > und damit die UART Schnittstelle zu steuern? > > Sozusagen das UDR der UART Schnittstelle per USB zu beschreiben ;) Du willst also einfach die Daten über USB per virtuellem COM-Port einlesen und eventuell noch verarbeiten, bevor sie über UART wieder rausgeschrieben werden? Wenn dem so ist, empfehle ich dir den LUFA-USB-Stack. Dort ist alles drin, inklusive Beispiele, was du brauchst. http://www.fourwalledcubicle.com/LUFA.php
Hallo Christoph, erstmal Danke für deine Antwort :) Das LUFA Projekt ist garnicht mal so schlecht, da muss ich mich mal in Ruhe durcharbeiten. Ich habe mal versucht aufzuzeichnen, was ich vorhabe. Im Prinzip möchte ich gerne, das vom UART verwendete Datenregister (UDR) via USB zu füllen mit Daten. Vom PC aus schicke ich Daten, zB "Hallo Welt", an den µC. Diese Daten sollen im µC gespeichert werden und anschließend via UART ausgegeben werden. Das speichern der Buchstaben oder Zahlen, sowie das versenden mit der UART Schnittstelle, dass ist für mich verständlich und möglich. Ich bin nur noch nicht ganz dahinter gekommen, wie ich die Daten in den µC reinbekomme. Gruß, Markus
Markus Schwarz schrieb: > Ich bin nur noch nicht ganz dahinter gekommen, wie ich die Daten in den > µC reinbekomme. Das LUFA-Projekt bringt Treiber mit, die auf dem PC einen virtuellen COM-Port einrichten über USB. Für das PC-Programm sieht es dann so aus, als hätte der PC eine zusätzliche serielle Schnittstelle. Zum testweisen Senden von Daten mit dem PC eignet sich fast jedes Terminalprogramm. Markus Schwarz schrieb: > Ich habe mal versucht aufzuzeichnen, was ich vorhabe. Wenn du eine Zeichnung gemacht hast, hast du sie vergessen anzuhängen.
Hallo, ich nutze im moment auch LUFA als CDC-Device. Da gibt es dann einige Funktionen mit denen du den Input-Buffer abfragen, Bytes empfangen, Bytes und Strings senden kannst. Und die empfangenen Bytes kannst Du dann natürlich speichern oder per UART ausgeben. Gruß Bad Urban Edit: Das mit Startbit--"Hallo Welt"-- usw. wird so wohl nicht funktionieren...
Äh, warum denn nicht?? Kann ich jetzt doch aber auch schon machen... "Hallo Welt" in ein Array abspeichern und jeden einzellnen Buchstaben nach einander rausschicken... Ich werde mir mal aus dem LUFA Projekt das "USBtoSerial" etwas genauer anschauen... das könnte vielleicht sehr weiterhelfen...
Sorry, hatte mich vorhin etwas kurz gefasst. Das geht natürlich schon. Da war nur ein kleiner Fehler drin. Start- und Stopbit müssen beim UART bei jedem Zeichen mitgesendet werden und nicht nur einmal im String. Aber das macht der uC ja von alleine. Also ich hab damals das CDC-Demo von Lufa für die ersten Gehversuche genommen und das dann erweitert. Scheint mir am Anfang die einfachste Lösung zu sein. Gruß Bad Urban
Guten Abend, irgendwie habe ich mir das doch etwas einfacher vorgestellt - oder mache ich es mir nur zu kompliziert?? Naja... aufjedenfall klappte via Flip alles prima, doch dann kam ich auf die doofe Idee, mit WinAVR den kompletten Controller erstmal zu erasen ;)Naja... Nun ist alles weg - wohl auch der Bootloader. Aufjedenfall zeigt mir das Ding nichts mehr an wenn ich es an USB stecke - verständlicher weise. Kommunizieren mit dem Controller kann ich noch, Port Pins toggeln lassen klappt wunderbar. Nun aber diese Sache mit dem Bootloader... Im LUFA Packet gibt es einen Bootloader Ordner... DFU oder CDC. Soweit so gut... Aber wie kriege ich diese Bootloader auf meinen µC???? Da komme ich irgendwie absolut nicht hinter :(:( Wenn mir jemand helfen kann.... VIELEN DANK SCHONMAL!!! Gruß, Markus
Markus Schwarz schrieb: > Aber wie kriege ich diese Bootloader auf meinen µC???? Per ISP. Den Original-Bootloader gibt es ansonsten auch bei ATMEL.
Äh, ja genau.. per ISP. Bei dem LUFA Bootloadern ist erstmal der AT90USB1284 eingetragen... wenn ich im Makefile meinen 162 eintrage, bekomme ich Error-Meldungen beim kompilieren. Bei Atmel auf der Seite gibt es den Bootloader in einem PDF Dokument, was muss ich denn dann damit machen?? Danke dass du so schnell geantwortet hast..
Wenn Du den At90USB mit z.B. dem MK II flashst wird der Bootloader überschrieben. Beim Flashen mit FLIP über USB passiert das nicht. Den kannst Du aber einfach wieder drauf flashen. Den gibts auch als Hex-File bei Atmel. Musst mal danach suchen. Einfach mit dem MK II draufspielen und die Sache läuft wieder. Gruß Bad Urban
Ich finde bei Atmel immer nur das PDF Dokument mit dem Quellcode....:( Aber was mache ich damit?
So, über Umwege habe ich nun den DFU Bootloader gefunden... Wenn ich jetzt das LUFA "USBtoSerial" Project kompiliere und das .hex File per Flip aus den Controller ziehe, dann passiert erstmal nichts. Damit der Controller sich als "virtuelle Schnittstelle" an dem PC anmeldet, dafür muss der CDC Bootloader geladen werden, ist das richtig? Oder kann ich jetzt auch schon die USB Schnittstelle öffnen und auf den µC zugreifen? Bei mir installiert sich nur irgendwie kein neues USB-Device :( Gruß
Sooo... den vorherigen Post könnt ihr ruhig vergessen... Ich habe jetzt irgendeine HID FIrmware draufgepackt, aufjedenfall meldet der µC sich jetzt als HID an und das bringt mich schonmal nen Stückchen nach vorne. Hat irgendwer von euch gute Anleitungen oder Tipps, wie ich mit HID´s umgehe?? Dankeschön schonmal...
Wenn ich die Atmel CDC/HID Firmware auf den Controller per FLIP lade, dann tut sich garnichts. Im Geräte Manager sehe ich nichts dass sich da was tut... Irgendwo aus dem Internet habe ich noch eine andere HID Firmware gefunden, mit diese Firmware meldet sich der Controller immerhin als HID Gerät an, und mit der Atmel Demosoftware kann ich die PortsPins abfragen und setzen. Leider ist die Firmware nur im .a90 Formart vorhanden und somit kann ich dort nichts verändern dran. Auch die LUFA Firmwarebeispiele lassen sich problemlos aufspielen, aber im Gerätemanager tut sich nichts. Habt ihr vielleicht Tipps für mich??
Markus Schwarz schrieb: > Na ok.... wenn es hier keine weitere Hilfe mehr gibt :(:( Es gibt Leute, die sind auch einfach mal eine Woche nicht im Büro... ;-) Die LUFA-Beispiele laufen eigentlich alle problemlos, daher gibt es eigentlich nur zwei Möglichkeiten: a) Du hast das LUFA-Beispiel falsch kompiliert, beispielsweise falscher Prozessor eingestellt oder falscher Quarztakt. b) Es gibt ein Problem mit dem Board. Da es das AT90USB-Board aber nicht gibt, müsstest du zumindest sagen, um welches Board es sich handelt.
Guten Morgen erstmal :) Als "Board" hab ich dieses hier: http://www.amazon.de/Development-USB-Stick-AT90USB162/dp/B004FM8PO2/ref=sr_1_1?ie=UTF8&qid=1297836916&sr=8-1 Ja, ich gebe zu... es war halt günstig ;) Kompiliert habe ich das ganze mit AVR Studio 4.18 und WinAVR 20100110. Beim Kompilieren bringt er keine Fehler und sagt alles ist gut. Das .hex File schiebe ich dann entweder per Flip auf den Controller oder per ISP mit AVR Studio. Die Fuse Bits sind "richtig" eingestellt. Wenn ich ein eigenes Projekt auf den µC schiebe, dann funktioniert das. (zum beispiel PortPin toggeln lassen, UART Schnittstelle...) Im CDC LUFA Projekt habe ich als Taktfrequenz 16000000 eingestellt, Board TEENSY (meins ist ja kompatibel laut Amazon) und MCU at90usb162. Startadresse teilweise auf 0x3800 oder 0x7000 eingestellt. Fehler bringt er mir ja nicht, es läuft einfach nur nicht ;) Gruß
Wenn ich vom LUFA den CDC Bootloader laden will, dann bringt er mir den Fehler beim übertragen: The contents of the HEX File does not fit in the selected device. Kennt jemand diese Fehlermeldung??
Markus Schwarz schrieb: > Wenn ich vom LUFA den CDC Bootloader laden will, dann bringt er mir den > Fehler beim übertragen: > > The contents of the HEX File does not fit in the selected device. Sagt im Prinzip ja schon alles aus: Die Software ist zu groß für den Flash-Bereich. Entweder du optimierst sie oder du lässt über ein paar #define-Anweisungen noch Teile raus. Hier weiß ich aber nicht, was die CDC-Software bietet.
Aber ich kriege den Code auch nicht kleiner.... der bleibt sturr bei seiner Größe! Hat hier im Forum denn noch niemand die LUFA Code´s auf nen AT90USB162 bekommen?? Wenn ja... wie groß war bei euch den der Code sodass ihr nicht diesen Fehler bekommen habt? Bzw. welchen Code habt ihr genommen? Es läuft auch sowohl unter WIndows Vista nicht, wie auch unter Windows XP. Gruß
Ich glaub es nicht.... 23:20Uhr!!!! Jetzt kann ich ins Bettchen gehen... Es funktioniert!!!! Und zwar könnte es an mehreren Ursachen gelegen haben: Die Fuse-Bit Einstellungen... da ich normallerweise über Flip mit dem DFU Bootloader geladen habe, habe ich mir darüber keine Gedanken gemacht. Aber jetzt habe ich gemerkt, das wenn ich vom Bootsektor die Startadresse verändere, dass dann manchmal das Programm läuft, und manchmal nicht :-D Und anscheinend stand diese Adresse die ganze Zeit einfach nur falsch... Und mein 2ter großer großer Fehler war, dass wenn ich den ISP Stecker dran gesteckt gelassen habe, dann hat der Controller das Programm nicht ausgeführt. Und ich kam nie dadrauf, den ISP Stecker abzuziehen :(:( Naja, jetzt läuft es alles ganz ganz wunderbar... einige Startschwierigkeiten, aber... puh... jetzt kann ich schlafen gehen :) Danke dass ihr mir trotzdem immer geholfen habt, wo ihr konntet :) Tolles Forum... Gruß und gute Nacht (naja, ich glaube ich bastel jetzt doch noch ein wenig weiter ;) )
Hallo, ein paar kleine Fragen hätte ich noch.... Irgendwie weiß ich gerade nicht ganz weiter.. Wenn ich das LUFA CDC Paket auf den Controller gepackt habe und den Treiber ausgewählt habe, dann habe ich einen weiteren COM-Port im Gerätemanager. Was ist dann aber genau dieser COM-Port? Ist der at90usb dann nur als BlackBox zusehen und der COM-Port ist Rxd/Txd von dem Controller? Ich hoffe es ist verständlich... also dient der Controller dann nur als interface und ich kann eine serielle Komponente an den PC anschließen oder ist der "COM-Port" im Gerätemanager der at90usb? Sodass ich dann den Port öffnen kann (mit zB Visual Basic) und dann in dem at90usb PortPins setzen kann und sowas... Oder sind die einzellnen Funktionen des at90usb ausser gefecht gesetzt und ich habe einfach nur eine Verbindung von Rxd/txd Rts... nach USB hin? Dankeschön schonmal.. gruß, markus
Markus Schwarz schrieb: > Was ist dann aber genau dieser COM-Port? Ist der at90usb dann nur als > BlackBox zusehen und der COM-Port ist Rxd/Txd von dem Controller? Für deine PC-Applikationen sieht es wirklich so aus, als wäre ein neuer COM-Port vorhanden, obwohl intern alles über USB läuft. Die Daten kommen im USB-Teil des AT90USB an, was dann weiter damit geschieht, ist eine Programmierungsfrage. > Oder sind die einzellnen Funktionen des at90usb ausser gefecht gesetzt > und ich habe einfach nur eine Verbindung von Rxd/txd Rts... nach USB > hin? Schaue dir den Code nochmal genau an. Du kannst die USB-Daten auslesen und dann zum Beispiel an den UART weitergeben, du kannst aber auch alles andere damit machen.
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.