Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC32MX250F128B MPLABX XC32 Harmony でLチカしてみた(MPLAB Harmony Configurator入門)。

よく目にするHarmony( MPLAB Harmony Configurator = MHC )って何?
ってことで、簡単な例として、お決まりのLEDチカチカをやってみる。

環境
MPLAB X IDE v3.30
MPLAB XC32 v1.40
MPLAB Harmony 1.08
MPLAB Harmony Configurator 1.0.8.7
PICkit3
PIC32MX250F128B
参考にしたサイト
SK1632 Tutorial, and Introduction to MPLAB’s Harmony(追記 若干疑問点があったのでのちにこちらで再検討している。)
インストールしてあるツールのバージョンの違うものがあり、やってみて多少異なるところもあったが、まあ、迷って止まってしまうような差ではなかった。
このサイトは、どうもSK1632というボードの使い方を説明していて、その中でこのボードにPIC32MX250F128Bを載せてLEDを点滅させる例を、Harmonyでやってみたということらしい。
なので、回路図はこのボードのものを参考(pdfをもらっておいたSK1632 Schematic)にして必要最低限のものだけを取り付けてある。
20160623235103
ちなみに、最初は1つもコンデンサをつけてなかった。
20ピンのVCAPにつけないとプログラムが書き込めなかったのでここだけ0.1uFをつけた。
出来れば内蔵のオシレータで駆動したかった。
ただ、余計なトラブルを避けるためには最初は参考サイトの通りに正直にやるのがいい。
水晶発振子は手持ちが無かったので8MHzのセラロックを取り付けた。
以下、MPLAB X IDEでの手順を書く。

まずは MPLAB X IDE 上で Harmony の準備をする。
harmony_start_01
harmony_start_02
Harmonyをインストールしたフォルダの、¥utilities¥mhc¥com-microchip-mplab-modules-mhc.nbm を指定する。
harmony_start_03
harmony_start_04
ここで、MPLAB X IDEを 再起動する。

新規プロジェクトを作る。
pic32mx250f128b_harmony_led_blink_01
ここでHarmonyを使う設定にする。
pic32mx250f128b_harmony_led_blink_02
プロジェクト名を適当につける。
pic32mx250f128b_harmony_led_blink_03_2
使うチップを決めて[Finish]をクリックする。
プロジェクトの保存場所だが、水色の線がこちらで決めたフォルダの場所だ。
緑色の線は Project Name の欄に入れた名前をもとに自動で作られるようだ。
ユーザーは変更できない模様。
pic32mx250f128b_harmony_led_blink_04_2

[MPLAB Harmony Configurator]が開いてなかったら、以下のようにして開く。
harmony_start_05

[MPLAB Harmony Configurator]から[Options]を選ぶ。
pic32mx250f128b_harmony_led_blink_05
MPLAB Harmony & Application Configuration > Harmony Framework Configuration > Drivers > Timer
を開いて、以下のように設定する。
pic32mx250f128b_harmony_led_blink_06
この後、下でクロックを2MHzにするので、
20000000 / 2 / 256 / 78 = 500Hz
となる予定だ。
MPLAB Harmony & Application Configuration > Harmony Framework Configuration > System Services > Clock
を開いてClock Configurator [Execute]をクリックする。
pic32mx250f128b_harmony_led_blink_07
[Clock Diagram]が開くので下のように設定する。
pic32mx250f128b_harmony_led_blink_08
データシートにある図と同じだが、クリックで設定していくことが出来るようになっている。
つまり、データシートと首っ引きでコードを書いていたところを、GUIっぽくしたということのようだ。
確かにこれは煩雑さが減って便利だ。
ちなみに、私の場合は幾度か試行錯誤する過程で右下のFNOSCがPRIPLLになってないのを見落とし、少し悩んだ。
続いて「Pin Settings」からピンの使い道を設定する。
pic32mx250f128b_harmony_led_blink_09
今回はRA0のLEDを点滅させるだけなので以下のように設定する。
pic32mx250f128b_harmony_led_blink_10
あとは、[Save Configuration]の後に[Generate Code]をクリックすれば、設定が保存されて、必要なコードが生成される。
pic32mx250f128b_harmony_led_blink_11
びっくりするほどたくさんのファイルが作られるが、
pic32mx250f128b_harmony_led_blink_12
その詮索はいずれ行うとして、まずはmain.cに自分のやりたいことのコードを書く。
下で、赤線の引いてある部分が、参考サイトを見て追加したりコメントアウトしたりした部分だ。
pic32mx250f128b_harmony_led_blink_13
タイマーのカウントをチェックしてLEDを点滅させるだけのごく普通のコードだ。
#inclide <p32xxxx.h>
入れないとエラーでコンパイルできなかった。
一応、ちゃんと予定通り500ms、2Hzで点滅しているようだ。
pic32mx250f128b_harmony_led_blink_14
少なくとも、データシートを眺めながらちまちまコードするよりは楽だと思う。
ただ、その自動で生成されたコードがどこにあって、どんなのかはまだまったく調べていない。

関連記事
PIC32MX250F128B MPLABX XC32 Harmony でLチカしてみた。(改めて見直し)
PIC32MX250F128B MPLABX XC32 Harmony でLチカしてみた。- Interrupt –
PIC32MX250F128B MPLABX XC32 Harmony でLチカしてみた。- Timerを追加 –

このエントリーをはてなブックマークに追加

Posted under: Harmony Configurator, PIC32MX250F128B


4 comments

  • お世話になります。
    上のブログではClock SourceがDRV_TMR_CLKSOURCE_INTERNALと表示されていますが
    私のはTMR_CLOCK_SOURCE_PERIPHERAL_CLOCKとTMR_CLOCK_SOURCE_EXTERNAL_INPUT_PINの選択しか表示されません。
    同じ型番のPICマイコンでHarmonyのバージョンはv1_06_02です。
    何か原因が分かるようでしたらお教えくださるとありがたいです。

    • たくさん、こんにちは。
      記事を書いた時点のHarmonyのバージョンは記事冒頭に書いてあります。
      現在は2.04を使用中ですが、記事内とまったく同じ表示になります。
      同じバージョンでご確認下さい。
      以下は未確認の想像です。
      DRV_TMR_CLKSOURCE_INTERNALとDRV_TMR_CLKSOURCE_EXTERNAL_SYNCHRONOUS、
      TMR_CLOCK_SOURCE_PERIPHERAL_CLOCKとTMR_CLOCK_SOURCE_EXTERNAL_INPUT_PIN、
      の組はそれぞれ同じことではないかと思います。
      タイマーのソースは内部クロックか外部のT2CKを使うかのどちらかなので。

  • Saharaさん、お返事下さり有難う御座います。確かめてみました。
    Microchip harmonyの日本語ウェブにあったv1_06_02を使用した場合には
    Driver Imprementation を Dynamicにしたときのみ、DRV_TMR_CLKSOURCE_INTERNALと表示されました。
    Microchip harmonyの英語ウェブにはなんと、v2.04!があり、これを使用した場合には
    Driver ImprementationがStaticでもDynamicでもDRV_TMR…と表示されました。
    めでたしめでたし。^^

    • それは何よりです。
      私事で申し上げれば、なるべく無駄な努力を避ける意味で、
      自分が使っているバージョンと同じものを使っているサイトを参考にする、
      参考にするサイトと同じバージョンを自分も使う、
      のいずれかが鉄則と思っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.