趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。
RSS icon
  • USB-IOを動かしてみる(前編)

    投稿日 2011年 12月 5日 3個のコメント

    秋月でUSB-IOなるものをゲットしました。本来の目的は「PIC14K50を動かすための基板を作るのが面倒くさい」ということで、速攻でROMを書き換えてしまおうと思ったのですが、その前に少しだけ動かしてみました。なお、動かすにあたっては、こちらのページを参考にさせていただきました。

    この基板をLinuxMint11のマシンに接続して、dmesgコマンドを叩くと、

    $ dmesg
    (途中略)
    [16763.641868] generic-usb 0003:1352:0121.0009: hiddev0,hidraw3: USB HID v1.11 Device [Km2Net Inc. USB-IO2.0] on usb-0000:00:13.2-2.3/input0 $  

    となって、hiddev0とhidraw3というデバイスファイルができてそうな雰囲気であることがわかります。

    そこで、ターミナルを2つ開いて、

    $ sudo bash

    として、rootのシェルを2つ起動します。root権限のシェルなのは、/dev/hidraw3 へのアクセスにroot権限が必要なためです。

    この状態で一つ目のシェルで

    # od -x /dev/hidraw3

    として、hidraw3からの出力を監視します。その状態でもう一つのシェルで、

    # printf “\x00\x20” > /dev/hidraw3

    とすると、

    000xx00 0020 000f 0000 000f 0000 0000 0000 0000
    000xx20 0000 0000 0000 0000 0000 0000 0000 0000
    *
    000xx60 0000 0000 0000 0000 0000 0000 0000 1000

    という内容がもう一つのシェルに出力されます。赤文字の部分はレポートID、コマンド、ポート1の値、ポート2の値です。基板上のポート2(J2)を抵抗でGNDに落としてやると、落としたポートに応じて0fの部分が変化しました。(コマンドについてはこちらを見てください。いまひとつわかりにくい仕様ですが、「何バイト目にどんなデータが置かれるか」というフォーマットになっているようです。)

    さらに、

    # printf "\x00\x0f9\x00\x00\x00\x00\x0fe\x0f\x00\x00\x00\x00" > /dev/hidraw3

    として、ポート1のビット0を出力に設定します。ここで一旦USBケーブルを抜いて、差しなおします。その後、監視側の od コマンドを再実行したあと、

    # printf "\x00\x20\x01\x01" > /dev/hidraw3

    とすると、ポート1のビット0がH出力になるので、そこに接続されたLEDが点灯します。次に、

    # printf "\x00\x20\x01\x00" > /dev/hidraw3

    とすると、LEDが消灯します。