Forum: Mikrocontroller und Digitale Elektronik USB-Lib für Bascom


von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

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

von frag (Gast)


Lesenswert?

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

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

> 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

von Εrnst B. (ernst)


Lesenswert?

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...

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

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)

von Εrnst B. (ernst)


Lesenswert?

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...

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.