Forum: Mikrocontroller und Digitale Elektronik attiny2313 und V-USB


von kluski (Gast)


Lesenswert?

hi zusammen,
versuche seit längerem eine den V-USB zum laufen zubekommen, aber es 
klappt nicht. Habe die schaltung so aufgebaut wie auf der Homepage.
http://www.obdev.at/products/vusb/index-de.html
Ich weiss das ich auf der PC seite mehr machen muss ausser LibUSB-win32 
zu Installieren, aber was ist mir schleierhaft.

könnt Ihr mir bei dem problem weiter helfen?
MfG kluski

von Εrnst B. (ernst)


Lesenswert?

kluski schrieb:
> könnt Ihr mir bei dem problem weiter helfen?

Tritt das Problem auf PC (Windows)-Seite oder schon auf µC-Seite auf?

i.A.W. Erkennt Windows das Gerät schon (mit Namen etc) und kann nur 
keinen Treiber laden, oder klappt schon das nicht?

von Achim M. (minifloat)


Lesenswert?

Könntest auch mal von http://www.recursion.jp/avrcdc/ das 
USB-Seriell-Projekt ausprobieren. Wenn sich die Daten in einem 
Terminalprogramm ansehen lassen(Loopback-Test am tn2313) dann liegts 
schonmal nicht an der Hardware.

Vielleicht kannst du das AVR-CDC-Projekt ja auch direkt als serielle 
Schnittstelle benutzen, nur statt den RX/TX-Pins und deren Routinen dein 
eigenes Backend aufsetzen. Das erspart einiges an Rumgehühnere mit 
Libusb.

mfg mf

von holger (Gast)


Lesenswert?

>Habe die schaltung so aufgebaut wie auf der Homepage.

Und programmiert hast du den auch?
Die Fuses richtig gesetzt?

von kluski (Gast)


Lesenswert?

also mit dem VUSB habe ich es aufgegeben hatte nochmal Libusb-win32 
deinstalliert und noch mal installieret seit den hängt sich mein 
wlan-stick immer auf.

Habe das jetzt das versucht
http://www.recursion.jp/avrcdc/cdc-io.html
das bekomme ich wenigstens auf den tin2313, wenn ich es dann am PC 
anschließe kommt "USB-Gerät wurde nicht erkannt".

von kluski (Gast)


Lesenswert?

ich merke der post von mir ist nicht gerade ein glanz stück deutscher 
Grammatik, schreiben -> lesen-> posten und nicht schreiben -> posten -> 
lesen -> schämen :D

ich brenne den tiny2313 auf dem stk500 und setzt in dann ins steckbrett 
um es zu testen spannungsversorguung nehme ich von stk500 und ligt bei 
ca. 3,3 volt
den vom usb liege ich bei 6.2 volt. es kommt aber die fehler meldung 
"USB-Gerät wurde nicht erkannt" und im geräte manager ist unknown device 
habe es bei USBVIEW nachgesehen und dort steht die meldung 
"devicefailedEnumeration".
Also gehe ich davon aus das ich noch an der software ändern muss, aber 
weiss nicht was.
danke euch für die hilfe

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Bitte geb mal an, wie du den ATTiny taktest. V-USB läuft eigentlich 
recht sicher, aber der Takt sollte von einem externen Quarz kommen. Nimm 
einen 16Mhz Quarz und vergiss nicht, das in den Projekteinstellungen 
anzugeben. 16 Mhz vertragen sich aber nicht unbedingt mit einer 
Versorgung von 3.3 Volt. Arduino läuft allerdings auch so.

D+ muss unbedingt an einen Interrupt mit hoher Priorität angeschlossen 
sein, INT0 bietet sich an.

von kluski (Gast)


Lesenswert?

also er läuft mit einem 12MHz Quarz(Habe noch alternativ ein 20MHz 
OSZI), den V-USB bekomme ich nicht compeliert,
V-USB-20100715 gezogen und und den test Ordner ausprobiert.
er zeigt mir ein error aber mein Kenntnisse sind noch nicht so weit, ich 
kann mit dem fehler nichts anfangen könnt
../main.c:130: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'usbMsgLen_t'

Wie stelle ich die Projekteinstellungen ein und was mache ich mit den 
Makefiles

D- ist an INT1
D+ ist an INTO

von Danny (Gast)


Lesenswert?

Matthias Sch. schrieb:
> aber der Takt sollte von einem externen Quarz kommen.

V-USB mit Tiny und internem Quartz nennt sich EasyLogger.

von kluski (Gast)


Lesenswert?

am tiny habe ich ein 12MHz externen Quarz angeschlossen.
kann es daran liegen das ich es mit ein win7 ultimate 32-bit

von Oliver J. (skriptkiddy)


Lesenswert?

kluski schrieb:
> kann es daran liegen das ich es mit ein win7 ultimate 32-bit
Nein.

von kluski (Gast)


Lesenswert?

mal eine verständniss frage wird, muss ich bei AVR-CDC eine was 
zusätzlich installieren?
habe das so verstanden das ich den code drauf brenne in den pc stecke 
und muss dann die eine inf datei installieren (avr-cdc.inf und 
lowcdc.inf).
bzw. muss auch die libusb-win32 installiert sein?

danke für die tipps

von Danny (Gast)


Lesenswert?

Avr-GCC ist im WinAVR-Paket enthalten. Das braucht man zum Kompilieren 
der Firmware. LibUSB ist eine Möglichkeit, USB-Geräte ohne eigenen 
Treiber anzusprechen. Dein Win 7 fragt schon selbst, wenn es den 
LibUSB-Treiber braucht. Das bedeutet dann zumindest schonmal, dass du D+ 
und D- angelötet hast.

von Danny (Gast)


Lesenswert?

oh verlesen. CDC braucht natürlich auch einen Treiber.

von Oliver J. (skriptkiddy)


Lesenswert?

Danny schrieb:
> oh verlesen. CDC braucht natürlich auch einen Treiber.

Aber nicht libusb. Da reicht der generische von Windows. Man muss 
Windows aber über eine entsprechende inf-Datei mitteilen, das es seinen 
Standardtreiber dafür nehmen soll.

von kluski (Gast)


Lesenswert?

also lag ich richtig, (laufen tuts trozdem nicht).
so gehe ich immer vor :
habe mir cdcio (tiny2313) drauf gebrannt und an PC angeschlossen dann 
kommt die meldung USB-Gerät wurde nicht erkannt. Gehe dann in 
Geräte-manager und will treiber manuell installieren und zwar lowcdc 
(avrcdc_inf->xpvista7-> lowcdc). dann kommt die meldung "treibersoftware 
für das gerät ist auf den neuesten stand". Habe es auch mit der avrcdc 
so gemacht kommt das selbe bei rum

aber das war dreieck mit Unkown Device bleibt?

von Oliver J. (skriptkiddy)


Lesenswert?

kluski schrieb:
> meldung USB-Gerät wurde nicht erkannt.
Da liegt der Fehler außerhalb des PCs.

Hast du auch das richtige Hexfile für den µC gebrannt?
Hast du Lastkapazitäten am Quarz?
Hast du die beiden Dioden in der Spannungsversorgung?
USB+ und USB- vertauscht?

von holger (Gast)


Lesenswert?

Und nochmal:

Die Fuses richtig gesetzt?

Miss mal nach ob dein Quarz auch schwingt.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Danny schrieb:
> Matthias Sch. schrieb:
>> aber der Takt sollte von einem externen Quarz kommen.
>
> V-USB mit Tiny und internem Quartz nennt sich EasyLogger.

Du meinst sicher den Code mit der 'Autocalibration' auf 12.8 Mhz ?( 
Tinys haben keinen internen Quarz, sondern nur einen RC Oszillator). 
Habe ich hier nie zuverlässig zum laufen bekommen und deswegen den Tipp 
mit dem externen Quarz gegeben. Vor allem ist es ein Problem , wenn du 
V-USB erst nach dem Einschalten mit dem Host verbindest.
Ich takte übrigens immer mit 16Mhz , damit läuft alles gut und sicher.

Oliver J. schrieb:
>> meldung USB-Gerät wurde nicht erkannt.

Das bedeutet nur, das der 1k5 Pullup Widerstand für ein USB 1 Gerät 
erkannt wurde.

von kluski (Gast)


Lesenswert?

habe die ganze Schaltung aufs Steckbrett gesetzt und direkt dort 
gebrannt, denn auf den stk500 wurde die On-Board Quarz genutzt.
der Quarz schwingt den wenn ich in raus ziehe kann ich in nicht brennen.
am Quarz sind 22pF angeschlossen wie im Datenblatt.

> Hast du auch das richtige Hexfile für den µC gebrannt?
mehr mal überprüft

> Hast du Lastkapazitäten am Quarz?
22pF

> Hast du die beiden Dioden in der Spannungsversorgung?
zwar keine 1N4148 sondern BZX85-C3V6

>USB+ und USB- vertauscht?
auch öfter getestet

> Die Fuses richtig gesetzt?
extended 0xFF
HIGH 0xDF
LOW 0XFF

> Miss mal nach ob dein Quarz auch schwingt.
der Quarz schwingt den wenn ich in raus ziehe kann ich in nicht brennen.

Spannungversorgung vom stk500 liegt bei (Vtarget =3.3) und wenn von
USB bei 4,5V

Der Code ist zu unübersichtlich für mich bin Ihn durch gegangen finde 
aber nicht was ich verändern sollt.

Danke nochmals für die Tipps

von Oliver J. (skriptkiddy)


Lesenswert?

CKDIV8 ist gesetzt.

von Rudolf (Gast)


Lesenswert?

kluski schrieb:
> zwar keine 1N4148 sondern BZX85-C3V6
In Reihe zu Vusb?

von Oliver J. (skriptkiddy)


Lesenswert?

Oliver J. schrieb:
> CKDIV8 ist gesetzt.

Ist es nicht - mein Fehler.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

kluski schrieb:
> zwar keine 1N4148 sondern BZX85-C3V6

Dir ist aber klar, das das 3,6 Volt Zenerdioden sind, oder ? 1N4148 sind 
normale Si-Dioden und werden nach der anderen Methode verschaltet - 
siehe bei OBDev. Zeig mal Schaltplan oder deine Bauvorlage.
Stelle dein Projekt richtig ein auf Taktfrequenz und Device. Ändere die 
Porteinstellungen in 'usbdrv/usbconfig.h' auf deine Verhältnisse.

von kluski (Gast)


Angehängte Dateien:

Lesenswert?

Matthias Sch. schrieb:

> Dir ist aber klar, das das 3,6 Volt Zenerdioden sind, oder ? 1N4148 sind
> normale Si-Dioden und werden nach der anderen Methode verschaltet -
> siehe bei OBDev. Zeig mal Schaltplan oder deine Bauvorlage.
> Stelle dein Projekt richtig ein auf Taktfrequenz und Device. Ändere die
> Porteinstellungen in 'usbdrv/usbconfig.h' auf deine Verhältnisse.

Das weiss ich denn aus meinem usb port kommen ca.6,5 volt. um das ganz 
bischen zu begrenzen auf 4,5 volt und hatte die auch nur zuhause ;).

> In Reihe zu Vusb?
ja habe es nach CDCIO nachgebaut die schaltung ist fast die selbe
(siehe Anhang)
habe mir datei gezogen (im Anhang) und habe sie so nachgebaut(tiny2313).

von kluski (Gast)


Lesenswert?

So bei läuft der cdcio zwar immer noch nicht.
wusste jetzt nicht ob ich ein neues thema aufmachen soll, denn 
theoretisch ist es halb abgeschlossen.
Habe mir die cdcSpi gebrannt und wird auch erkannt, aber läuft als 
Master
wollte eine SW-SPI schreiben habe ein paar fragen bzw. ob meine 
überlegung richtig sind.
Pin Deklarationen
SW-SPI-Master
MOSI = Ausgang
MISO = Eingang
SS = Ausgang
ScK = Ausgang
und bei Slave halt umgekehrt
MOSI = Eingang
MISO = Ausgang
SS = Eingang
SCK = Eingang

das war auch nicht das Problem sondern mir geht es um SCK,
den der Master gibt mir den takt vor, von 1MHz oder 125kHZ (kann ich mir 
aussuchen). Es muss doch jedes mal wenn am Slave-SCK-eingang von high 
auf low wechselt ein Bit am mosi raus oder liege da falsch.

von Achim M. (minifloat)


Lesenswert?

kluski schrieb:
> Es muss doch jedes mal wenn am Slave-SCK-eingang von high
> auf low wechselt ein Bit am mosi raus oder liege da falsch.

Es läuft immer wie folgt, damit wie mit einem D-Flipflop sicher Daten 
übernommen werden:

1. Pegel werden gesetzt
2. Aktive Clock-Flanke kommt
3. Pegel werden gesetzt
4. Aktive Clock-Flanke kommt
...

Das gilt für Sender und Empfänger. Nur dass der Master eben den Takt 
vorgibt.
mfg mf

von kluski (Gast)


Lesenswert?

um das zu lösen dachte ich mir das so
=>
if(ss) wird SS low
dann übtragung starten
SCK als interrupt, wenn der into ausgelöft wird soll ein bit am MISO 
nach
ISR (INT0)
bit schieben
links/rechts(LSB/MSB) geschoben werden.
und interrupts so lange erlauben bis SS wieder auf high geht.

von Achim M. (minifloat)


Lesenswert?

Wenns jetzt noch von Belang ist: Zusätzliche Interrupts bei V-USB sind 
gefährlich, weil man sich die Kommunikation über USB dadurch 
kaputtfummeln kann.
mfg mf

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
Noch kein Account? Hier anmelden.