mikrocontroller.net

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


Autor: Frank Esselbach (Firma: Q3) (qualidat)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: frag (Gast)
Datum:

Bewertung
-1 lesenswert
nicht 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...

Autor: Frank Esselbach (Firma: Q3) (qualidat)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Frank Esselbach (Firma: Q3) (qualidat)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Frank Esselbach (Firma: Q3) (qualidat)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.