Allgemeines
|
Mit dem Aussterben der
Legacy-Anschlüsse (RS232- und
Parallelport) muss der Bastler auf den USB-Port
umsteigen, wenn er ein Bastelprojekt mit dem PC verbinden
will. An anderer
Stelle auf der Hompage habe ich die Informationen
vermittelt, die nötig sind, um mit USB-PIC-Controllern ein
USB-Interface zu entwickeln. Viele Bastler haben aber nicht die Zeit, um tief in die Softwareinnereien des USB-Interfaces einzudringen. Sie hätten lieber eine fertige Lösung, die man als "Black-Box" in sein Bastelprojekt einbaut, und die alle USB-Probleme löst. So etwas gibt es schon: die IO-Warrior. Die Chips dieser Familie werden zu einem fairen Preis vertrieben, und vereinfachen die Entwicklung von USB-Geräten ungemein. Sie haben aber auch einige Schwächen und Grenzen. Deshalb habe ich auf Basis des PIC18F2455 meinen eigenen Interface-Chip entworfen, der meinen Ansprüchen eher genügt. Ich nenne ihn USB4all. Es gibt ihn in zwei Geschmacksrichtungen:
|
IO-Warrior |
USB4all-MCD |
USB4all-CDC |
|
Vorteile |
erprobte Lösung, einige Typen brauchen keinen Quarz, bus-powered bis zu 500mA, Entwicklungsumgebung, benötigt keinen Treiber, |
Firmware kann mit Bootloader
aktualisiert werden, schnellere USB-Anbindung, analoge Eingänge mit 10- oder 12-Bit-ADC, PWM-Ausgänge (quasi analog), Schrittmotorausgang, Frequenzmesseingang, interner EEPROM, Servoansteuerung, höherer Datendurchsatz, |
Firmware kann mit Bootloader
aktualisiert werden, analoge Eingänge mit 10- oder 12-Bit-ADC, PWM-Ausgänge (quasi analog), Schrittmotorausgang, Frequenzmesseingang, interner EEPROM, Servoansteuerung, benötigt keinen Treiber, |
Nachteile |
keine analogen Ein-oder Ausgänge, Steuerbefehle mit geringem Komfort, |
etwas höherer Bauteileaufwand, Ansteuerung über spezielle Softwareschnittstelle, keine Entwicklungsumgebung, bus-powered bis maximal 100mA, |
etwas höherer Bauteileaufwand, bus-powered bis maximal 100mA, |
PC sendet zum USB4all |
Bedeutung | USB4all antwortet |
0x55 - 0x01 - 0x00 | Einschalten des LCDs mit der Standardkonfiguration 2-Zeilen x 16-Zeichen | 16 Nonsens-Bytes |
0x55 - 0x02 -'A' | Senden des 'A' | 16 Nonsens-Bytes |
PC sendet zum USB4all | Bedeutung | USB4all antwortet |
0x55 - 0x01 - 0x00 |
Einschalten des LCDs mit der Standardkonfiguration 2-Zeilen x 16-Zeichen | 16 Nonsens-Bytes |
0x55 - 0x02 - 0x0A - 'Hallo Welt' | Senden von 'Hallo Welt' | 16 Nonsens-Bytes |
PC sendet zum USB4all |
Bedeutung | USB4all antwortet |
0x51 - 0x01 - 0x01 - 0x00 |
Einschalten des ADC mit
einem analogen Eingang, AN0 ist ausgewählt |
16 Nonsens-Bytes |
0x51 - 0x03 | Abfragen der Spannung |
0x51 - 0x03 - low - high |
PC sendet zum USB4all |
Bedeutung | USB4all antwortet |
0x54 - 0x01 - 0x00 - 0x00 |
Einschalten des I2C-Busses | 16 Nonsens-Bytes |
0x54 - 0x05 - 0x48 - 0x02 |
Abfragen der Temperatur |
0x00 - 0x05 - 0x48 - 0x02 -
Grad - Nachkommastelle |
PC sendet zum USB4all |
Bedeutung | USB4all antwortet |
0x57 - 0x01 - 0x00 |
Einschalten des PWM1 mit 47 kHz, 8 Bit Auflösung | 16 Nonsens-Bytes |
0x57 - 0x02 - 0x80 - 0x00 |
Tastverhältnis 50 % |
16 Nonsens-Bytes |
PC sendet zum USB4all |
Bedeutung | USB4all antwortet |
0x5D - 0x01 | Einschalten des 1. Schrittmotorinterfaces | 16 Nonsens-Bytes |
0x5D - 0x02 - 0x32- 0x00- 0x06- 0x00 | sofort 50 Halbschritte
rechtsherum mit 1000 Hz drehen |
16 Nonsens-Bytes |