USB Steuerung mit dem Cypress CY7C6300 Mikrocontroller

Aus Technik-fan.de Wiki
Version vom 29. Januar 2011, 21:57 Uhr von Admin (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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