USB HOST SHIELD 2.0のライブラリを修正。最新ソースをgit hubから拾ってきて展開。#define DEBUGがあちこちで生き残ってるのでコメントアウト。 message.cppのUsbDEBUGlvlを0x80から0x00へ変更。あと、ADKも使うのでavrpins.hの#define BOARD_MEGA_ADKをアンコメント。
これでコンパイルして、HEXをATmega2560に焼いてみたら、OK。昨晩小手先の対応をした不要なReportも流れてこない。
同じソースをArduinoUNO用に焼いてみても期待通りの動作。
安定動作しているようなので、以前買っただけで使っていなかった株式会社 鳥人間のHarpy nanoを使ってみた。PCとつなげるHID device役はSparkfunのATmega8u2ブレイクアウトを使用。PICでHID deviceを作ったらそっちも試す予定。
Harpy nanoはロジック3.3V動作なのでHID device側の電源選択半田ブリッジを5Vから3.3Vに変更。肝心なときにハンダ吸い取り線が見つからず探しちゃったよ。あとHarpy nanoのMAX3421Eのリセットの接続が旧USB HOST SHIELDの設計なので、起動時にdigital7ピンをlow→highとやってソフトでリセット。
Harpy側はシリアル書き込みが使えるので、ArduinoIDEからArduino Pro/Pro miniの3.3V Clock8MHzで書き込み。ATmega8u2はHEXをAVRISPmk2で書き込み。両者のtx rx gndを接続して、無事動作を確認。ATmega8u2が3.3VでClock16MHzなんだけど、まぁ動く。5Vに戻して、ATmega8U2のtxに分圧抵抗を入れるのかも。
次はUS、JP両対応です。ってどこかのデジタル入力にプルアップ抵抗とGNDにつなぐスイッチをつけてチェックして、HighならJP,LowならUSで変換テーブルのポインタを切り替えるだけですけど。PC側が変わるときってUSBケーブルを差し替える状態なので、変換機の電源も入れ直しになるからプログラムの起動時にチェックすりゃええかな。毎度毎度チェックしても良いけど。
忘れてた、CAPSロックのLED対応もしないと。CAPSLOCKを吐いていないのにLEDはトグルしてしまうのです。気にしなきゃいいのだけど。これってHID HOST側から制御できるはず。現に自宅のDriverでキー置き換えしてるPCだと、CAPSキーを押してもCAPSのコードを出さない限りはLEDに影響ない。キーボード内部でON/OFFしてるわけでなく、PC側からなんかもらってる筈。
夜、ADKにてJIS/US切り替え実装完了。Harpyでも使えるDigital5ピンを使用。Harpyはピンソケットを外してピンヘッダに置き換えようかな。で、このJIS/US切り替えを固定スイッチでなく、キーボードのキーコンビネーションから切り替えられるようにしても良い。CTRL-SHIFT-ALT-CAPSLOCKとか開いているだろうか?