MPLAB X IDEのプラグインには便利なツールが多くありますが、その中でもマイクロチップ社
自身が開発に力を入れている「MPLAB Code Configurator」(MCC)の使い方を説明します。
MCCは何かというと、プログラムを開発する際に必須のPICマイコンの周辺モジュール関連の
設定を自動的に生成するツールです。
このツールを使えば面倒なコンフィギュレーションや周辺モジュールの設定を、グラフィック画面を
使ってわかりやすい作業手順で行うことができます。
設定するだけで周辺モジュールについて次のような作業を自動的にしてくれます。
・コンフィギュレーションワードの設定
・クロック発振周波数の設定
・入出力ピンの初期設定
・周辺モジュールの初期化関数の生成
・周辺モジュール制御用関数の自動生成
・割り込み処理関数の自動生成
A) MCCが生成する関数の全体構成
MCCが自動生成する関数群の関係は下図のよゆになっています。
メイン関数も自動生成されますが、中身は初期化関数を呼び出しているひな形だけですので、
この中にアプリケーションを記述追加します。
「mcc.c」というファイルが生成されここにコンフィギュレーション設定とシステム初期化関数が含まれます。
このシステム初期化関数では、各モジュールの初期化関数呼び出して全体の初期化を実行します。
モジュールごとに自動生成されるファイル(xxx.cやyyy.c)には、単なる初期化関数だけでなく
周辺モジュールを使うための制御関数も自動生成されます。メイン関数にアプリケーションを追加するとき、
これらの制御関数を使うことができますからプログラミング作業負荷を確実に減らしてくれます。
さらに割り込みを使う設定をすると、割り込み処理関数(interrupt_manager.c)が自動的に生成され、
さらにモジュールの関数内に割り込み処理関数のひな形が生成されますので、
この中にユーザアプリケーションで必要な割り込み処理を記述追加して完成させます。
B) MCCの起動
MCCのインストールはPlug-inのインストールと同じ手順でできます。
インストールしたMCCを実際に使うためには、まず、空のプロジェクトを作成する必要があります。
この手順は通常のプロジェクト作成手順と同じです。
プロジェクトができたら下記手順でメインメニューからMCCを起動します。
・[Tools] → [Embedded] → [MPLAB Code Configurator] → これで下図のダイアログが開きます。
このダイアログは現在MCCが対応しているデバイスのリストとなっています。
現状では8ビットのF1ファミリと、PIC18のKファミリ、PIC24のGAファミリとKMファミリとなっています。
今後、徐々に対応デバイスが増えていくものと思います。
このダイアログをCloseするとMPLAB X IDEの画面が、下図のようにMCCの初期画面の状態になります。
このMCCに関連する窓は次のようになっています。
左上側の[Project Resources]が選択して使おうとしている周辺モジュールで、
下側の[Device Resource]に表示された周辺モジュール一覧でいずれかをダブルクリックすると
上側に追加され、右側の窓が[Project Resources]窓で選択した周辺モジュールの設定画面となります。
最初は「System設定」状態となっていてこの設定から開始します。
C) システム基本設定の手順
設定手順はつぎのようにします。
@ [Project Resources]窓で[System]をクリックすると下図のようなクロックとコンフィギュレーションの設定が
できるようになります。
A [Clock]欄でクロックの設定をどの発振回路を使うかを選択し、INTOSCであれば周波数設定を
いくつにするかを選択します。
B コンフィギュレーション欄では、それぞれの項目のOn/Offなどを設定します。
このコンフィギュレーション設定は[Generate Configuration Bits]にチェックを入れておけば
自動生成されてソースファイルに追加されますので、プログラム書き込み時に自動的に書き込みが
実行されます。
D) 入出力ピンの設定例
次に設定が必須なのが入出力ピンです。設定手順は次のようにします。
@ [Device Resource]欄で[GPIO]→ [GPIO-GPIO]を選択すると[Project Resource]欄に
GPIOが追加されます。
A [Project Resource]欄で[GPIO] とクリックすると右側の窓に下図のように一覧表と
グラフィカルなピン配置図が表示されます。ここで基本的な入出力ピンの設定を行います。
B 右下の一覧表で、汎用入出力として使うピンをクリックすると緑色に変わり使用済みロックがかかります。
さらに中央の欄に追加したピンの一覧表が表示されます。
C 中央の[Select pins]で各ピンの入力、出力、プルアップ、状態変化割り込みを設定します。
出力の場合には初期状態も指定できます。状態変化は立ち上がりか立下りかを指定できます。
D 各ピンに任意の名前を付与することができます。プログラム中に記述する場合、この名前を使って
ピンを指定することができます。
E 以上の設定内容はグラフィカルな配置図に自動的に反映されます。
青色のピンが空きピン、緑色のピンが使用済、黒色または灰色は電源かリセットで限定されたピン
となっています。
E) A/Dコンバータの設定例
アナログ入力を使う場合にはA/Dコンバータの設定が必要です。設定は次のようにします。
@ [Device Resources]で[ADC-ADC]をダブルクリックすると[Project Resources]に[ADC-ADC]が
追加されます。
A [Project Resources]で[ADC-ADC]をクリックすると下図のような画面となり
右下の[Pin Manager]欄でアナログ入力ピンの指定ができ、さらに中央の窓でA/Dコンバータ
そのものの設定ができるようになります。A/Dコンバータの設定は次の手順で行います。
B 中央の窓で、まず[Enable ADC]にチェックしてADCを有効化し、リファレンスとクロック、トリガ、
右左詰めの選択をします。これでADC自身の設定ができます。
C [Pin Manager]欄でアナログ入力ピンを指定します。ピンをクリックすれば自動的に色が緑となり
使用済ロックされ、さらに中央の表にピンが追加されます。
D 指定したピンが自動的に表に追加されます。
E 表の中でアナログピンに対象の名称を付与すれば、その名称によりプログラム中で扱える
ようになります。
F リファレンスに定電圧リファレンス(FVR)を指定した場合には、自動的にFVRの設定が
[Project Resource]欄に追加されますので、ここでFVRの設定も行う必要があります。
F) タイマの設定例
タイマの設定もMCCから行うことができます。特にインターバルタイマとして割り込みを使う場合には
割り込みの設定も行うことができます。
@ 左下の[Device Resources]欄で[Timer]の中から使うタイマを指定してダブルクリックします。
これで上側の[Project Resource]欄に指定タイマが追加されます。(Timer2を例として選択)
A [Project Resources]で[Timer2]をクリックすると、中央の窓にタイマ設定ダイアログが開きます。
B 中央の欄でプリスケーラ、ポストスケーラを選択すると、自動的に[Timer Period]の欄に
現在のクロック周波数の場合の時間の最大値が表示されます。
C [Timer Period]の欄に期待する時間を単位を含めて入力すると、設定可能な一番近い値として
自動的に設定され、同時にPRレジスタの値も自動的にセットされます。
D 割り込みを使う場合には[Enable Timer Interrupt]欄にチェックを入れます。
これで割り込み処理関数が自動生成されるようになります。
さらに[Callback Function Rate]欄で割り込み処理から呼び出される関数の周期を設定すること
ができます。ここに1より大きな値を入力すると、タイマ割り込みの回数をカウントし、指定された
回数になったときアプリの割り込み処理関数を実行します。
G) 自動生成実行
必要なモジュールの設定が完了したら、[Generate Code]のボタンをクリックします。
これで自動的にプログラムコードを生成しますが、その前に下図のようなmain関数も生成するかどうか
という確認ダイアログが表示されますのでここは[Yes]として生成するようにします。
これでソースファイルが自動生成され、下図のようにプロジェクトに自動的に登録された状態となります。
ソースファイルは大きく次の2つに分類されます。
・ヘッダファイル群:
−周辺モジュールごとのヘッダファイル
−割り込み処理関数のヘッダファイル
−メイン関数のヘッダファイル(mcc.h)
・Cのソースファイル群
−メイン関数のソースファイル(main.c)
−モジュール用関数のソースファイル
−割り込み処理関数