Hi, hab ein Problemchen bei dem ich nicht mehr weiterkomme. Ich möchte einen AtTiny4313 als USB HID-Device erkennen lassen (mittels VUSB-Lib). Es soll eine Art Mini-Tastatur werden. Sowas habe ich schon mehrfach mit einem AtTiny85 mit internen PLL als Taktgeber funktionsfähig aufgebaut. Nur dieses mal scheint es mit dem größeren AtTiny nicht zu funktionieren zu wollen. Schaltplan: vom Prinzip der da, nur mit Attiny4313: http://www.mikrocontroller.net/attachment/143032/with-zener.png D+ an INT0 (PD2) D- an INT1 (PD3) sonst auch 16Mhz und die laufen auch stabil (mit Timer und Oszi gemessen) Software: Mit verschiedenen Testprogrammen versucht (ja ich habe immer die usbconfig.h angepasst) - leider immer das gleiche verhalten. Kann ich später gern mal zeigen, bin nur gerade nicht vor Ort. Leider wird die Schaltung überhaupt nicht am PC erkannt. Also es tut sich wirklich nix. Es wird nicht einmal nach einem Treiber o.ä. gesucht. An mehreren PCs immer das gleiche. Die Kommunikation scheint jedoch stattzufinden (USB Interrupt auf dem Controller wird ausgelöst). Wenn ich den Controller in den Reset ziehe, zeigen mir die PCs an "unbekanntes Device" - vermutlich erkennt es dann den 1,5k Pullup an D-. Also scheint sich irgendwie keine richtige verbindung aufzubauen - leider sitz ich hier aufm Schlauch und weiß nicht recht, woran es liegen könnte. bereits versucht - aber gleiches Resultat: - dieses Tutorial mehrfach durchgeaktert: http://codeandlife.com/2012/01/25/avr-attiny-usb-tutorial-part-2/ - 12Mhz Quarz - diverse andere Einstellungen im usbconfig.h - Verdrahtung mehrfach überprüft - Spannungsversorgung (+5V) von extern Mich verwundert, dass sich wirklich nix tut. Hatte jemand schonmal so ein Problem oder irgend einen Tipp, wo ich ansetzen könnte? besten Dank
AVR_Banause schrieb: > sonst auch 16Mhz und die laufen auch stabil (mit Timer und Oszi > gemessen) > bereits versucht - aber gleiches Resultat: > - 12Mhz Quarz Soweit ich meine VUSB-Versuche für den guloprog in Erinnerung habe, braucht VUSB entweder 12,0 oder 16,5 MHz. Mit 16,0 MHz wars damals zumindest nicht möglich. Und – die jeweils verwendete Frequenz muss in die Parametrierung von VUSB eingetragen werden. Grundsätzlich geht das auch ohne Quarz, aber dazu müsste der interne Oszillator mit 16,5 MHz lauffähig sein. Das geht beim ATtiny4313 nicht, dazu müsstest du z.B. den ATtiny861A verwenden (auch 20 Pins).
Markus W. schrieb: > Soweit ich meine VUSB-Versuche für den guloprog in Erinnerung habe, > braucht VUSB entweder 12,0 oder 16,5 MHz. Mit 16,0 MHz wars damals > zumindest nicht möglich. Der aktuelle Code in Github enthält Assembler für 16,0 MHz. Der muss korrekt eingebunden werden, und auch die Fuses müssen stimmen. Falls sich das Device als HID meldet sieht man die Treiberinstallation eventuell nicht, da automagisch. Unter Windoof sieht man angesteckte USB Geräte in der Baumansicht des Gerätemanagers, dort würde man An- und Abstecken am Besten sehen.
Markus W. schrieb: > Mit 16,0 MHz wars damals > zumindest nicht möglich. Ist es aber - seit wann weiß ich nicht. Markus W. schrieb: > Und – die jeweils verwendete Frequenz muss in die Parametrierung von > VUSB eingetragen werden. Jop, habe ich auch immer gemacht und mit einem Timer & LED-blinken verifiziert. Scheint diesbezüglich alles stimmig zu sein. Bohaj schrieb: > Das Tool USBTREEVIEW von http://www.uwe-sieber.de/ kann Hilfe leisten. Nice, werd ich mir mal anschauen wenn ich daheim bin. Danke schonmal - so ein Tool hab ich sowieso gesucht.
Jim M. schrieb: > Unter Windoof sieht man angesteckte USB Geräte in der Baumansicht des > Gerätemanagers, dort würde man An- und Abstecken am Besten sehen. Jo, ist mir bekannt. Leider passiert wirklich überhaupt nix, wenn ich die Schaltung an- bzw. abstecke. Mit dem Oszi kann ich zumindest eine bestimmte "Kommunikation" auf den USB-Leitungen sehen. Auch der USB-Interrupt am Controller wird ausgelöst - aber es meldet sich nicht als Gerät bzw. meldet sich im Gerätemanager nix.
Usb Erkennung läuft in 3 Schritten ab. 1. Durch den pull-up an d- wird erkannt, dass es sich um ein Low Speed Device handelt. Wenn da nix kommt oder ein High Speed Device erkannt wird ist d+/d- vertauscht. Diese Erkennung muss funktionieren auch wenn der Atmega leer ist - sofern der pull up nicht mit einem Transistor gesteuert wird. 2. Dann wird der Device descriptor gelesen, wenn das nicht geht ist v-usb falsch konfiguriert oder die Leitungen passen nicht. Auch drauf achten, dass usb differentielle Signale benutzt. Die Leitungen müssen gleich lang sein. 3. Dann wird der Treiber anhand des Device descriptor ausgesucht und installiert.
hmm...hab jetzt mal mit dem USB_Device_Tree-Tool was versucht auszulesen....
1 | =========================== USB Port3 =========================== |
2 | |
3 | Connection Status : 0x09 (Device is enumerating) |
4 | Port Chain : 3-3 |
5 | |
6 | ======================== USB Device ======================== |
7 | |
8 | DriverKeyName : ERROR_BAD_COMMAND |
9 | |
10 | ---------------- Connection Information --------------- |
11 | Connection Index : 0x03 (3) |
12 | Connection Status : 0x09 (DeviceEnumerating) |
13 | Current Config Value : 0x00 |
14 | Device Address : 0x00 (0) |
15 | Is Hub : 0x00 (no) |
16 | Number Of Open Pipes : 0x00 (0) |
17 | Device Bus Speed : 0x00 (Low-Speed) |
18 | |
19 | ------------------ Device Descriptor ------------------ |
20 | bLength : 0x00 (0 bytes) |
also entweder bin ich wirklich so verstrahlt, dass ich D+/D- vertausch habe (hab es aber schon 100x kontrolliert) oder der ca 2cm Kabelverhau auf der Platine macht probleme... Ich check nochmal alles durch. Danke erstmal für die Feedbacks.
AVR_Banause schrieb: > Device Bus Speed : 0x00 (Low-Speed) > > ------------------ Device Descriptor ------------------ > bLength : 0x00 (0 bytes) > > also entweder bin ich wirklich so verstrahlt, dass ich D+/D- vertausch > habe Hast Du nicht. Denn sonst würde da "Full Speed" stehen. Eine Länge von 0 beim Device Deskriptor ist aber nicht OK. Da hätte es irgendwann - eventuelle aber erst nach Minuten - ein gelbes Ausrufezeichen im Gerätemanager geben müssen. Ich hänge zum Debuggen von USB die Geräte gerne mal an eine Linux Kiste, der Kernel ist da gesprächiger (siehe dmesg).
AVR_Banause schrieb: > Mit dem Oszi kann ich zumindest eine bestimmte "Kommunikation" auf > den USB-Leitungen sehen. Das musst du halt dekodieren. Oder zumindest hier zeigen.
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.