Hallo, ich bin auf der Suche nach einer Library, die unter Bascom ein Soft-USB bereitstellt (CDC oder HID). Leider bin ich in C nicht so firm, dass ich eines der vielen Software-USB-Beispiele dafür anpassen könnte, die es im Web so gibt. Könnte natürlich sein, dass es aus bestimmten Gründen nicht möglich ist, dann bitte ich darum, dieses hier zu diskutieren. Danke. Frank
Du willst also einen AVR ohne Hardware-USB verwenden? Das USB-Timing ist kritisch, Als Software in Bascom ohne Assembler meiner Mainung nach nicht zu machen. Nimm einen AVR mit USB, dann gibt's dieses add-on und es funktioniert auch: http://www.mcselec.com/index.php?page=shop.product_details&flypage=shop.flypage&product_id=173&category_id=6&option=com_phpshop&Itemid=1
> Du willst also einen AVR ohne Hardware-USB verwenden? Das USB-Timing ist > kritisch ... Ich hörte/las, dass es bei USB einen Low-Speed-Modus gibt. Dass damit keine großen Dinge machbar sind ist klar, aber vielleicht diese oder jene Kleinigkeit. Ginge da Nichts im Interrupt? Evtl. könnte man als HID-Device zwischen Programm-Abarbeitung und USB-Kommunikation umschalten? Wie schnell wird die Verbindung eigentlich nach einer (software-seitigen) Unterbrechung wieder aufgenommen? Wenn das geht, könnte man ja einen Puffer mit Daten füllen und dann für 1 Sekunde in den USB-Modus schalten, die Daten senden, evtl. welche empfangen und sich dann wieder ausklinken ... ? Frank
USB ist kein "Bus", sondern eine Strikte Host/Device-Architektur. Dein AVR kann also nicht einfach senden, wenn er grad Lust und Daten hat, er muss warten bis der PC ihn dazu auffordert. Und nach der Aufforderung muss er sofort antworten (minimaler Timeout). Das ist schon in C fast nicht hinzubekommen, diese Software-Implementierungen machen das alle mit ASM. Dabei ergeben sich dann sogar noch Einschränkungen für den restlichen Application-Code, wie z.B. andere ISRs / Bereiche mit ausgeschalteten IRQs dürfen max. xx Taktzyklen lang sein usw. einfache Lösung: Nimm nen zweiten AVR (Tiny25/45/85 z.B.), lass den das ganze USB machen, und dein "Haupt"-AVR beschickt den nur mit Daten (über SPI/I2C/UART) Ist immernoch billiger als ein FT232...
OK. Lass' und das mal bitte unter dem speziellen Aspekt HID diskutieren. Beispiel zweite Tastatur (gerade eben ausprobiert). Wenn ich die an meinen Mac stecke, wird die innerhalb einer nicht fühlbaren Zeit angemeldet und ich kann sie parallel zur ersten benutzen** Ich kann sie abziehen - nix passiert. Ich stecke sie wieder an, sie ist (quasi) sofort verfügbar. Dass die eigentlichen USB-Routinen in C oder Assembler sein müssen, ist mir klar. Aber wenn man, wie oben beschrieben, zwischen den Programmen umschalten könnte ... Wenn man die USB-Pins hochohmig schaltet, sollte das doch den gleichen Effekt wie Stecker rausziehen haben, oder? Frank **(ausser beim allerersten mal, da kommt ein Dialog zur Layouterkennung, dann aber nie wieder)
Das kannst du natürlich versuchen. Dafür würds reichen, den Pullup, der an einer der Datenleitungen hängt, schaltbar zu machen. Wie und ob du die beiden Programmteile dann aber zusammenlinken kannst.... Keine Ahnung. Rein theoretisch sollte das ganze auch ohne ständiges an- und abmelden in Bascom gehen (Die armen Windows-User würden bei dem ständigen ding-dong-device erkannt ja wahnsinnig werden), vermutlich mit der Einschränkung dass keine anderen Interrupts verwendet werden dürfen, und evtl einige Libraries nicht mehr gehen...
> Rein theoretisch sollte das ganze auch ohne ständiges an- und abmelden > in Bascom gehen (Die armen Windows-User würden bei dem ständigen > ding-dong-device erkannt ja wahnsinnig werden), vermutlich mit der > Einschränkung dass keine anderen Interrupts verwendet werden dürfen, und > evtl einige Libraries nicht mehr gehen... :-) Windows-User ... Ja, ok. Jetzt müsste sich nur noch jemand finden, der in der Lage ist, so eine Bacom-Lib oder einen einfügbaren ASM-Block zurechtzufriemeln :-( (So schnell können Stimmungen schwanken ...) Frank
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.