USB Steuerung mit dem Cypress CY7C6300 Mikrocontroller
Hier wird eine Möglichkeit der Hardware Steuerung mit Debian Linux erläutert. Ziel ist es, Funksteckdosen über das Internet schalten zu können. Das Herz unserer Schaltung stellt der USB Mikrocontroller Cypress CY7C6300 dar. Dieser kommuniziert direkt über den USB Port und stellt wahlweise 8 Ein oder Ausgänge bereit. Eine komplette Platine zum Experimentieren kann bei der AK Modul-Bus Gmbh bezogen werden. Dabei kostet der bereits mit passender Firmware geflashter Chip etwa 15 Eur. Darüber hinaus werden noch 2 Widerstände und ein Quartz mit 6 Mhz benötigt. Der Cypress CY7C6300:
Wird der Controller an den USB Port eines Linux Rechners angeschlossen wird er automatisch initialisiert und die passenden Module werden geladen:
dmesg
Es erscheint dann:
[ 152.440000] usb 1-2: new low speed USB device using uhci_hcd and address 2 [ 162.612000] usb 1-2: configuration #1 chosen from 1 choice [ 167.740000] cypress_cy7c63 1-2:1.0: Cypress CY7C63xxx device now attached [ 167.740000] usbcore: registered new interface driver cypress_cy7c63
Nach dem Laden des Treibers wird ein Port zum steuern angelegt, dieser ist im folgendem Pfad zu finden(Die USB ID wird von dmesg übernommen):
/sys/bus/usb/drivers/cypress_cy7c63/1-2:1.0/port0
Um die Ports einzulesen ist folgender Befehl nötig:
cat /sys/bus/usb/drivers/cypress_cy7c63/1-2:1.0/port0
Um die Ausgänge ansteuern zu können benötigen wir diesen Befehl:
echo 128 > /sys/bus/usb/drivers/cypress_cy7c63/1-2:1.0/port0
Die Ports werden ähnlich wie die parallele Schnittstelle binär codiert angesprochen. Aus den Beispielen ergibt sich die entsprechende Codierung: Ersten Port einschalten(2 hoch 0):
echo 1 > /sys/bus/usb/drivers/cypress_cy7c63/1-2:1.0/port0
Ersten und zweiten Port einschalten(2 hoch 0 + 2 hoch 1):
echo 3 > /sys/bus/usb/drivers/cypress_cy7c63/1-2:1.0/port0
Ersten und dritten Port einschalten(2 hoch 0 + 2 hoch 2):
echo 5 > /sys/bus/usb/drivers/cypress_cy7c63/1-2:1.0/port0
Referenzen