MSR
mit dem USB
- Franzis-Buch MSR mit USB
- FAQ und Berichtigungen zum Buch
- Treiberentwicklung für USB-Geräte
Wer bisher schon mit der RS232 gearbeitet hat, fragt sich seit einiger
Zeit, ob wohl auch der USB für MSR-Projekte eingesetzt werden kann.
Das Thema verfolgt mich auch schon etwas länger. Einige Ergebnisse
liegen nun vor, aber die Einarbeitung war nicht ganz einfach. Hier sind
einige Informationsquellen, die auf dem Weg zum USB nützlich sein
könnten.
Aktuelle Treiber:
Aktuelle Software zum CompuLAB-USB:
Das Programm stammt von Hans-Joachim Berndt und wird ausführlich
auf seiner Homepage http://www.hjberndt.de
beschrieben. Die letzten Änderungen verbessern das Verhalten unter
Windows XP-pro.
Weitere Infos zum Thema USB:
- USB im WDR-Computerclub Classic am 17.2.01 (www.wdrcc.de).
Wolfgang Rudolph und Wolfgang Back stellten Geräte und Software zum
USB vor. Ich war zu Gast und zeigte das USB-Interface von Elektor, das
CompuLAB-USB und das SERAI-8/12-USB von Modul-Bus im Einsatz. Die verwendete
Software war u.a. Turbo-Compact von H.-J. Berndt, der einige Bilder aus
der Sendung auf seine Homepage gestellt hat (www.hjberndt.de/soft/cc.html).
- Ein neuer Treiber für das USB-Thermometer,
Treiberentwicklung für USB. Wer z.B. das Elektor-USB-Interface
verwendet oder das Cypress-Starterkit hat, ist vielleicht auch schon auf
die Treiberproblematik gestoßen. Wie kann man mehrere USB-Geräte
gleichzeitig betreiben, wie klappt es unter Windows 2000, und wie kann
man seinen eigenen Treiber entwickeln?
- www.usb.org: hier sitzen die
Päpste des USB. Das wichtigste Werk sind die USB-Spezifikationen,
die sich jeder im PDF-Format herunterladen kann. Eigentlich steht da alles
drin. Wenn man allerdings allein auf diese Quellen angewiesen wäre,
müsste man wirklich verzweifeln.
- Das Starterkit von Cypress (www.cypress.com)
zum USB-Mikrocontroller CY7C63000 mit einem USB-Thermometer als Anwendungsbeispiel.
Dieses preiswerte Einsteigerkit ist leider nicht mehr erhältlich.
Mein Eindruck ist, dass es sehr viel verkauft wurde und jetzt in irgendwelchen
Ecken rumliegt. Das Problem war, dass die Windows-Seite des USB zu wenig
beleuchtet wurde. Etwas verspätet wurde das Kit aber doch noch zu
einer Erleuchtung für mich, weil sich die gut dokumentierte Controller-Software
als echte Hilfe erwies.
- Craig Peacock (www.beyondlogic.org)
hat einen eigenen Treiber für das USB-Thermometer geschrieben. Er
liefert entscheidende Einblicke und dokumentiert den Aufbau eines USB-Treibers.
Auch sonst hat die Seite zum Thema USB einiges zu bieten.
- Elektor (www.elektor.de)
stellt im Septemberheft 2000 ein kleines USB-Interface vor, das ich aus
dem USB-Thermometer von Cypress weiterentwickelt habe. Man kann damit einige
Ausgänge steuern und Eingänge abfragen. Wer das Starterkit von
Cypress verpasst hat, erhält hier seine zweite Chance. Unter www.mdetroy.de
findet man eine Weiterentwicklung der Software.
- Im Oktoberheft von Elektor wird näher auf die Software eingegangen.
Dazu gibt es ein Beispiel in Delphi: Ein Thermostat mit dem Elektor-USB-Interface.
Und hier ist die Software: USB
in Dephi (USBDEL.Zip, 156 k)
- Franzis (www.franzis.de)
hat bereits ein Buch zum USB (H.J.Kelm (Hrsg.), USB 1.1) und nun mein Buch
"Messen, Steuern, Regeln mit dem USB"
heraus. Schwerpunkte sind u.a. Entwicklungen mit dem CY7C63000 von Cypress
und dem EZ-USB von Anchor-Chips.
- Das Starterkit von Anchor-Chips (jetzt unter Cypress, www.cypress.com)
zum EZ-USB (AN2131). Es handelt sich um einen 8051-kompatiblem Prozessor
mit internem RAM und USB-Kern. 8051-Programme können direkt über
den USB in das Prozessor-RAM geladen und gestartet werden. Der USB-Kern
nimmt dem Anwender so viel Arbeit ab, dass man mit sehr kleinen Programmen
von wenigen Bytes sinnvolle USB-Anwendungen schreiben kann. Einzelstücke
dieses Prozessors kann man bei Modul-Bus
bestellen.
- Die Firma Modul-Bus stellt das CompuLAB-USB neben dem CompuLAB für
die RS232 her. Es verwendet den Prozessor CY7C63001. Das Gerät hat
acht digitale Ausgänge, acht digitale (wahlweise analoge) Eingänge
und zwei Analogeingänge mit 10 Bit Auflösung. Der Aufbau des
Geräts wird in meinem USB-Buch dokumentiert. Das Programm Compact2000
unterstützt das CompuLAB-USB und andere Interfaces an der seriellen
Schnittstelle. Die neueste Version TurboCompact kann beim Programmautor
H.-J. Berndt
geladen werden.
- Das SERAI8/12-USB ist ein weiteres USB-Interface der Firma Modul-Bus
. Es bietet acht Analogeingänge mit 12 Bit Auflösung
sowie bis zu 18 IO-Leitungen und einen I2C-Bus. Das Gerät enthält
einen AN2131 und eignet sich auch als allgemeines Entwicklungssystem zum
EZ-USB. Es gibt mehrere Varianten des Geräts als reines Analoginterface,
als Entwicklungssystem zum AN2121 mit 4 K RAM und als Entwicklungssystem
zum AN2131 mit 8 K RAM. Ein Punktraster-Experimentierfeld ermöglichst
den Aufbau mit zusätzlicher Peripherie.
- Karsten
Böhme hat die Ansteuerung des EZ-USB in Visual Basic 6 realisiert.
Das Modul EZusb.bas und ein Beispielprogramm können hier geladen werden.
ezusbvb6.zip (16 K, letztes update 3.1.01,
jetzt mit Bulk-Transfer). Inzwischen gibt es auch ein Shareware-OCX für
EZ-USB, das man bei Braintechnology
laden kann.
- Martijn Plak hat einen USB-Treiber für das USB-Thermometer
am Macintosh entwickelt: "I've put a first version of my 'Thermometer'
USB driver for MacOS online. It works with the Cypress USB interface as
published in Elektuur/Elektor. I've called it CyLab." http://www.plak.net/cylab/
- In Elektor 1/2002 erscheint der USB-UART. Der Chip
wird mit der Elektor-Vendor-ID und einem eigenen Treiber geliefert. Alle
Port-Anschlüsse des CY7C63001A können jetzt beschrieben und gelesen
werden. Zusätzlich kann der Sink-Strom jedes einzelnen Pins mit einer
Auflösung von 4 Bit eingestellt werden. Hier die Beispielprogramme
in VB (usbuart.zip, 16 k), die man auch schon ohne die Hardware
ausprobieren kann.
- Update für den Treiber zum Elektor-USB-UART:
In der INF-Datei zum Treiber wurden nach freundlichen Hinweisen aus der
c't-Radaktion im Zusammenhang mit dem ähnlichen Bausten "USB-Port"
von Modulbus einige Anpassungen vorgenommen, die sich vor allem bei Win
2000 und Win XP auswirken und die Installation vereinfachen: UARTINF.zip
(10k)
- Auf der Elektor-Homepage gibt es im Download-Bereich
zu Heft 5/2002 einen weiteren Treiber für den USB-UART, der für
Windows-XP optimiert wurde. www.elektor.de
- USB-UART in Delphi: Von Eduard Balczarczyk stammt die folgende Delphi-Unit
für den Elektor-USB-UART. USB_In_O.pas
(usbuadel.zip, 1k). Die Unit unterstützt alle Funktionen des Chips,
die in Elektor mit Visual Basic vorgestellt wurden.
- Am 1.6.2002 stellt Wofgang Rudolph den USB-UART im WDR-Computerclub
in der praktischen Anwendung vor. Für die kommenden Sendungen sind
weitere Hobbyanwendungen gelpant. Zuschauer, die eigene Anwendungen mit
dem Chip entwickelt haben, sind aufgerufen, ihre Ideen mitzuteilen.
- Eine Facharbeit zum CompuLAB-USB von Albert Frisch. Es wird ein Delphi-Programm
entwickelt und die Theorie zum USB ausführlich erläutert: http://fba.home.dyndns.org
- Tschechische Ausgabe meines USB-Buchs beim Verlag
BEN : B.Kainka, USB, Prag 2002
- Modul-Bus bietet eine neue Platine zum USB-Portchip
an. Außerdem wurden mit Hilfe der c´t-Redaktion Treiberprobleme
mit Windows XP beseitigt. www.modul-bus.de/mbnews
In c't Heft 17 (12.8.02) gab es eine Hardware-Übersicht zum Thema
"USB: Messen und Steuern", in der auch die Geräte von Modul-Bus
besprochen wurden. www.heise.de
- In c´t Heft 19/2002 ist unter dem Titel "Angegrillt"
ein konkretes Hardwareprojekt mit dem Portchip zu finden. Über den
Portbaustein wird ein Grillmotor gesteuert, um eine Webcam zu drehen. Besonders
interessant sind die Software-Beispiele in Microsoft Visual C++ 6.0 und
in Delphi (Soft-Link 0219196) www.heise.de/ct/ftp/02/19/196/
- Einen weiteren C-Quellcode findet man bei Manfred Ebert: www.bcb-box.de/fstart.htm
Die API-Befehle CreateFile und DeviceIoControl werden verwendet . Es wird
das USB-Interface aus Elektor 9/10-2000 benutzt.
Tipps und Tricks zum USB
1. Anschlüsse
USB-Anschlussbuchsen
bekommt man bei Conrad (www.conrad.de).
Was dem Bastler gleich ins Auge springt, ist die Betriebsspannung am USB.
In der Tat, hier kann man ohne Probleme 5 V und bis zu 100 mA abzapfen.
2. Erfahrungen mit einer USB-Soundkarte
USB-Sound-Ausgabesysteme
sind relativ preiswert. Sie installieren sich im System wie eine interne
Soundkarte. Einige Programme, die in dem Buch "PC-Schnittstellen
unter Windows" vorgestellt wurden, laufen auch mit dem USB-Gerät.
Besonders der Einsatz als Sinusgenerator für Messzwecke hat sich als
sinnvoll erwiesen.
3. Erfahrungen mit einem USB-Gamecontroller
Ein USB-Joystickport installiert sich u.a. mit einer Dos-Emulation.
Damit ist der direkte Zugriff auf virtuelle Portadressen einer Gamekarte
möglich. Einige Programme zum Gameport aus dem Buch "PC-Schnittstellen
unter Windows" funktionieren auch mit der USB-Variante. Man hat damit
immerhin ein einfaches USB-Unterface mit vier analogen und vier digitalen
Eingängen.
4. Ports lesen mit Delphi beim USB-Thermometer
oder Elektor-USB-Interface
Das Delphi-Beispiel zum USB-Thermostat zeigt, wie man Ausgänge
schaltet, nicht aber, wie man in Delphi Eingänge liest. Dazu dienen
die folgenden Programmzeilen.
lIn.bFunction := 20; {Read Port}
lIn.bValue1 := 1; {Port 1}
bResult := DeviceIoControl(DeviceHandle,$04,@lIn,sizeof(lIn),@lOut,sizeof (lOut),nBytes,nil);
Port1Data := lOut.bValue1; *)
lIn.bFunction := 20; {Read Port}
lIn.bValue1 := 0; {Port 0}
bResult := DeviceIoControl(DeviceHandle,$04,@lIn,sizeof(lIn),@lOut,sizeof (lOut),nBytes,nil);
Port0Data := lOut.bValue1