Lチカ
 「Harmonyは敷居が高い」ですね。何しろ英文の長大なマニュアル。見るのも大変です。しかし、厄介なUSBの処理などHarmonyが裏方でやってくれるので、ソースの行数は短く書けます。
いろいろなサンプルプログラムがありますが、ターゲットのボードを持っていないとよくわかりません。そこで一番簡単なLチカのプロジェクトを作ってみます。
プロジェクトの作成
先ずはプロジェクトを作成します。
[File]-[New Project...]
をクリックします。

32-bit MPLAB Harmony Project
を選び[Next]ボタンをクリックします。

プロジェクト名 led_blink
Target Device お使いのPIC
を入力します。
[Finish]ボタンをクリックします。

Harmony Configratorの画面が表示されます。

何も設定しないで赤の矢印で示したボタンをクリックします。
[Generate]ボタンをクリックします。

これで空の処理をするプロジェクトができました。
subversionでリポジトリの登録をしてください。
ポートとタイマーを設定する
 Lチカをするには出力ポートとタイマーの設定が必要です。
Harmony Cofigrator
を起動します。


Timerの設定
System Serviceの中にあるTimerを選びます。

LEDはRB7に接続します。

これを保存します。
Harmony Configratorがどのようにファイルを作成したかをsubversionで確認します。

をクリックします。

Harmony Configuratorがタイマーに必要な宣言や関数の定義を自動でやってくれます。これって凄く便利です。
ソースコードを書く
やることは、
「タイマーによってLEDのON・OFFをする」
といたって簡単です。
ポートを制御する関数は、
 PLIB_PORTS_PinWrite(PORTS_ID_0, PORT_CHANNEL_B, PORTS_BIT_POS_7, 0);
最後のパラメータがON/OFFをする。
 PLIB_PORTS_PinToggle(PORTS_ID_0, PORT_CHANNEL_B, PORTS_BIT_POS_7);
これは便利な関数でポートを反転させてくれる。

最初は、イニシャルでLEDを点灯させる。

追加したところに緑の四角が表示されています。

デバッグしてみます。
コンパイルは成功。
Run状態になるとLEDが点灯します。今はこれだけ。

タイマーはダイマードライバーを使う方法:
タイマー割り込みのイベントハンドラーを実装して行うPICでよくあるやり方

システムサービスでタイマーを監視するやり方:

があります。今回はLEDを周期的にON/OFFするだけなので正確性を確保する必要がないので
システムサービスをつかうことにします。
追加するソースは次のようになります。


SYS_TMR_HANDLE delayHandle;
でタイマーのハンドラーを割り当てます。
次に
delayHandle = SYS_TMR_DelayMS(1000);
で1000msecのタイマー値をセットします。
if (SYS_TMR_DelayStatusGet(delayHandle))
で1000msec経過するとtrueになります。
PLIB_PORTS_PinToggle(PORTS_ID_0, PORT_CHANNEL_B, PORTS_BIT_POS_7);
でRB7の出力値を反転させます。
そしてタイマーを再セットします。
これでLチカが完成です。