USBデバイスの製作(9)
汎用USB-IOもどきの続き。
結局結構欲張った仕様にする。
入力7bit、出力7bit、シリアル1ch(2bit)でSPIはあけておく。
SPIは前にも書いたが、SPIのROMをつけるとマスストレージとして使える。
これはこれで面白いと思う。
例えばドライバ(HIDでは不要だが)やアプリを入れておけば、これだけ持ち運べばどのPCでも実行できる。
ドライバを探し回ったり、アプリの最新版を探し回ったりしなくてもよい。
まあ2MByteもあれば、我慢できる範囲であるといえる。
アトメルのUSB-Keyもそうなっていて、ドキュメントはここに格納されている。
便利な時代だが、開発ツールも入れてほしかった。(大きくて入らない?)
それはともあれこの発想で2種作成することに決めた。
1)汎用USB-IOもどき
入力7bit、出力7bit、シリアル1ch(2bit)
シリアルはボーレイトも切替が可能。
2)汎用USB-IOもどき+マスストレージ(SPI使用)
・入力7bit、出力7bit、シリアル1ch(2bit)
・マスストレージ(今は2MByte)
の2種。
ここまでは汎用であるので、USB-IOのように
・デバイスのプログラムは書かなくても良い
・HID(とマスストレージ)なのでドライバも書かなくて良い
・アトメルのdllを使えばアプリも簡単に書くことが出来る
というお手軽なデバイスである。
シリアルは256byteのバッファがあるものの、それ以上の入力がなると入力と出力の速度差問題がある。
出すほうはPCが制御するのだからいいのだが、デバイスから大量のデータがくるものをシリアルで受けるとPCが引き取る前に書き換わる可能性がある。
またこれらはPCのアプリにもよる。
HIDとアシリアルのブリッジなのでしょうがないといえばしょうがない。
考えて作ればそれなりに思う。
まだやってはいないのだが、アイデアとしてこれでAVRにプログラムするのも面白いと思う。
ベストテクノロジー社に「ATmegaシリーズ 簡易ブートローダ」なるものがある。
つまりこれをあらかじめAVRに書き込んでおけば、XMODEMでファイルが書ける。
想定としてはHIDのシリアルの先にAVRをつないでおいて、それをUSB経由でプログラムする。
このあたりAruduinoみたいな感じであるがPCとはHIDでつながる。
Bootは2Kらしいが、ATmega168/32/644/128などが使える。(BootはISP経由になるが)
このUSB162は強力ではあるが時間待ちが多いような制御は難しい。
・例えば液晶ではないが、1ms待って次を書くとかそういう類は面倒である。
USBのタスクは擬似マルチみたいで、1つのタスクが占有するような書き方は好ましくないと思う。
そこで細かな機器制御になるとやはりAVRをつないで処理したい。
・もう1つはUSB162にはADコンバータがない(TT)
別のものを買う以外には、SPIのADコンバータをつけるという手もある。
ただ価格を調べてみると(性能はともかく)AVRでAD付と大差ない感じがする。それならいっそAVRをつないだほうが入手性もよいし汎用性もある。
それならCDCでいいのであるが、それだとUSB162の意味は少なくFTDI社のものでよい。(Aruduinoがそういう感じ)
もっともUSB162でもCDCになるので、それでも可能には違いないが。
それはともあれ、そういう代案はあるにしろ、
・汎用USB-IO
・汎用USB-IO+マスストレージ
にさらにAVR(A/D)という拡張があり、USB経由でプログラムできるのならかなり柔軟なことが可能になると思われる。
雛形としては
・汎用USB-IOはSTK526-series2-hidio-2_0_1-doc.zip
・汎用USB-IO+マスストレージはSTK526-series2-ms_hidmouse-2_0_2-doc.zip
から作成する。
コメントはありません