PIC16F1455を用いてUSB デバイスを作成します。ここでは、MPLAB Code Configurator(以下単に、MCCと書きます)を利用した方法を紹介します。なお、MCCのコアーバージョンはCore v5.5.7です。
目次:使用するPIC回路はPIC16F1455の章にのせてあるものです。
ただ、PICの内部クロックを使う場合は、水晶発振子(16MHz)とコンデンサー(C3とC4の22pFのコンデンサー)は必要ありません。
MCCに用意されているUSBデバイス用のファームウェアはCDC用とVender用だけでHID用はありません。USBデバイス用のファームウェアは、基本部分とそれに上乗せするCDC、Vender、HIDなどの個別デバイスに対応した応用部分から成り立っています。つまり、基本部分は同じなので、まずCDC用のファームウェアをMCCで生成し、CDCの応用部分を除外(Exclude)して、HID用の応用部分を追加・手直することになります。なお、HID用の応用部分はMicrochip Libraries for Applications(MLA)から手に入れます。以下、HIDマウスを例にとり説明します。
1.MCC Core v5.5.7: CDCの章にしたがってCDCデバイス(内部クロック)のプロジェクトを作成します。なお、CDCのSetup画面での設定は不要です(設定しても除外するので)。ここではプロジェクト名をhid_mouse1455int_exampleとします。
2.プロジェクトにあるusb_device_cdc.hとusb_device_cdc.cをプロジェクトから除外(Exclude:コンパイル対象から外す)します。
これら2つのファイルを削除(Remove)してはいけません。削除するとMCCで再度コード生成したときに、これら2つのファイルが新たに生成されプロジェクトに追加(Include)されます。そのままコンパイルするとエラーとなります。2つのファイルをプロジェクトから除外(Exclude)してもファイル自体は物理的に存在しますので、MCCで再度コード生成したとしても、これら2つのファイルが新たに生成・置換されることはありません。したがって、コンパイルエラーにはなりません。
3.MLA v2018_11_26をインストールします。インストールしてできるファイルのうち、次のtree図で示す8つのファイルを集めます。
4.➂のusb_config.hはusb_device_config.h、➄のusb_events.cはusb_device_events.cとファイル名を変えます。
次に、8つのファイルのうち頭にapp_が付くもの(①と②)はhid_mouse1455int_example.Xフォルダーに、残りの6つ(名前を変えた➂、➄、名前はそのままの④、⑥、⑦、⑧)はhid_mouse1455int_example.X\mcc_generated_files\usbフォルダーに移動します(上書き)。
5.①、②、⑦、⑧の4つのファイルをプロジェクトに加えます。残りの4つのファイルは上書きされているので、新たにプロジェクトに加える必要はありません。
プロジェクトの内容は次のようになります。
ここまでで出来上がったファームウェアはhid_mouse1455int_example.X_pre.zipです。
6.次の8個のファイルを手直しします。出来上がったファームウェアはhid_mouse1455int_example.X.zipです。手直し箇所は、hid_mouse1455int_example.X_pre.zipとhid_mouse1455int_example.X_pre.zipの解凍内容をWinMergeなどのファイル比較ソフトで比較すれば分かります。主にincludeファイルのパスの変更です。
マウスを模倣(emulation)します。具体的にはマウスカーソルがディスプレイ上で四角を描きます。
1.PIC基板とPCをUSBケーブルで接続します。
2.MPLAB Xを立ち上げて、ファームウェアをPICに書き込み実行します。
3.ディスプレイで、マウスカーソルが四角を描きます。