Problem mit V-USB

OP #2967935
Lesenswert?

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  :-)
Angehängte Dateien:
OP #2967975
Lesenswert?

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
Gast #2967977
Lesenswert?

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
#2967987
Lesenswert?

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.
OP #2967995
Lesenswert?

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 :/
OP #2968020
Lesenswert?

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.
Gast #2968031
Lesenswert?

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.
Gast #2968039
Lesenswert?

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!
OP #2968083
Lesenswert?

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.
Angehängte Dateien:
Gast #2968111
Lesenswert?

> 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∗
Gast #2968130
Lesenswert?

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
OP #2968138
Lesenswert?

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
Angehängte Dateien:
Gast #2968149
Lesenswert?

> 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
[..]
Gast #2968392
Lesenswert?

> 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.
Gast #2968407
Lesenswert?

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
Gast #2968429
Lesenswert?

>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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren