Hallo, ich versuche seit geraumer Zeit die v-usb libary einzubinden. Nach einigen Problemen mit der Makefile, kompiliert das ganze Programm ohne Fehler. Leider bekomme ich von meinem Laptop nur die Meldung "Gerät nicht erkannt", wenn ich den USB einsteck. Zu Kontrolle, ob der Microcontroller auch wirklich taktet, hab ich eine LED an PD6 gehängt und PD6 am Anfang von main auf hight gesetzt. Also kann ich schonmal falsche Fuses oder Fehler beim kompilieren ausschließen. Hat jemand von Euch ne Idee, was ich tun kann, damit die korrekte Vendor und Devive ID am Laptop ankommen? (Ich verwende eine Atmega mit 12Mhz Quarz, Programmers' Notepad und mfile.) mfg und frohe Weihnachten :-)
Hast du auch den internen Teiler deaktiviert? Zeigt dir der inf-wizard als VID 0x00 an? Dann hast du vielleicht grün und weiß vertauscht.
Welchen internen Teiler? :D Eigentlich sollten D+ und D- stimmen. Ich hab mal zum Spaß D+ und D- vertauscht und habe das selbe Resultat erhalten. Der inf-wizard zeigt für VID und PID in beiden Fällen leider 0x00 an.
Der Atmega hat ab Werk einen internen Teiler von 8 eingestellt. Wenn du den in den Fuses nicht rausnimmst läuft VUSB nicht. Hängt D+ auch am INT0 des Megas?
teilt dieser Teiler die Inputs um den Faktor 8, oder wie kann man das verstehen? Nein, ich hab D+ an PB0 und D- an PB1. Allerdings sollte das in usbconfig.h eingestellt sein: #define USB_CFG_IOPORTNAME B #define USB_CFG_DMINUS_BIT 1 #define USB_CFG_DPLUS_BIT 0
Der Teiler teilt deine 12MHz intern auf 1,5MHz. Du musst D+ an PD2 hängen, sonst funktioniert das nicht. Hälst du dich an irgendein Beispielprojekt oder ähnliches? Das erleichtert den einstieg um einiges. Hier ist es zB. für einen Tiny gut erklärt, das kannst du auf den Mega umstricken: http://codeandlife.com/2012/01/22/avr-attiny-usb-tutorial-part-1/
Genau DAS hatte ich auch als Vorlagen :-) Die USB-Verbindung ist nur die Vorraussetzung für ein Projekt, mit dem ich einen NAND auslesen und beschreiben will. Die Kommunikation mit dem klappt schon recht gut, aber ich muss relativ große Datenmengen (max. 528 pro Schreibvorgang) zum Mega schicken. Deshalb hab ich mich für USB und nicht RS323 entschieden. Für die NAND-Ansteuerung hätte ich gern Port D frei :/ Aber ich aknn D+ und D- nur an INT0 und INT1 hängen, oder? Weißt Du, wie dieser Teiler offiziell heißt? Weil ich berechne meine Fuses immer mit dem engbedded Fusecalculator. mfg und vielen Dank :D
sorry, aber du hast zuwenig Ahnung um so ein Projekt in 0,nix auf dich umzustricken! Wenn Du schon so groß einsteigen willst: Halte dich erst Mal an ein funktionierendes Projekt und mach erst wenns läuft deine Änderungen
Ich verwend ja auch nicht zum Spaß ne fertige Libary. Die Ansteuerung des NANDs ist kein Prolem nur der Datentrasfer. Ich kann auch alles über RS323 machen (was mei 16mb n paar Stunden dauert). Aber es kann doch nicht so schwierig sein ne fertige libary einzubinden.
Die Fuse heißt CLKDIV. Hast du überhaupt den Quarz als Taktquelle in den Fuses eingestellt? Am Besten ist es, wenn du erst einmal den selben Code wie im Tut nimmst, nur in der usbconfig.h D+ auf PD2 und D- auf meinetwegen PD3 legst (bei D- muss es kein INT-Pin sein). Dann bekommst du erstmal den Treiber zum laufen und schickst dir lustige Hello-Worlds hin und her. Wenn das dann funktioniert strickst du die Software Stück für Stück auf dein Projekt um. So habe ich es auch gemacht, als ich das erste mal mit VUSB gearbeitet habe. Pass auf jeden Fall auf gute Verbindungen und kurze Leitungen auf, VUSB ist ziemlich störanfällig aber wenn es einmal läuft dann läufts :-). Lass dich nicht aus der Ruhe bringen, ich saß damals auch 5 Stunden, eh das Teil richtig erkannt wurde.
Ich hatte zum Test des Quarzes ein Programm geflasht, das eine LED blinken lässt. Sobald ich den Quarz rausgezogen habe, ging sie aus und wenn ich ihn wieder eingesteckt habe, gings weiter ;) Aber von dem Teiler wusst ich nicht :D Das probier ich heut Nachmittag gleich mal aus. Ich hab ja für den Anfang auch das Beispielprojekt mit copy-paste abgeschrieben. Vielen Dank für deine Hilfe und Motivation Frohe Weihnachten :D EDIT: Leider Finde ich weder "CLKDIV" noch "CLKD" im Datenblatt :/
Michael Stoffels schrieb: > EDIT: Leider Finde ich weder "CLKDIV" noch "CLKD" im Datenblatt :/ dann such nach fuse
Ja, dummerweise gibts davon aber mehr als eine und ich weiß nicht, wie die Fuse auf englisch heißt. Sowas wie "internal divider" hab ich auch nicht gefunden. Leider Gottes scheint es im Fusecalculator auch keine Option dafür zu geben. Da bleibt mir wohl nix anderes übrig, als mich in die Fuses mal näher einzulesen.
V-USB macht heute eigentlich keinen Sinn mehr, da es genug Alternativen mit echter Hardware-USB Unterstützung gibt. Ansonsten verschwendet man sehr viel Zeit mit Problemen, die sonst nie auftreten würden.
Michael Stoffels schrieb: > Ja, dummerweise gibts davon aber mehr als eine und ich weiß nicht, wie > die Fuse auf englisch heißt. also auf Deutsch heißt die Fuse: Sicherung beim Tiny 45 gibt es 3 davon, ist nicht schwierig sich die Bits dazu anzuschauen >Sowas wie "internal divider" hab ich auch > nicht gefunden. Leider Gottes scheint es im Fusecalculator auch keine > Option dafür zu geben. dann schau halt noch Mal hin, da gibt es eine!
Hast Du Gnd verbunden? Dem Augenschein nach kommen aus dem USB-ähm-Gefrickel nur zwei Leitungen raus auf das Brotbrett.
Ja, falls ich nicht hinkriegen sollte, werd ich wohl nen atmega mit usb interface kaufen müssen :/ Ja, das ist auf meinem Foto leidr nicht zu erkennen. +5V und GND laufen unter dem USB-Stecker raus (siehe Anhang) Ich installier grad AVR studio 6 um die Fuse zu finden. (der rote drah, der von oben kommt ist übrigens +3,3V aus meinem Netzteil.) Ich hoffe ich finde die Fuse in AVR studio. Weil mit Strg+F hab ich im Dateblatt nichts gefunden.
> Ich hoffe ich finde die Fuse in AVR studio. Der m32 keine extra 'CKDIV' oder ähnliches. Bei dem kann man den internen Takt via CKSEL[3:0] runterteilen (siehe Datenplatt [0] Kapitel "System Clock and Clock Options/Calibrated Internal RC Oscillator", "System Clock and Clock Options/Crystal Oscillator" und "Memory Programming/Fuse Bits" [1]). Der externe welche ist beim m32 nicht teilbar. Was machen D+/D- (nur) auf PB0/PB1? Sollte da nicht einer davon (auch) auf einen INT gehen? [0] http://www.atmel.com/Images/doc2503.pdf [1] welche Nase nummeriert die Kapitel nicht durch damit man sie auch ja nicht einfach referenzieren kann ∗arrgs∗
Hi >Die USB-Verbindung ist nur die Vorraussetzung für ein Projekt, mit dem >ich einen NAND auslesen und beschreiben will. Dazu brauchst du aber einen USB-Host. Und das ist V-USB nicht. >Ich hoffe ich finde die Fuse in AVR studio. Weil mit Strg+F hab ich im >Dateblatt nichts gefunden. Der ATMega32 hat keinen Clock-Divider, also auch keine CKDIV-Fuse. MfG Spess
Also heißt das, dass er auch wirklich mit 12MHz taktet, wenn ich nen externen 12Mhz Quarz dran hab und die Fuses für den Taktgeber auf externen Quarz, hight frequency und 64ms Anschwingkeit gestellt habe. (CKSEL=111, SUT=11). Das es die Fuse nicht gibt, erklärt, wieso ich sie im Datenblatt nicht gefunden habe ;) Dann ist das Problem mit dem Teiler schonmal vom Tisch :/ Also auf wikidocs hab ich das hier für den Nineauausgleich zwischen USB und AVR gefunden (4.PNG). Ich hab lediglich das rot eingekreiste durch +3,3V ersetzt (und natürlich die Verbindungen zu +5V vom USb und die zu GND gekappt ;)) Im Tutorial von hackaday.com ist die Beschaltung wie in 5.PNG beschrieben. So wie ich das verstanden habe, liegen D+/- nur an 2 I/O-Pins, die in usbconfig.h festgelegt werden. Woran könnte es den noch liegen, das ich keine VID und PID kriege? mfg
Was soll die Provokation?! Was sollen die Fotos im PNG-Format? Bist du wirklich an ernsthaften Beiträgen interessiert?
Versteht man unter Host bei USB-Verbindungen nicht den PC mit USB-Schnittstelle und unter Divice den Controller mit V-USB? mfg
Wie ist das zu verstehen? Du versorgst die Schaltung über ein Labornetzteil mit 3,3V? hast du USB-GND mit dem Netzteil GND verbunden? D+ auf den INT0 gelegt?
> So wie ich das verstanden habe, liegen D+/- nur an 2 I/O-Pins, die in > usbconfig.h festgelegt werden. Ja. Wenn D+ dabei zufällig auf dem passenden INT landet schon. Wenn man unbedingt andere Pins nehmen will muss man D+ noch zusätzlich auf eine INT rüberlegen. Ausschnitt aus der usbconfig-prototype.h:
1 | #define USB_CFG_DPLUS_BIT 2 |
2 | /* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected. |
3 | * This may be any bit in the port. Please note that D+ must also be connected |
4 | * to interrupt pin INT0! |
5 | [..] |
Das is ne schaltung und schaltungen in PNG, oder etwa ned?! Die Bildgöße is ja wohl mehr als sinnvoll und die Fotos... das is dann wohl mein Fehler gewesen, sry :/ Leider kann ich den Beitrag nicht mehr editieren. Also kann ichs jetzt auch nimmmer ändern -.-
genau, GND vom netzteil liegt auch auf GND vom USB ;D Die 3,3V vom Netzteil ziehen D- über 1,5K gegen 3,3V Wie konnt ich nur so blöd sein und das überlesen! DANKE! :D mfg
> Das is ne schaltung und schaltungen in PNG, oder etwa ned?! > Die Bildgöße is ja wohl mehr als sinnvoll und die Fotos... Es war von den Fotos die Rede! Abgesehen vom unpassenden PNG-Format, ist 1MB für diesen Bildinhalt eindeutig zu viel! > Leider kann ich den Beitrag nicht mehr editieren. Also kann ichs jetzt > auch nimmmer ändern -.- Selber schuld. Hättest vor dem Posten mal etwas denken sollen.
Hi >Versteht man unter Host bei USB-Verbindungen nicht den PC mit >USB-Schnittstelle und unter Divice den Controller mit V-USB? Der Host ist der Master. V-USB ein Slave. Wenn dein ominöses 'Nand' kein Host ist, kannst du das Ganze vergessen. Zwei Slaves können nicht miteinander kommunizieren. MfG Spess
>Ich verwend ja auch nicht zum Spaß ne fertige Libary. >Die Ansteuerung des NANDs ist kein Prolem nur der Datentrasfer. >Ich kann auch alles über RS323 machen (was mei 16mb n paar Stunden >dauert). Wird beim V-USB kaum anders sein. Ein FT232RL oder der FT245 ist da wohl die bessere Wahl.
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.