調子に乗ってPIC18F14K50の他のサンプルを秋月の800円ボードで動かしてみました。
動作環境はLinuxMint13 + PicKit3です。「MPLAB-X」「MPLAB C18ツールチェーン」「Microchip Library for Applications」はすでにインストールされているものとします。(といっても、ダウンロードして、スーパーユーザー権限でスクリプトを走らせるだけでインストールできますが)
まず、サンプルプロジェクトを開いて初期設定を行います。ここではUSBキーボードのサンプルプロジェクトを動かしてみます。
- MPLAB-Xを起動します
- 「File」→「Open Project」で既存のプロジェクトを開きます。
ダイアログボックスが開くので、ホームディレクトリの下の
$HOME/microchip_solutions_v2013-06-15/USB/Device – HID – Keyboard/Firmware/MPLAB.X
を開きます。 - プロジェクトが読み込まれますが、この状態では他のチップ用になっていますので、PIC18F14K50では動きません。
- 「File」→「Project Properties(Device – HID – Keyboard)」でプロジェクトの設定を行います。
- 左下の方にある「Manage Configurations」をクリックします。
- 開いたダイアログから「LPC_USB_Development_Kit_PIC18F14K50」を選択して、右側の「Set Active」ボタンをクリックします。
- 「LPC_USB_Development_Kit_PIC18F14K50」の右側に「(active)」が移動したら、「OK」をクリックします。
- 左側の「Categories」から「Conf: [LPC_USB_Development_Kit_PIC18F14K50]」の下にある「PICkit3」を選択します。
- 右半分がPICkit3関連の設定画面に変わります。
- 上の方の「Option categories:」から「Power」を選択します。
- 「Power target circuit from PICkit3」にチェックを入れて、「Apply」をクリックします。
こうしないと、秋月の800円ボードに電源供給されないので書き込みができません。 - 「OK」をクリックして、ダイアログを抜けます。
次にビルド&書き込みを行います。
- 秋月の800円ボードのUSBコネクタをホストから外します。ICSPの信号線とUSBのD+/D-の信号線は同じ端子なので、USBを抜かないと書き込みできません。つまり、電源も供給されないので、PICkit3から電源供給してやらないとダメなのです。
- 次に、一旦PICkit3のUSB端子を外して改めて接続します。外すことでPICkit3からの電源供給を止めてやります。そうしないと、次にボードと接続する際に活線挿抜になってしまいます。運が悪いとボードが壊れるかもしれません。
- 秋月の800円ボードのICSP端子をPICkit3に接続します。
- IDE上の下向きの緑矢印がついたボタン(マウスカーソルを載せると「Make and Program Device」という表示が出ます)をクリックします。
- しばらくまつとコンパイル、書き込み、ベリファイが行われます。
「Programming/Verify complete」と表示されたら完了です。 - PICkit3をボードから引き抜きます。
この段階でPICkit3側のMiniUSBコネクタも一度引き抜いておいてもいいでしょう。 - 適当なエディタを開いて、新しいファイルを作成して、文字入力ができる状態にしておきます。
- ボードのUSBコネクタとホストをUSBケーブルで接続します。
- エディタに勝手に文字が入力されていきます。
ここで慌てて他のウインドウを選択するとそちらに入力されていきますので、ご注意を(笑)
動作を確認したら、USBケーブルを抜きましょう。
本来は評価ボードにはスイッチがついているので、そのスイッチを押すと文字が入力されるようなのですが、800円ボードにはそんなものはありませんので、勝手にキー入力されていってしまいます。
何のキーが入力されるかは、keyboard.c の907行目で HID REPORT にキーのコードに相当するusageを設定しています。usageはUSBの仕様書のうち、HID Usage Tableの53頁からの一覧表に乗っていて、4が「A」のキーに相当します。その後の926行目付近ではキーを話した場合のREPORTを送っています。
この辺を読んでソースを弄っていけば、変なキーボード(CTRL + ALT + DEL専用キーボードとか)も作れるはずです。(^^;