Zedomax DIY121 -どのようにあなたの"PS3のSIXAXISコントローラを作ること"スタイルのBASICのプログラム可能なUSBデバイス!
のUSBデバイス用のユーザーは簡単にインストールされ、設定(限り、すべてが正常に)働いている。 多くの場合、単にUSBデバイスを接続してすぐに動作します。 これは特に、マウスやキーボードなどの入力デバイス用にはtrueです。
これらのデバイスの仕様は、USBプロトコルの上に重ね: ヒューマンインターフェイスデバイスに適合する。 入力のほとんどすべての可能な型が定義され、全体の"レポートの記述、"言語をどのように入力を処理するためにコンピュータに指示するために使用されます。 これは非常に実装するために単純ではない、特定の要求数十人が正しく処理される必要があります。 あるUSBデバイスをプラグインする間に多くの手順を実行して使用することがされている、これらの全てはほんの数ミリ秒の任意のステップの失敗で行われる動作しないデバイスを意味します。
何をしている場合していない任意のを心配する? どのような場合は、お好みのマイクロコントローラを使用し、"何か"を入力して、正しい形式では、コンピュータに表示される? 複雑なUSBコードを心配する必要はない、HIDの仕様の場合、または必要な他の関数を追加するお使いのUSBコードを壊す。 あなたはあまり書くコードを最適化、または常にUSB割り込みの方法で取得する方法について心配する必要はない。
HIDのポータル
それこそまさに、どうすればよいことになりました。 年ほど前、私は、USBデバイスの開発、およびUSB HIDおよび実行を上がると、すべての頭痛の種を行った。 以来、私は既にハード仕事があったので、別のマイクロコントローラからデータを受信するメソッドを追加して使用して決定したHIDのコードを入力ストリームとしてデータです。 私Cubloc BASICの、私の入力データを処理するには、HIDポータルに送信するプログラマブルコントローラを使用していた。 私のテストアプリケーションの加速度ベースのHIDのジョイスティックになる、単にコンピュータにデバイスを接続して動作します。
これは、ジョイスティックをする必要があるわけではなく、キーボード、マウス、または他の多くのコントロールは、HID標準によって定義されることができます。 これは、デバイスにボリュームコントロールボタンを追加することが可能です...多分回路をお使いのコンピュータをミュートしたときに、電話が鳴る? ボタンには、ジョイスティック軸に、任意のスイッチに電源を任意の電圧入力? 何かが可能です!
アップデート:私はダウンCB220にCUBLOCハードウェアを縮小することを決め、飛行機モデルに適合するすべての。 モデル飛行機で我々はジョイスティックのインターフェイスをテストするために使用太平洋ゲームの英雄で利用可能と一致するように選ばれました。
ハードウェアの説明
HIDのポータルは私の古いプロジェクトで、MC68HC908JB8マイクロコントローラに基づいて、アセンブリ言語でプログラムに基づいています。 実際、今のコードを公開することはできません、特定の理由が、についてはたくさんの他のUSBのプロジェクトがあるうちは、この目的のために適応させる可能性があります。 ようこそATtinyマイクロコントローラのためのオープンソースソフトのUSBの実装は、例えば。
私のマイクロコントローラを内蔵していない場合、I2CまたはSPIのでので、私は自分自身を実装する必要がありました。 私もピンをご利用の割り込み、私のソリューションを必要と意味がポーリングに基づいてする必要はありませんでした。 すべてとされ、実行および最適化、さらに高速16kHzのよりエッジを検出できませんでした。 これは約10倍のシフト出力CUBLOCコントローラからの利用よりも遅いので、私が使用できない可能性がある。 私は自分自身のシフトを書くアウトBASICのルーチンは、HID Portalにデータを取得してしまった。 これは、SPIまたはI2Cで組み込まれているマイクロコントローラを使用しているが、JB8私は手にいたものは避けることができる。
私は、CUBLOCコントローラと通信するために3つの信号を使用します。 最初は、CLK信号です。 HIDのPortalには、立ち上がりエッジを検出します。 その時点で、その値は、データライン上に存在を読み取ります。 これは、登録までのバイトの受信をされているには、次のバイトをするためのコードの動きにシフトされます。 / RSTを行に、各データパケットの開始を同期させる方法の場合は内の任意のスプリアス入力されたですが低ゼロには、パケットとビットのインデックスを設定します。
HIDのポータルは現在3つの軸で、8個のボタンとジョイスティックとして動作するようにプログラムされます。 私もキーボードとしてはテストしてみた。 今後の開発では、私は、HIDポータルより柔軟にしたいのですが、外部コントローラとデバイスのタイプを選択する方法については、各入力の多くが必要ですみましょう。 これは、最も柔軟性になる場合は、直接HIDのレポートの記述子を受け入れ、それ以上のミスを作成し、非作業装置に終わる可能性を開きます。
加速度ド- ACCM3D寸法工学からです。 CUBLOC単にその入力ポートに電圧を読み取り、-127〜127の間の値に変換します。
次ページに続く
















































