Forum: Mikrocontroller und Digitale Elektronik ATtiny45 + VUSB -> gerät wird nicht erkannt


von tinyusb (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

ich möchte einen ATtiny45 per PC mittels V-USB steuern, aber das Gerät 
wird nicht erkannt. Es kommt die standard-windows-fehlermeldung und auch 
mittels libusb bekomme ich nur ein unbekanntes gerät ohne VID oder PID 
angezeigt. Hardwaremäßig sollte alles ok sein, ich messe 5V am 
USB-anschluss (ohne HUB direkt am pc) und ca 3,5V hinter den Dioden. Die 
Datenleitungen sind mit jeweils 68ohm angeschlossen, und das D- kabel 
ist mit 2 * 3k = 1,5k an die 3,5V angeschlossen. Auf dem Bild ist RESET 
nicht angeschlossen, aber in der originalschalten ist er an 3,5V gelegt.

Der Quellcode ist im wesentlichen vom "PowerSwitch" kopiert.

von Thomas E. (thomase)


Lesenswert?

tinyusb schrieb:
> Der Quellcode ist im wesentlichen vom "PowerSwitch" kopiert.

Das im Anhang ist doch nicht der gesamte Code, oder?

Wenn ja, dann fehlen da aber noch ungefähr 97%.

mfg.

von Oliver J. (skriptkiddy)


Lesenswert?

Hat denn der Powerswitch funktioniert?

von Pascal H. (pase-h)


Lesenswert?

Ähm, wo ist denn der Quarz? Man MUSS einen 12Mhz Quarz verwenden, wegen 
des USB. Ich habs jetzt gerade nicht im Kopf, aber soweit ich weiß gibt 
es keinen Attiny/Mega mit 12Mhz internem Takt.

Mfg

von Oliver J. (skriptkiddy)


Lesenswert?

Pascal Haury schrieb:
> Ähm, wo ist denn der Quarz? Man MUSS einen 12Mhz Quarz verwenden, wegen
> des USB.

Muss man nicht zwingend. Man kann beim ATtiny45 auch den internen 
RC-Oszillator mit PLL verwenden und anhand der USB-Frame-Länge auf 16,5 
MHz kallibrieren. Dieses Referenzprojekt [1] von obdev.at macht das so.


[1] http://www.obdev.at/products/vusb/easylogger.html


Gruß Skriptkiddy

von Verwirrter Anfänger (Gast)


Lesenswert?

Pascal Haury schrieb:
> Ähm, wo ist denn der Quarz? Man MUSS einen 12Mhz Quarz verwenden, wegen
> des USB. Ich habs jetzt gerade nicht im Kopf, aber soweit ich weiß gibt
> es keinen Attiny/Mega mit 12Mhz internem Takt.

Nicht zwingend. Man kann über den PLL Takt auf 16.5 mhz gehen.
Siehe:
http://yveslebrac.blogspot.com/2008/10/cheapest-dual-trace-scope-in-galaxy.html
Welcher Takt beim TO verwendet wird, wird natürlich trotzdem nirgendwo 
erwähnt.

Mir fehlen vor allem auch ein paar Kondensatoren auf dem Bild.
Ich bin mir auch nicht sicher, ob ein Steckbrett für USB so geeignet 
ist.

Ciao,
VA

von tinyusb (Gast)


Lesenswert?

der tiny läuft mit interner PLL auf 16,5mhz, synchronisiert durch die 
USB.
minus-bit ist 0, plus-bit ist 2. Sonst hab ich an der config.h nichts 
geändert (außer dem namen)

von tinyusb (Gast)


Lesenswert?

Ich habe jetzt ein paar kerkos dazugefügt, ändert aber nichts. Habe 
außerdem ein funktionierendes VUSB programm draufgeflasht, aber der PC 
erkennt garnichts, keine Meldung etc.

von Oliver J. (skriptkiddy)


Lesenswert?

Könntest du deine Schaltung mal aufzeichnen?

von Martin (Gast)


Lesenswert?

Der Computer macht schon ne Meldung, wenn man einen 1.5k Widerstand von 
D- oder D+ an 3.3V hängt. Also wenn bei dir garnix passiert, hast du 
keine Verbindung zum Computer.

von tinyusb (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang die Schaltung. Mit dem eigentlichen Programm wird das gerät 
vom PC zumindest als "unbekannt" erkannt.

von Oliver J. (skriptkiddy)


Lesenswert?

Super. Der Schaltplan ist jetzt schon mal da. Dort vermisse übrigens den 
Pullup an Reset.

Wenn du jetzt auch noch ein Projekt schnüren und es posten würdest, dann 
könnte ich es hier auf meiner Hardware mal testen.


Gruß Skriptkiddy

von tinyusb (Gast)


Angehängte Dateien:

Lesenswert?

Reset ist doch direkt an VCC geklemmt? Bei einem anderen USB-Projekt hat 
dies auch super funktioniert (VCC und Reset an 3,3V).

von Oliver J. (skriptkiddy)


Lesenswert?

Dein Projekt setzt 12MHz vorraus.


"usbconfig.h"
1
/* ---------------------------- Hardware Config ---------------------------- */
2
3
#define USB_CFG_IOPORTNAME      B
4
/* This is the port where the USB bus is connected. When you configure it to
5
 * "B", the registers PORTB, PINB and DDRB will be used.
6
 */
7
#define USB_CFG_DMINUS_BIT      0
8
/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
9
 * This may be any bit in the port.
10
 */
11
#define USB_CFG_DPLUS_BIT       2
12
/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
13
 * This may be any bit in the port. Please note that D+ must also be connected
14
 * to interrupt pin INT0!
15
 */
16
/* #define USB_CFG_CLOCK_KHZ       (F_CPU/1000) */
17
/* Clock rate of the AVR in MHz. Legal values are 12000, 16000 or 16500.
18
 * The 16.5 MHz version of the code requires no crystal, it tolerates +/- 1%
19
 * deviation from the nominal frequency. All other rates require a precision
20
 * of 2000 ppm and thus a crystal!
21
 * Default if not specified: 12 MHz
22
 */


"usbdrvasm.S"
1
;----------------------------------------------------------------------------
2
; Now include the clock rate specific code
3
;----------------------------------------------------------------------------
4
5
#ifndef USB_CFG_CLOCK_KHZ
6
#   define USB_CFG_CLOCK_KHZ 12000
7
#endif
8
9
#if USB_CFG_CLOCK_KHZ == 12000
10
#   include "usbdrvasm12.inc"
11
#elif USB_CFG_CLOCK_KHZ == 15000
12
#   include "usbdrvasm15.inc"
13
#elif USB_CFG_CLOCK_KHZ == 16000
14
#   include "usbdrvasm16.inc"
15
#elif USB_CFG_CLOCK_KHZ == 16500
16
#   include "usbdrvasm165.inc"
17
#else
18
#   error "USB_CFG_CLOCK_KHZ is not one of the supported rates!"
19
#endif



Mit der passenden Änderung läuft es mit PLL auf 16.5 MHz, sonst nicht. 
Das Ändern überlasse ich dir.

Gruß Skriptkiddy

von tinyusb (Gast)


Lesenswert?

Jetzt funktioniert es, das Gerät wird sofort erkannt. Vielen dank Skript 
Kiddy :) auch für deine Geduld, klasse :)

von Oliver J. (skriptkiddy)


Lesenswert?

tinyusb schrieb:
> Jetzt funktioniert es, das Gerät wird sofort erkannt. Vielen dank Skript
> Kiddy :) auch für deine Geduld, klasse :)

Kein Ding. Freut mich, dass es bei dir funktioniert.


Gruß skriptkiddy

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.