ここでは、PIC32MX270F256B-50I/SP (HARMONY)の章で扱った「PIC基板」を使用することとし、HIDマウスを例にとって説明します。自己流です。より良い方法があるかも知れません。以下、PIC32MX270F256B-50I/SP (HARMONY)の章に書いてあるように、MHC環境を整えてあることが前提です。 なお、MHC環境を整えるためのconfig204.zipの内容については説明しませんが、WinMerge(フリーソフト)などを使用して、HARMONYのもともとのファイルと比較すると、どこをどう編集しているかが分かると思います。
1.MPLAB Xを立ち上げて、hid_mouseフォルダー(\microchip\harmony\v2_06\apps\usb\device\hid_mouse)にあるプロジェクトを開きます。具体的には、まず、FileメニューからOpen Project...を選択します。
以下の様なOpen Project画面が現れるので、hid_mouseフォルダーの中のfirmwareの下のhid_mouse.Xを選択して、画面の右下にあるOpen Projectボタンを押します。
すると、プロジェクト・ウィンドウが以下の図の様になり、これで既存のプロジェクトが開かれたことになります。
2.hid_mouseをMain Project(MHC環境設定対象、およびコンパイル対象となります)にします。具体的には、以下の図に示したhid_mouseと書かれた所をマウスで右クリックします。
すると、サブメニューが現れます。次の図は、その中間部分です。
上図のように、Set as Main Projectを選択します。これで、hid_mouseなる文字が太字になり、これがMain Projectとなります。
3.使用するPICはPIC32MX270F256Bです。これに近いPIC(PIC32MX795F512L)を搭載したMicrochip社が販売している基板は、PIC32 USB Starter Kit IIです。そこで、下図のように、使用する基板として、[PROJECT CONFIGURATION]ドロップダウン・コンボボックスで「pic32mx_usb_sk2_int_dyn」を選択します。
4.Harmony設定ツール(Harmony Configulator)を起動します。具体的には、以下の図のように、ToolsメニューからEmbedded->Harmony Configulatorを選択します。
しばらくすると、以下の画面が現れるので、画面右下にあるOpenボタンをマウスで押します。
すると、画面は次のようになり、これでHarmony設定ツールが起動しました。
5.第一段階の最後に、USBの設定情報を得ておきます。Harmony設定ツール画面(すぐ上の図)の4つのタブの中で、Optionsタブを選択します(すでに選択されている)。Harmony Framework Configulation->USB Libraryと展開し、さらにUSB Library以下をすべて展開します。以下の図の様になります。
このUSBの設定情報が重要です。画面をコピーしてファイル化しておくと良いと思います。
1.第二段階(最終段階)です。以下、ファーム(HIDマウス)を新規に作成して行きます。まず、FileメニューからNew Projectを選択します(下図参照)。
すると、下図のようなNew Project画面が現れます。Categories(分類)の所でMicrochip Embeddedを、そして、Projectsの所でMPLAB Harmony Projectを選択します。選択が終わったら(もしくは、すでに選択されていたら)、Nextボタンをマウスで押します。
下図のようなNew Projectの第二画面が現れます。この画面にて、Harmony Path(Harmonyがファイルを探すとき、起点となるフォルダー)のボックスの中がmicrochip\harmony\v2_06となっていることを確認します。もし、そうなっていなければ、右端の方にあるブラウズ・ボタン(フォルダー・アイコンが描かれてあるボタン)を押して、出てくる画面でmicrochip\harmony\v2_06と設定します。また、Project Name(新しく作るプロジェクトの名前)のボックスの中に、mouseとキー・タイプします(キーボードで書き込む)。さらに、Target Boardのコンボ・ボックスで1 YTS PIC32MX Boardを選択します。
すると、下図のように、Target Deviceとして、自動的にPIC32MX270F256Bが選択されます。以上の作業が終了したら、画面下方にあるFinishボタンをマウスで押します。
下図のように、設定結果を保存するかどうか聞かれますので、YESボタンをマウスで押します。
2.自動的にHarmony設定ツール(Harmony Configulator)が立ち上がります。
(i) USB設定: Harmony Framework Configulation->USB Libraryと展開すると、次の図の様になります。
ここで、Use USB Stack?にチェックを入れ、その下をすべて展開します。そして、第一段階の項目5の図と、まったく同じになるようにUSB設定を行います。
(ii) BSP設定: BSP Configurationを展開すると、以下の図の様になります。
ここで、Use BSP?にチェックを入れます。これだけで良いのですが、確認のためUse BSP?以下すべて展開します。PIC32MX270F256Bが選択されていれば問題はありません。次図参照。
3.以上で設定は終わりましたので、コードを生成します。以下の図の様にHarmony設定ツール画面の上方のGenerateボタンをマウスで押します。すると、Modified Configuration画面が現れるので、Save(保存)ボタンをマウスで押します。さらに、File Generation画面が現れるので、Generate(生成)ボタンをマウスで押します。
ここで、一度、MPLAB Xを終了します。 なお、生成されたプロジェクトは、microchip\harmony\v2_06\apps\mouseフォルダーの中に出来ています。このフォルダーが出来ていることを確認しましょう。次図参照。
ここまでで、最低限必要なファイルはすべて生成されます。ただ、ファームウェアのアプリケーション部分(app.hとapp.cなど)は、アプリケーションの目的にあわせて、自分で作成する必要があります。今の場合、初めから作成することはしません。そのかわり、既存のプロジェク・サンプル(HIDマウス)のapp.h、mouse.h、app.c、mouse.cを使用します。具体的には、microchip\harmony\v2_06\apps\usb\device\hid_mouse\firmware\srcフォルダーにあるapp.c、mouse.c、app.h、mouse.hの4つのファイルを、microchip\harmony\v2_06\apps\mouse\firmware\srcフォルダーの中にコピー(app.hとapp.cは上書き)します。
4.MPLAB Xを再度立ち上げます。プロジェクト・ウィンドウのmouseプロジェクトの下のHeader FilesとSourceFilesを下図のように展開します。この図からapp.hとapp.cは、プロジェクトに登録されていることが分かります。しかし、mouse.hとmouse.cは登録されていませんので、後者2つのファイルをプロジェクトに登録します。登録しないと、コンパイル・エラーとなります。
(i) mouse.hの登録: Header Filesの下のappと書かれた箇所を、マウスで右クリックします。すると、以下の図の様なサブ・メニューが出てきますので、Add Existing Item... (すでに存在している品目を追加するという意味)を選択します。
下図のようなSelect Item画面が出て来るので、microchip\harmony\v2_06\apps\mouse\firmware\src\mouse.hを選び、画面右下のSelectボタンを押します。間違って、microchip\harmony\v2_06\apps\usb\device\hid_mouse\firmware\src\mouse.hを選択してはいけません。
プロジェクト・ウィンドウのHeader Files部分は、以下の図の様になり、mouse.hが、プロジェクトに登録されたことが確認できます。
(ii) mouse.cの登録:mouse.hの登録と同様な作業を行います。ただ、今度は、Source Filesの下のappと書かれた箇所を、マウスで右クリックするところから始めます。登録が終わると次の図のようになります。
5.以下のdefine文の集合は、app.cで使用しています。このコードはHarmonyで生成されるものではなくて、app.cを開発して行く際に必要となったものです。このdefine文の集合を手動で、新しく作ったmouseプロジェクトのsystem_config.hに追加する必要があります。以下に、microchip\harmony\v2_06\apps\usb\device\hid_mouse\firmware\src\system_config\pic32mx_usb_sk2_int_dyn\system_config.hから持って来たdefine文の集合を示します。
/* Tick time in 1msec units */
#define APP_USB_SWITCH_DEBOUNCE_COUNT (160)
/* Macro defines the conversion factor to be
* multiplied to convert to millisecs*/
#define APP_USB_CONVERT_TO_MILLISECOND (1)
/* Macro defines USB internal DMA Buffer criteria*/
#define APP_MAKE_BUFFER_DMA_READY
/* Macros defines board specific led */
#define APP_USB_LED_1 BSP_LED_1
/* Macros defines board specific led */
#define APP_USB_LED_2 BSP_LED_2
/* Macros defines board specific led */
#define APP_USB_LED_3 BSP_LED_3
/* Macros defines board specific switch */
#define APP_USB_SWITCH_1 BSP_SWITCH_1
プロジェクト・ウィンドウのmouseプロジェクトの下のHeader Filesを下図のように展開します。
ここで、system_config.hと書かれたところをマウスでダブルクリックします。すると、MPLAB Xの画面中央にsystem_config.hファイルの内容が表示されますので、次の図の様に、このファイルのBSP Configuration Optionsと書かれたコメント文の下に、上記のdefine文の集合をコピー・ペーストします。
6.ここで、コンパイル・リンクしてみます。下図の矢印で示すBuild Main Projectアイコンを押します。コンパイル・リンクが成功すると、MPLAB Xの画面の下の方のOutputウィンドウにBUILD SUCCESSFUL (total time: 22s)と表示されます。
7.コンパイル・リンクに成功したら、「PIC基板」にファームウェアを書き込む準備をした後、下図の矢印で示すRun Main Projectアイコンを押すと。ファームウェアがPICに書き込まれた後、実行されます。「PIC基板」とパーソナル・コンピュータをUSBケーブルで接続します。マウスカーソルが円を描きます。また、PICの26番ピンをGNDに落とすたびに、マウスカーソルが止まったり、動いたりします。
なお、使用しているファームウェア書き込み器がPICkit3でなければ、次のような画面が現れますので、お使いの書き込み器を選択して、OKボタンを押します。