Sehr geehrtes Forum, ich habe gerade erst angefangen mit AVR Mikrocontrollern zu experimentieren und ich wollte da zum start auch eine USB-Trommel die per midi funktioniert bauen. Die anleitung und alles andere was man braucht kahm von der MAKE zeitschrift 2/2017 und ich hab alles davon in den anhang gepackt. Jetzt zu meinem problem damit: Ich habe die schaltung aufgelötet und habe den ATMega8 beschrieben aber als ich dann mit vorfreude das ganze an den PC angeschlossen habe erschin nur die fehlermeldung das das usb gerät nicht erkannt wurde und wenn ich im geräte manager nachgucke steht da fehlercode 43 und das der fehler bei der anforderung einer geräte beschreibung liegt. Die ganzen tricks die man im Internet findet um diesen Fehler zu lösen funktionieren nicht und ich denke das es entweder ein problem bei den Z-Dioden und der ganzen USB verarbeitung ist oder ein problem bei der Software was aber eigentlich nicht sein kann da das bei MAKE funktioniert hat. Hoffentlich könnt ihr mir helfen Liebe Grüße und danke im vorraus :D
:
Bearbeitet durch User
Hast Du die beiden Fuse auch gesetzt, oder nur einfach make ausgeführt?
Ich würde den Fehler erst mal bei einem fehlerhaften Aufbau vermuten. Dein Controller wird einfach nicht als UsbMidi Device erkannt. Such den Fehler in der Überbindung. Beliebt ist beispielsweise das Vertauschen der D+ und D- Leitung. Bild von deinem Aufbau wäre hilfreicher als die Seiten aus der Make.
Parceval D. schrieb: > erschin nur die fehlermeldung das das usb > gerät nicht erkannt wurde Windows erkennt das da was verbunden wurde, aber kann mit dem Gerät nicht kommunizieren. - Verbindung falsch? - Läuft die Firmware überhaupt? Denn wenn die Firmware nicht per USB antwortet, passiert der Fehler ebenfalls.
:
Bearbeitet durch User
Danke für die schnellen antworten und guten Ratschläge. pegel schrieb: > Hast Du die beiden Fuse auch gesetzt, oder nur einfach make ausgeführt? Laut AVRDude sollen die Fuses funktionieren aber ich wüsste jetzt nicht wie ich die setzen sollte. Thomas Z. schrieb: > Beliebt ist beispielsweise das Vertauschen > der D+ und D- Leitung. Ich habe die schaltung noch mal auf einem Steckboar aufgebaut mit einem anderen ATMega8 und hab dort mal versucht ob das mit dem wechsel von D- und D+ funktioniert aber auch wieder der gleiche Fehler. Thomas Z. schrieb: > Bild von deinem Aufbau wäre hilfreicher kann ich machen aber wie ich obern schon geschrieben habe hatte ich das auch noch mal auf nem steckboard ausprobiert und das war da genauso. Soll ich trotzdem eins schicken? Adam P. schrieb: > - Läuft die Firmware überhaupt? Die sollte laufen. Wenn die nicht läuft dann erkennt Windows nichts.
pegel schrieb: > Hast Du die beiden Fuse auch gesetzt, oder nur einfach make ausgeführt? Parceval D. schrieb: > Laut AVRDude sollen die Fuses funktionieren aber ich wüsste jetzt nicht > wie ich die setzen sollte. Kann es sein, dass du in dem Makefile in Zeile 11 / 12 die Fuses selbst erstmal hinterlegen musst. Da steht "# see below for fuse values for particular devices". Also dann müsste man das doch z.B. für den Atmega8 anpassen:
1 | ...
|
2 | DEVICE = atmega8 |
3 | F_CPU = 12000000 # in Hz |
4 | FUSE_L = 0x9F |
5 | FUSE_H = 0xC9 |
6 | AVRDUDE = avrdude -c avrisp2 -p $(DEVICE) # edit this line for your programmer |
7 | ...
|
Ja ist so, siehe Zeile 116: "*** Edit Makefile and choose values for FUSE_L and FUSE_H!" Oder hast du das bereits gemacht? Denn sonst beendet er mit "exit 1" und flasht die Firmware auch nicht, falls du "make program" verwendet hast.
:
Bearbeitet durch User
Diese Z-Dioden bringen immer wieder Verdruss, ich habe stets bessere Resultate erzielt, wenn man die AVR-Betriebsspannung auf 3.3 Volt reduziert, entweder mit zwei Dioden oder einer roten LED wie bei obdev.at gezeigt: https://www.obdev.at/Images/vusb/circuit-zoomed.gif (das geht auch mit 16 MHz bei den 20 MHz-Bausteinen, siehe den Link auf forums.obdev.at) Ausführliche Diskussion zu V-USB-MIDI dort: https://forums.obdev.at/viewtopic.php?f=8&t=1352 Du könntest auch meine dort beschriebene Variante V-USB-MIDI-ATtiny85 probieren, die läuft out-of-the-box und dann durch Vergleich der Signale den Fehler eingrenzen. Martin
Adam P. schrieb: > Kann es sein, dass du in dem Makefile in Zeile 11 / 12 die Fuses selbst > erstmal hinterlegen musst. Das hab ich nicht gemacht.. ich hab noch nicht mal mitbekommen das das fehlt... Das probiere ich sofort aus :D Martin H. schrieb: > Diese Z-Dioden bringen immer wieder Verdruss, ich habe stets bessere > Resultate erzielt, wenn man die AVR-Betriebsspannung auf 3.3 Volt > reduziert, entweder mit zwei Dioden oder einer roten LED wie bei > obdev.at gezeigt: Sobald das ganze funktioniert werde ich das auch ausprobieren aber erstmal will ich das so wie in der Anleitung machen damit ich nicht auch noch da einen Fehler reinbringe. Danke für den Tipp
Ich bin mir gerade nicht ganz sicher ob ich das jetzt richtig verstanden habe. Ich hatte main.hex einfach auf den AtMega8 geschrieben und dachte das wär alles. Ist die Datei nicht schon von MAKE fertig zum aufspielen gemacht worden oder muss ich mit dem Make file arbeiten? Und wenn ich mit dem arbeiten muss, was muss ich dann alles machen und soll ich das mit den fuses im make file oder im main.c file verändern?
Wie hast du die main.hex aufgespielt? Hast du das über Konsole mit avrdude gemacht, oder wie kam die *.hex in den Flash vom Atmega? Die Fuses muss man zusätzlich einstellen. Der AVR kommen mit einer default Config. aus der Produktion und dann muss man die Fuses so einstellen wie man es halt benötigt.
:
Bearbeitet durch User
Ich habe jetzt herrausgefunden wie es geht: mit diesen Befehlen: avrdude -P COM3 -b 19200 -c avrisp -p m8 -u -U hfuse:w:0xC9:m -U lfuse:w:0x9F:m avrdude -P COM3 -b 19200 -c avrisp -p m8 -u -U flash:w:"d:\avr\main.cpp.hex":i und jetzt wird es auch erkannt :D Blöderweise nur solange der Programmer (ArduinoUNO) mit allen kabeln angeschlossen ist, der muss aber nicht selber noch per USB angeschlossen sein. Trotzdem erstmal vielen vielen dank an euch alle und besonders an adamap für die Lösung.
Das ist doch ein VUSB Design oder? Falls ja das geht nicht mehr. Übliche Betriebssysteme lehnen es inzwischen ab lowspeed devices mit Bulk EPs zu enumerieren. Da braucht du ein altes OS z.b WinXp. Seit W7 oder W8 werden diese Art devices nicht mehr enumeriert, da nicht Spec konform.
Parceval D. schrieb: > Ich hatte main.hex einfach auf den AtMega8 geschrieben und dachte das > wär alles. Nein, ist es nicht. Das Hexfile enthält nur das Programm, aber nicht die Fuses. Theoretisch wäre es zwar möglich, in einem Hexfile auch die Fuses mit unterzubringen, aber es gibt dafür keinen irgendwie gearteten Standard, deswegen wird es nicht gemacht. Also: du musst die Fuses manuell passend setzen, wenn du nicht den gesamten Prozess (Programmerstellung und Programmieren des Targets) über das makefile abhandelst. Zum Programmieren der Fuses benötigst du einen ISP-Programmer. Das geht nicht über einen Bootloader.
Thomas Z. schrieb: > Das ist doch ein VUSB Design oder? Falls ja das geht nicht mehr. Übliche > Betriebssysteme lehnen es inzwischen ab lowspeed devices mit Bulk EPs zu > enumerieren. Da braucht du ein altes OS z.b WinXp. Seit W7 oder W8 > werden diese Art devices nicht mehr enumeriert, da nicht Spec konform. Ich hab es jetzt um 2 Kondensatoren erweitert dadurch funktioniert es jatzt auch unter windows 10. Also funktionieren ist etwas hoch gegriffen aber es wird zumindest erkannt und auch richtig als eDrum ausgelesen. Das einzige was jetzt noch fehlt ist das es auch von midi fähiger software verwendet wird. Unter lmms kann man es hinzufügen jedoch kommt kein signal an wenn man das pizo element bewegt/klopft. c-hater schrieb: > Nein, ist es nicht. Das Hexfile enthält nur das Programm, aber nicht die > Fuses. das hab ich jetzt auch herrausgefunden :) Parceval D. schrieb: > avrdude -P COM3 -b 19200 -c avrisp -p m8 -u -U hfuse:w:0xC9:m -U > lfuse:w:0x9F:m hiermit hab ich die fehlerfrei schreiben können und es geht auch mit dem Arduino UNO wie oben geschrieben ist jetzt das einzige was nicht funktioniert das in lmms das signal registriert wird und ich weiß nicht wie ich das sonst noch ausprobieren könnt wenn nicht mit lmms.
Parceval D. schrieb: > Ich hab es jetzt um 2 Kondensatoren erweitert dadurch funktioniert es > jatzt auch unter windows 10. Die haben bestimmt auch einen Wert und sind auch sicherlich irgendwo angeschlossen :)
Martin H. schrieb: > Die haben bestimmt auch einen Wert und sind auch sicherlich irgendwo > angeschlossen :) ja natürlich xD einen 100uF und einen 22uF direkt an + und - und siehe da es funktioniert :D Ich hab jetzt auch herrausgefunden warum kein Signal ankommt nur weiß ich nicht wie ich es lösen soll. Am Ausgang des MCP6002 (pin7) soll die Hüllkurve raus kommen und die soll sich im bereich von 2,5v-5v bewegen. jedoch nach dem Oszyloskop zu urteilen stimmt das da schon nicht, weil sich die Hüllkurve genau in die andere richtung bewegt also zwischen 2,5v-0v. Ich habe die Schaltung schon viele male (auch in den vergangenen Tagne) kontrolliert und kann ausschließen das es falsch angeschlossen ist oder falsch/kalt gelötet. An allen anderen stellen vor der letzten instanz ist alles richtig also das Audiosignal und das Gleichgerichtete Audiosignal sind richtig und ziehmlich genauso wie auf den Bildern.
:
Bearbeitet durch User
Parceval D. schrieb: > Das einzige was jetzt noch fehlt ist das es auch von midi fähiger > software verwendet wird. Unter lmms kann man es hinzufügen jedoch kommt > kein signal an wenn man das pizo element bewegt/klopft. Wie gesagt soweit mir bekannt ist funktioniert das nicht mehr. UsbMidi braucht Bulk EPs diese sind für lowspeed Devices nicht erlaubt. Das hat lange Zeit trotzdem funktioniert, aktuelle Linux und Win Versionen sperren sich inzwischen solche Devices zu erlauben
Parceval D. schrieb: > weil sich die Hüllkurve genau in die > andere richtung bewegt also zwischen 2,5v-0v Wenn Du auf https://www.mikrocontroller.net/attachment/466450/USB-Trommel_3.jpg schaust, dann geht der positive Ausgang des Brückengleichrichters an den invertierenden Eingang von U1B, der das Signal dreht - wenn Du die Ausgänge der Brücke tauschst, sollte es richtig rum sein.
Thomas Z. schrieb: > Wie gesagt soweit mir bekannt ist funktioniert das nicht mehr. UsbMidi > braucht Bulk EPs diese sind für lowspeed Devices nicht erlaubt. Das hat > lange Zeit trotzdem funktioniert, aktuelle Linux und Win Versionen > sperren sich inzwischen solche Devices zu erlauben Achso, das ist ja Blöd :( dann probiere ich das noch mal an einem alten win7 rechner Martin H. schrieb: > Wenn Du auf > https://www.mikrocontroller.net/attachment/466450/USB-Trommel_3.jpg > schaust, dann geht der positive Ausgang des Brückengleichrichters an den > invertierenden Eingang von U1B, der das Signal dreht - wenn Du die > Ausgänge der Brücke tauschst, sollte es richtig rum sein. Das war auch mein Gedanke, wuste aber niht ob das wirklich so hinhaut. Ich werde das schnellst möglich ausprobieren.
Thomas Z. schrieb: > UsbMidi braucht Bulk EPs diese sind für lowspeed Devices nicht erlaubt. > Das hat lange Zeit trotzdem funktioniert, aktuelle Linux und Win Versionen > sperren sich inzwischen solche Devices zu erlauben Wie aktuell muss Linux sein, damit es nicht mehr funktioniert? Ein aktuelles Debian Stable (Kernel-Version 4.19.0-9-amd64) akzeptiert mein ATtiny-Board mit V-USB-MIDI, das alle 2 ms zwei Midi-Komandos sendet, ohne Probleme.
Ich habe jetzt alle Dioden umgedreht und es funktioniert :D Vielen lieben danke an alle. Und übrigends funktioniert es auch an Win10 ;). Den Tipp von Matin werde ich auch noch ausprobieren in einem weiteren modell davon. Martin H. schrieb: > Diese Z-Dioden bringen immer wieder Verdruss, ich habe stets bessere > Resultate erzielt, wenn man die AVR-Betriebsspannung auf 3.3 Volt > reduziert, entweder mit zwei Dioden oder einer roten LED wie bei > obdev.at gezeigt: > https://www.obdev.at/Images/vusb/circuit-zoomed.gif > (das geht auch mit 16 MHz bei den 20 MHz-Bausteinen, siehe den Link auf > forums.obdev.at) > > Ausführliche Diskussion zu V-USB-MIDI dort: > https://forums.obdev.at/viewtopic.php?f=8&t=1352 > > Du könntest auch meine dort beschriebene Variante V-USB-MIDI-ATtiny85 > probieren, die läuft out-of-the-box und dann durch Vergleich der Signale > den Fehler eingrenzen. > > Martin Und in dem Modell werde ich auch noch mal versuchen mich in den Code einzuarbeiten um mehr als nur eine trommel daran zu haben da ja viele Pins am m8 unbelegt sind und ich nicht tausende von den teilen bauen will um eine art schlagzeug zu haben. Aber erstmal nochmals vielen vielen dank an euch.
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.