Hallo zusammen. Ich habe von einem Bekannten (Elektronikbastler) einen Digispark Mini geschenkt bekommen. Die Treiber habe ich installiert, den Digispark habe ich in die Arduino IDE eingebunden und anschließend ein Beispielprogramm geflasht, was auch das tut was es soll (die auf dem Board aufgelötete LED blinken lassen). Nun möchte ich ein kleines Programm schreiben, welches über USB (über den virtuellen COM-Port -> USB) ein paar Zeichen ausgibt. Allerdings erscheint der Digispark nicht als virt. COM-Port in meinem Gerätemanager unter Windows, auch nicht im Terminal erscheint ein COM-Port, den ich auswählen könnte. Könnt ihr mir weiterhelfen oder hattet ihr bereits ähnliches "Problem", dass der Digispark nicht als COM-Port aufgeführt wird? Eine Verbindung hat der Digispark ja zum OS, sonst hätte ich ja offensichtlich nicht das Beispiel-Blink-Programm flashen können. In der Arduino IDE erscheint als ausgewähltes Modul übrigens unten rechts im IDE-Fenster "Digispark (Default - 16.5Mhz) auf COM7". Vielen Dank und Gruß
Ok, danke! Immerhin konnte ich jetzt schon mal anhand deines Links die Lib einbinden und den Controller mit der eingebundenen Lib flashen. Allerdings wird weiterhin der Controller nicht als virt. COM-Port (im Terminal und im Gerätemanager) erkannt. Nach dem Flashen und erneutem Einstecken des Digisparks erscheint in Win10 die Meldung, dass es sich um ein "unbekanntes USB-Gerät" handelt (und somit nicht genutzt werden kann). Sämtliche Versuche haben nun auch nicht weitergeholfen. Also doch wieder so ein schnell produzierter und wackelig funktionierender Schrott :-(
Joh schrieb: > Also doch wieder so ein schnell produzierter und wackelig > funktionierender Schrott Das Ding nutzt V-USB, und CDC (serielle Schnittstelle) ist via V-USB nicht unter Einhaltung der USB-Spezifikation umsetzbar. Ältere Betriebssysteme waren da etwas toleranter. Schrott ist das Ding trotzdem nicht, denn niemand zwingt einen, CDC damit umzusetzen. Für Tastatur-, Maus- oder Joystick-Anwendungen lässt sich das Biest nämlich auch einsetzen, das alles nutzt HID, und das kann mit V-USB spezifikationskonform umgesetzt werden.
Ok.. Und wie bringe ich das Gerät nun dazu, dass es als virt. COM-Port ein harmloses Zeichen an den PC (Terminal) schickt? Treiberinstallation hat auch mit der HID-Lib ("keyboard example") funktioniert..
Jk schrieb: > Und wie bringe ich das Gerät nun dazu, dass es als virt. COM-Port ein > harmloses Zeichen an den PC (Terminal) schickt? Gar nicht. Virtueller COM-Port setzt CDC voraus, und das kann V-USB nicht standardkonform umsetzen, weswegen Dein Windows sich dem ganzen verweigert.
> Und wie bringe ich das Gerät nun dazu, dass es als virt. COM-Port ein > harmloses Zeichen an den PC (Terminal) schickt? Das tut es schon. Du stellst die Falsche Frage. Du solltest fragen: Wie bringe ich mein Windows dazu, dieses Gerät zu akzeptieren. Versuche es mal mit Linux, könnte aufschlussreich sein. Vor allem die Ausgabe des "dmesg" Befehls.
Also Voraussetzung für mein Vorhaben ist explizit Windows (XP-10). Wenn es -egal ob es nun am OS des PCs oder am Digispark liegt- nicht funktioniert, muss ich wohl oder übel auf eine andere wenn auch überdimensionierte Plattform mit hardware-USB-Converter (Arduino Nano) zurückgreifen.. Schade..
Oder ein Bluepill Board (STM32F103C8T6). Ist momentan billiger als Arduino, hat mehr Speicher und viel schneller.
Jk schrieb: > muss ich wohl oder übel Oder auf CDC verzichten. Wenn Du einfach nur ein paar Zeichen ausgeben willst, kann sich Dein Digispark auch als USB-Tastaur verkaufen. Das ist HID, und das ist spezifikationskonform mit Low-Speed-USB umsetzbar.
Ja, das mit dem HID hatte ich vor. Leider habe ich nichts brauchbares gefunden, wie der Controller Daten empfängt. Nur, wie er Daten rausschickt (wenn der Digispark z.B eine
Suche mal nach "Beetle ATMEGA32U4". Ist nicht viel größer, als der Digispark. Aber kann deine virtuelle Serielle. noch nicht getestet
Also nochmal: Gibt es eine Möglichkeit, nach der Treiberinstallation den angeschlossenen Digispark in Windows als virtual-COM-device anzusprechen?
Nur unter alten Windows-Versionen. Sonst nicht, weil das Ding nur Low-Speed-USB unterstützt, und das für serielle Schnittstellen nötige CDC-Protokoll nicht spezifikationskonform mit Low-Speed-USB realisierbar ist. Daß das überhaupt irgendwo funktioniert, liegt an einer sehr laxen Auslegung der USB-Spezifikation durch alte Betriebssystemversionen. Du musst also entweder ein USB-Protokoll verwenden, das mit Low-Speed-USB auskommt (was die serielle Schnittstelle ausschließt) oder einen anderen Controller mit USB-Hardware (wie den Atmega32U4) verwenden.
:
Bearbeitet durch User
Noch eine Frage zu dem HID: Da das HID ja bei mir vom example-Sketch funktionierte und der Digispark auch eine Tastatur emulierte (habe ich im Editorfenster gesehen), ist es auch möglich, dass der Digispark über den HID-Mode Daten empfangen kann? Schließlich wäre das ja genau jenes, was ich bräuchte?! Gruß
joh schrieb: > ist es auch möglich, dass der Digispark über den HID-Mode Daten > empfangen kann? Ja, HID-Geräte können auch Daten empfangen. Die LEDs von Tastaturen beispielsweise werden auf diese Art angesteuert, oder "force feedback"-Joysticks. Nur funktioniert das über komplett andere Systemfunktionen als die Ansteuerung einer (virtualisierten) seriellen Schnittstelle.
Naja, das müsste ich dann entsprechend für die Windows-Applikation programmieren, dass ein "Zeichen über HID" gesendet werden soll und eben nicht über den virt. COM-Port. Das ist dann der nächste Step.. Ich würde das Ganze für den PC in VB.net (Visual Studio) programmieren wollen. Die App soll einfach nur zwei Buttons beinhalten, woraufhin die Pins des Digisparks nach Anklicken auf HIGH oder LOW gehen. Gruß
Nochmals final den Frust ablassen: - Nach mehrstündigen Versuchen scheint es weder über DigiUSB/CDC oder anderweitig (trotz Einarbeitung in dürftige "Tutorials" im Internet) nicht zu klappen. Es ist auch nicht ein einziges Beispiel im Netz zu finden, wo von oben bis unten beschrieben ist, wie man selbst die mitgelieferten Beispiel-Sketches zum Laufen bringt. Doch scheint mein Vorhaben so einfach zu sein: Ein Zeichen via USB an den Digispark zu senden, woraufhin er die onboard-LED ein/ausschalten soll. Naja, dann wars das mit Digispark erstmal. Somit ist das Ding (für mich und mein ach so ominöses Projekt) unbrauchbar. Die Hypes im Netz über so ein Ding verstehe ich dann trotzdem nicht.
Welche Hypes? Das Teil hat nicht einmal eine richtige USB Schnittstelle! Wer vom Fach ist, weiß dass man davon ungefähr so viel halten kann, wie von Lautsprecherboxen aus Plastik oder Goldfisch-Gläser ohne Filteranlage oder Haarschneider am Staubsauger-Rohr oder Edel-Fleece Pullover mit Cashmeregriff von QVC.
Stefan U. schrieb: > Das Teil hat nicht einmal eine richtige USB Schnittstelle! Das ist natürlich wahr. Allerdings schafft es die Arduino IDE auf dem Weg da Software drauf zu spielen. Auch unter Win 10. Das ist der Beweis für: Unmöglich ist es nicht. Ist vielleicht nicht jedermanns Sache selber einen Treiber für Win 10 zu schreiben. (Meine jedenfalls nicht) Und sowieso reichen meine USB Kenntnisse dafür nicht aus. Joh schrieb: > - Nach mehrstündigen Versuchen scheint es weder über DigiUSB/CDC oder > anderweitig (trotz Einarbeitung in dürftige "Tutorials" im Internet) > nicht zu klappen. Habe das mal (wieder) kurz getestet. Wenn ich einen solchen präparierten Digispark(Klon) in mein Win10 stecke gibts einen blauen Bildschirm. Natürlich mit dem zwangsläufig folgenden Win Neustart. Wie gesagt, bei mir sind für solche Zwecke "Beetle 32U4" im Einsatz. Die haben solche Probleme nicht. Und sind nur unwesentlich größer.
> Ist vielleicht nicht jedermanns Sache selber einen Treiber für > Win 10 zu schreiben Das ist der Knackpunkt. Wenn du doch in diese Richtung weiter forschen möchtest, könnte der generische libusb Treiber hilfreich sein, den letztendlich auch Arduino (wegen avrdude) verwendet. Ich würde dann mal dessen Dokumentation lesen. Allerdings fürchte ich, dass man dazu erstmal lernen muss, wie USB überhaupt funktioniert und die Fachbegriffe dazu. Für meinen Hausgebrauch bevorzuge ich µC Platine mit USB-UART. Mit dem STM32F103 komme ich klar, denn dazu liefert der Hersteller eine USB-UART (CDC) Library.
Stefan U. schrieb: > könnte der generische libusb Treiber hilfreich sein, den > letztendlich auch Arduino (wegen avrdude) verwendet. verwendet wird nicht avrdude, sondern micronucleus.exe. Aber ansonsten hast du natürlich recht.
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.