AT90USB シリーズや ATmega の USB インタフェース付きマイコンで、USB を使いやすくするライブラリが LUFA プロジェクト にて公開されています。とりあえず USB シリアルのコードが動くかやってみたくなったので Strawberry Linux さんとこのダ・ヴィンチボードを 1 個出してきてピンヘッダもはんだ付けして、FLIP から L チカのプログラムを書き込んで動くのを確認したところ。が上の写真。
Atmel Studio 6.2 を起動して、Extentension Manager や、Atmel ギャラリーなどから LUFA を入れます。クリックすれば入るのであんまり説明するところがありません。
Atmel Studio 6.2 を起動しなおしてから、[File] -> [New] -> [Example Project] を選択。上のハードコピーのようなサンプル選択画面になるので、USB – シリアル変換を選択して、プロジェクトというか今はソリューションでしたかね。を作成します
プロジェクトのディレクトリが作成されてプログラム出来るようになりますが、サンプルプロジェクトのプロパティを見ますと AT90USB1287 を使用するようになっています。今回使うのは ATmega32U4 なので [Change Deivce] ボタンを押して ATmega32u4 に修正します。いろいろ確認のダイアログが出ますが OK で続行
無事ターゲットプロセッサの修正は出来ましたがまだやることがあります。サンプルプロジェクトは、AT90USBKEY というボードを使用するようになっているため、この情報も修正しなければいけません。
[ASF] -> [ASF Wizard] を起動すると上記のような画面が表示されます。ここで右側ペインの中にあるリストボックスが USBKEY になっているのを LEONARD にします。実際に使用するボードはダ・ヴィンチボードですが、そんなもんは定義されていないので、構成が近い Arduino Leonard を使わせてもらう意味での選択です。今回は LED とかは別に点かなくてもいいので適当です。
次はプロジェクトをビルドする時の指定を変更します。
- F_CPU=8000000UL と F_USB=8000000UL は 8MHz クロックの指定ですが 16MHz なので 16000000UL に修正
- BOARD= のボード指定は BOARD=BOARD_LEONARDO だけにする
あとはビルドして、マイコンに書き込んだら USB シリアル変換の完成です。問題なく認識すると LUFA USB to Serial(COMnn) というシリアルポートがデバイスマネージャに出ると思います。ドライバの読み込みに失敗した場合は .inf ファイルがAtmel Studio のプロジェクトディレクトリにあるので、それを使ってドライバの更新して下さい。
どうやってテストするか考えるのが面倒だったので、ATmega32U4 の TXD/RXD をそのまま接続してループバックさせることにしました。
TeraTerm で LUFA の COMポートをオープンして
文字をキーボードから打ち込みまして、それがマイコンから帰ってきまして無事表示されました。
動いてよかったー