USB-IOを動かしてみる(前編)

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

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

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

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

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

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

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

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

とすると、

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

さらに、

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

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

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

3 Replies to “USB-IOを動かしてみる(前編)”

  1. 初めまして。seijiと申します。
    現在、Linux (Ubuntu 16.04)で秋月のUSB-ioを使って、キーボードの1を押したら緑、2を押したら黄色、3押したら赤のLEDが点灯するようにしたいと思い、調べていましたら、貴殿のサイトにたどり着きました。貴殿にとりましては少し古い話で恐縮ですが、上記の通りやって見ましたところ、ポート1の0〜3までLEDが点灯し、printf “\x00\x20\x01\x00” > /dev/hidraw3で消灯しません。どんな問題が考えらえられますでしょうか?
    いまいち、printf の各x??の意味合いがわかっておりません。ご指南いただければ幸いです。LInux関係の情報がことごとくリンクがきれていたり、ネットで見つかったサンプルプログラムもkernelバージョンの関係か上手く動かない状況です。
    以上、宜しくお願いします。

  2. ともの様

     seijiです。その後、何度かトライしていましたら、ご案内のようにJ1ポートの、j1-0、j1-1、j1-2のLEDをそれぞれ、x01、x02、x04で点灯、x00で消灯できました。しかし、PCの電源を落としますと、hidrawXのXが動きます。これはどのようにフォローすればよろしいのでしょうか?ご教示いただければ幸いです。

    1. 返信遅くなりました(最近、忙しくてたまにしかみてないもので・・・)
      本題ですが、あまり詳しく調べてないのでうまくいくかは全くわかりませんが、udevルールでデバイス名を固定する、という手段はありそうです。
      例えば↓のやり方とかどうでしょう??
      https://qiita.com/caad1229/items/309be550441515e185c0
      (USB-IOってベンダID/デバイスIDとして何を返していたか確認してないですが)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)