【PICマイコン入門2】MPLABの使い方マニュアル

ソフト設計



この記事でわかること

・MPLABのインストール方法
・MPLAB X IDEの基本的な使い方
・MPLAB IPEによるプログラム読み書き方法

MPLAB(エム・ピー・ラボ) はマイクロチップ社が提供している
無償のPICマイコン用プログラム開発ソフトです。

本記事では、PICマイコン学習キットを使用した場合を例にして、
MPLABの使い方を解説します。

PICマイコン学習キットについては下記記事で解説しています。

MPLABのインストール方法

PICマイコン開発に必要なソフト

PICマイコンのソフト開発をするため、以下の3つのソフトをインストールします。

・MPLAB X IDE
 IDE(Integrated Development Environment)とは統合開発環境のことで、
 ソフト開発の一連の作業(プログラム設計、デバック、書込み等)を行います。
 ちなみに、X “はMPLAB IDEの後継として2011年リニューアル時に付きました。

・XC8コンパイラ
 C言語から機械語に変換するソフトをコンパイラと呼び、
 XC8コンパイラは、8ビットPICマイコン(PIC10/12/16/18)に対応しており、
 MPLAB X IDE内に組み込む形で使用します。

 XCコンパイラは他に16ビット(PIC24/dsPIC)用のXC16、
 32ビット(PIC32)用のXC32があり、全てインストールしても良いですが、
 電子工作で使用するPICマイコンは8ビットが殆どなので、XC8のみでOKです。

 XC8 は有償(PRO)版と無償(Free)版があります。

 有償版は最適化機能を持ち、コンパイル時のメモリ効率を向上したり、
 ソフトの動作速度を早くすることができますが、
 学習キットのサンプルプログラム程度であれば、無償版で十分です。

・MPLAB IPE
 IPE(Integrated_Programming_Environment)とは統合プログラミング環境のことで、
 PICマイコンへの書込み&読出しを行います。

 読み書き処理はMPLAB X IDEでも可能ですが、
 実行(HEX)ファイルの書込みや読出しはこちらの方が簡単にできます。

MPLABのインストール手順

 ここでは、Windows版をインストールする方法について説明します。

1.マイクロチップ社のHPからMPLABのインストーラをダウンロードする
  HPは「MPLAB」でGoogle検索すると出てくるので、
  ダウンロードボタンをクリックします。

2.ダウンロードしたMPLABインストーラを実行する
  インストーラの画面が表示されるので、指示に従って進めていきます。

  インストール先は初期設定のまま、プロキシ設定を使用で進めます。

3.インストールするソフトを選択する
  先程説明した3つ(IDE、IPE、XC8)を指定します。

4.MPLABのインストールを行う

  以上でIDEとIPEのインストールは終了します。
  次にXC8のインストールサイトからインストーラをダウンロードします。

5.マイクロチップ社のHPからXC8のインストーラをダウンロードする  
  ダウンロードのHPが開くので、ダウンロードボタンをクリックします。

6.ダウンロードしたXC8インストーラを実行する
  インストーラの画面が表示されるので、指示に従って進めていきます。

7.インストールするタイプを選択する
  ここでは無償版であるFreeを選択します。

8.XC8のインストールを行う

9.MPLABにXC8が組み込まれているか確認する
  MPLAB X IDEを開き、メニューの[Tools] > [Options]を選択します。

  Options画面にある項目Embeddedを選択し、
  Build Toolsタグを選んだ時にXC8があればOKです。



MPLABの使い方について

ここで紹介する使用方法は、基本的な必要最低限の内容ですが、
プログラム作成からPICマイコンへの書込みまで一連の作業を行うことができます。

MPLABには他にも便利な機能があり、
例えば、MPLAB Code Configurator (MCC) という拡張機能を使えば、
PICマイコンの各種設定をGUIにより簡単にできます。

しかし、古いタイプのPICマイコンには使えないことや、
プログラムの構成が複雑になって分り難くなります。

また、初級者が最初から、このような自動プログラム生成に頼ってしまうと、
プログラムを修正して設定を変更する方法を習得できないので、お勧めしません。

このような便利機能は、ある程度、PICマイコンの仕組みを理解した上で、
利用していけば良いのです。

ワードやエクセルでも、利用している人の殆どは、
その使い方を全て知らなくても、支障なく利用しているのと同じで、
MPLABも最低限の使い方を覚えれば十分です。

MPLAB X IDEによるプログラム設計の進め方

PCにPICkitを接続する

MPLAB X IDEを起動させる前に、
PIC搭載基板(本記事では学習キット)を接続しておきます。
この時、基板の電源はOFFした状態で行います。

順序としては、
①PICkitを学習キットに接続(ACアダプタからの電源はOFFしておく)
 ここでは、PICkitのコネクタにピンヘッダ―を接続し、
 学習キットのコネクタに挿入します。
 (接続方法の詳細については、別記事を参照)

②PICkitのUSBをPCに接続
 PICkitのライトバーが青色(待機中)に点灯するので、
 基板の電源(ACアダプタからの5V)をONします。

③MPLAB X IDEを開く 
 この時点ではライトバーは青色のままですが、
 この後説明するデバックモードの実行や、
 プログラムを書き込む際は緑色(動作中)に点灯します。

プロジェクトを開く

プロジェクトとは、プログラムを入れるフォルダのようなものです。

プロジェクトは新規に作成するか、
既存のプロジェクトを使うかのどちらかになります。

通常は、プロジェクトの新規作成から始めますが、
初級者の場合、学習キットに付属するサンプルプログラムなどの
既存プロジェクトを流用することをお勧めします。

理由は、ゼロの状態からプログラムを作成するとエラーが多数発生しやすく、
その原因が複数存在した場合、解決するのが困難だからです。

まずは、既存プロジェクトで、PICを動作できるようにした上で、
そのプログラムを変更する形で進めていく方が確実です。

プロジェクト名や、フォルダ及びファイル名をつける時は、
漢字などの全角文字を使用するとMPLABが認識できない場合があるので、
半角英数文字を使用します。

プロジェクトを新規作成する場合

①プロジェクトの新規作成画面を開く
新規作成画面を開く方法は3通りあります。
・ツールバーの「プロジェクトの新規作成」アイコンをクリックする
・メニューの[File] > [New Project ]を選択する
・Projectsウィンドウ内の空白スペース部分を右クリックで、[New Project ]を選択する

New Project画面が開き、プロジェクトの種類を指定しますが、
殆どの場合、初期設定のStandalone Projectで良いので、そのまま次に進みます。

②使用するデバイスとツールを指定する
 ここではデバイスをPIC16F18857、ツールをPICkit4に設定します。
 デバイス選択は事前にファミリを選択しておくと候補を絞り込むことができます。
 また、ツール(デバッカ)選択は、PICkitが未接続だと選択肢に表示されません。

③使用するコンパイラにXC8 コンパイラを選択する

④プロジェクト名を入力する
 プロジェクトフォルダを作る場所は初期設定のままでOKです。
 Windowsのユーザーフォルダ内にある以下のMPLABプロジェクト用フォルダになります。
    C:¥Users¥ユーザー名¥MPLABXProjects 

 また、「Set as Main Project」のレ点は解除しておいた方が良いです。
 (理由は、この後に記載されている<備考>を参照)

 Finishをクリックすると終了し、
 Projectウィンドウ画面に新規作成したプロジェクトが表示されます。

⑤ソースファイルを作成する
 プロジェクトのSource_Filesを右クリックして[New] > [main.c]を選択すると、
 新規ソースファイル作成画面が開くので、ファイル名を入力します。

 Finishをクリックすると、
 Source_Filesの下にC言語ソースファイル(拡張子.c)が作成され、
 そのファイルの内容が右側のエディタ画面に表示されます。

 このソースファイルにプログラムを入力していきます。

既存プロジェクトを流用する場合

①既存プロジェクトをMPLABのプロジェクトフォルダに入れる
ここでは、学習キットの付属CDに入っているサンプルプログラムを
Windowsのユーザーフォルダ内にある以下のMPLABプロジェクト用フォルダに入れます。
 C:¥Users¥ユーザー名¥MPLABXProjects 

②プロジェクトを開く
プロジェクトを開く方法は3通りあります。
・ツールバーの「既存のプロジェクトを開く」アイコンをクリックする
・メニューの[File] > [Open Project ]を選択する
・Projectsウィンドウ内の空白スペース部分を右クリックで、[Open Project ]を選択する

Open Project画面が開き、先程のプロジェクトファイルが表示されるので、選択します。
ここでは2つのサンプルプロジェクトのうち、
LED点滅プログラム(sample_LED.X)を開きます。

このケースでは、サンプルプログラム製作時のMPLABのバージョンが古いと
現在のバージョンにアップグレードしてよいかのメッセージが表示されました。

ここでは、アップグレードしないでプロジェクトを開くとエラーが発生するため、
YESをクリックしています。

プロジェクトが開くと、Projectウィンドウにプロジェクトが追加されます。

③プロジェクトのプロパティを設定する
Projectウィンドウの下にあるダッシュボード画面には、
プロジェクト情報が表示されます。

ここに表示されるPICマイコンやデバッカを変更する場合は、
Project Properties画面で行います。

Project Properties画面を表示する方法は4通りあります。
①メニューの[File] > [Project Properties]を選択する
②ダッシュボード画面左上の歯車アイコンをクリック
③ダッシュボード画面のプロジェクト名をダブルクリック
④Filesウィンドウ内のプロジェクトを選択して、右クリック

ここでは、元となるサンプルプログラムでのデバイス設定が
PIC16F886であったのを PIC16F18857(※1)に変更します。

デバイスを変更すると、画面にPlease select a comper versionと赤文字表示されますが、
Apply(適用)をクリックすると、XC8が選択されて、赤文字表示が消えます。

※1:本学習キットに搭載されているPICマイコンです。
  サンプルプログラムのデバイス設定と異なる理由については、学習キットの紹介記事で説明しています。

  ちなみに、このサンプルプログラムでは、デバイス変更により、ビルド時にエラーとなるため、
  ソースコードの修正が必要となります。

ツール(デバッカ)をPICkit4に設定します。
ここで、PICkitが接続されていないと選択できません。

最後にOKをクリックし、プロパティ設定画面を閉じると、
ダッシュボード画面に変更内容が反映されます。

<備考>プロジェクトが複数ある場合の注意点
 複数のプロジェクトがある場合、
 編集したいプロジェクトを指定する方法は2通りあります。

 ・プロジェクトをクリックして指定する方法
  プロジェクト名が青地に白文字で表示されます。
  他のプロジェクトに切り替えるには、そのプロジェクトをクリックします。

 ・メインプロジェクトを指定する方法
  メインプロジェクトに指定するとプロジェクト名が太字で表示されます。

メインプロジェクトの指定/解除の方法は2通りあります。
・Projectsウィンドウでプロジェクトを選択し、
 右クリックのメニューからset as Main Projectで指定する。
 解除するにはUnset as Main Projectを選択する。

・メニューの[Production] > [set Main Project]を選択すると、
 プロジェクト一覧が表示される中から指定する。
 解除するにはNoneを選択する。

メインプロジェクトを指定する方法にすると、
プロジェクト名のクリックによる切替が無効になるので、
プロジェクトが青地に白文字表示でも、そのプロジェクトに切り替えされない為、
ビルドや書込みされるプロジェクトの指定間違いが起きやすいので、お勧めしません。

プログラムを入力する

プログラムを記入したファイルをソースファイル(拡張子.c ※2)と呼びます。
(※2:C言語で作成された場合。アセンブリ言語だと拡張子.asmになる)

ソースファイルは、画面左上のProjectsウィンドウ内のSource_Filesの下にあるので、
ダブルクリックで開いて編集します。

編集したプログラムを保存する方法は2通りあります。
・ツールバーの「ファイルの保存」アイコンをクリックする
・メニューの[File] > [Save All]を選択する

プロジェクトをビルドする

ビルドとは、ソースファイルから、PICに書込むための実行ファイルを生成することです。

この時、プログラムに文法上間違いがあるとエラーとなり、
実行ファイルは生成されません。

ビルドする方法は3通りあります。
①ツールバーの「ビルド」アイコンをクリックする(下図参照)
②メニューの[Production] > [Build Project]を選択する
③Projectsウィンドウ内のプロジェクトを右クリックで、[Build]を選択する

※複数のプロジェクトがある場合、先程の<備考>で説明したように、
 メインプロジェクトを用いてプロジェクトを指定していると、
 エディタ画面に表示されているソースファイルとは
 別のファイルがビルドされる恐れがあるので注意します。

ビルドで生成するファイルには2種類あります。
・hex(ヘキサ)ファイル(拡張子.hex):通常の書込みに使用
 (¥プロジェクト名.X¥dist¥default¥productionフォルダに生成)
 
・elfファイル(拡張子.elf):デバックモードで動作させる際に使用
 (¥プロジェクト名.X¥dist¥default¥debugフォルダに生成)

ここでは、hexファイルを実行ファイル、
debugフォルダに生成されるelfファイルをデバック用実行ファイルと呼ぶことにします。

上記の②③を行った場合は、hexファイルが生成されますが、
①の「ビルド」アイコンをそのままクリックした場合(上図参照)、
[A]の[Build for Debugging Main Project]を実行し、デバック用実行ファイルを生成するため、
hexファイルは生成されないので注意して下さい。

(hexファイルがあったとしても、それは過去のビルドで生成したものになります)

①の方法でhexファイルを生成させる場合は、
「ビルド」アイコンの下矢印アイコンから[B]の[Build Project]を選択します。



プログラムをデバックモードで実行する

デバックとは、プログラムが期待通りに動作するか確認し、
問題があれば修正する作業のことです。

デバックモードでは、プログラムを1行づつ実行させたり、
その時のレジスタや変数の値を確認することができます。

デバックモードを起動する

デバックモードにする方法は3通りあります。
①ツールバーの「デバック」アイコンをクリックする
②メニューの[Debug] > [Debug Project]を選択する
③Projectsウィンドウ内のプロジェクトを右クリックで、[Debug]を選択する

デバックモード実行により、PICマイコンに書込み処理を実行すると、
MPLABでのデバイス設定と基板のデバイスが一致しているかの確認を促す
メッセージが表示されるので確認の上、OKします。

その後、プログラムの内容によって、下記メッセージが表示されますが、
そのままOKして進みます。

デバックモードにすると、前回ビルド時から変更がある場合はビルドを実行し、
デバック用実行ファイル(※3をPICに書込んで、プログラムが実行されます。

※3:デバック用実行ファイルはPIC単体では動作しません。

デバックモードでは、デバック用ツールバー(上図参照)が表示されます。(※4)

※4:デバック用ツールバーの一部しか表示されない場合は、
  メニューの[View] > [Toolbars]を選択し、ツールバーの表示設定のち、
  使用しないアイコンを削除することで、表示されます。

ツールバーの設定を初期設定に戻したい場合は、[Reset Toolbars]を選択します。

デバックモード時に変更したツールバーの設定は、通常モードでは反映されません。

デバックモードでの動作方法

デバックモードの6種類のアイコンによって以下の動作を実行します。

・ステップ実行(3種類)
 実行するソースコードに関数がある場合、次にどこに飛ぶか指定します。
 ①呼び出し先の関数に飛ばず、次の行に進む
 ②呼び出し先の関数に飛ぶ
 ③飛んだ先の関数から呼び出し元のコードに飛ぶ

・カーソルで選択した行まで実行する
・PC値をカーソルで指定したアドレスに設定する
・カーソルをPC指定したアドレス(コード行)に移動させる

 PC(プログラムカウンタ):次に実行する命令のアドレスを格納するレジスタ

ブレークポイントの設定

プログラムを実行させた時に、ブレークポイントで停止させることができます。
行の左側の余白をクリックすると、この行にブレークポイントが設定されます。

ブレークポイントを削除するには、再びクリックします。
一次的に解除したい場合は、右クリックのメニューからEnabledのレ点を外します。

ブレークポイントは複数設定でき、
メニューの[Window] > [Debugging] よりBreakpoints画面を開くことで、
ブレークポイント一覧から削除や解除ができます。

変数の表示

ソースコード内の各種変数の値を確認できます。
値の更新は実行中は行われず、停止時に反映されます。

メニューの[Window] > [Debugging] より、Variables ウインドウでローカル変数を、
Watchs ウインドウでグローバル変数をモニタできます。

ローカル変数 :関数内で定義され、その関数のみ使用できる変数
グローバル変数:関数外で定義され、複数の関数で使用できる変数

Variablesウィンドウ
停止している行で使用されているローカル変数が表示されます。

Watchesウィンドウ
グローバル変数や、SFR(特殊機能レジスタ)を指定することで、表示されます。

両ウィンドウとも、項目部分を右クリックすると新しい項目を追加できます。
10 進数表示(Decimal)や2進数表示(Binary)を追加すると便利です。

変数値はダブルクリックして数値を入力することで変更できます。

SFR(特殊機能レジスタ):デバイスの動作を制御するためにCPUと周辺機能が使用
GPR(汎用レジスタ):プログラムの計算に必要な変数等の一時的なデータの保存用に使用

I/Oレジスタの表示

メニューの[Window] > [Debugging] より、
I/O ViewウィンドウでI/Oメモリマップが表示されます。

例えば、ウィンドウ上段のPeripheralで[Analog-to-Digital Converter]をクリックすると、
下段で、ADCモジュールに関係するレジスタ一覧が表示されます。

各種メモリの表示

メニューの[Window] > [Target Memory Views] より、各種メモリの内容を表示できます。

Program memory
プログラムメモリ(フラッシュROM)を見るためのウインドウです。
Hex(16 進)表示とCode(逆アセンブル)表示を切替できます。

C 言語から機械語に変換されたプログラムを見ることができます。

File Registers
ファイルレジスタ(データメモリ(RAM))を見るときのウインドウです。
Hex(16 進)表示とSymbol(レジスタ名)表示を切替できます。

プログラム動作により変更があった値は赤字で表示されます。
ダブルクリックで値を変更することができます。

SFRs(特殊機能レジスタ)
SFRはPICマイコン内のペリフェラル(周辺機能)の設定や制御を行うための情報が入っており、
設定状態の確認や、プログラム動作による制御の様子が分かり、設定を変えることもできます。

Configration Bits
コンフィグレーションレジスタはデバイスの各種機能の設定情報が入っています。
この画面で設定状態を確認したり、変更することができます。

ここで行う変更はデバックモード時のみ反映され、再ビルドで元の設定に戻ってしまうので、
変更内容をプログラムに反映したい場合は、
ウィンドウ内のボタン[Generate Source Code to Output]をクリックすると、
[Output]ウィンドウに各種機能設定のプログラムコードが生成されるので、
このコードをプログラムにコピー&ペーストします。

上記以外のウィンドウ表示に、EEPROM MemoryやUser ID Memory等があります。

テキスト検索

メニューの[Edit] > [Find] より、テキスト検索画面が開き、
指定したテキスト(文字)をプログラムコード内から検索します。

プログラムコード内で変数を見つけるのに役立ちます。

デバックモードを終了する

終了アイコンをクリックすると、通常モードの画面に戻ります。

この時、PICマイコンに書込まれたデバック用実行ファイルは基板単体では動作しないので、
次に説明する書込み処理を行う必要があります。

完成したプログラムをPICに書込む

書込み処理を行うと、必要に応じてビルドが行われ、
実行ファイルをPICに書込んで、プログラムが実行されます。

書込む方法は2通りあります。
①ツールバーの「書込み」又は「実行」アイコンをクリックする
②メニューの[Production] > [Make and Program Device ]を選択する

この時、デバックモード実行時と同様のメッセージ
(MPLABでのデバイス設定と基板のデバイスが一致しているか?)が表示されるので、
確認の上、OKをクリックします。

実行の停止/再開は「リセット/実行」アイコンで行うことができます。
これは、デバックモード画面にある一時停止やリセットアイコンとは別で、
停止してもプログラムコードの停止位置は表示されません。

書込み処理後、ダッシュボード画面に表示されるチェックサムの値を確認します。

チェックサムは実行ファイルのデータ値の合計を使い、決められた方法で算出した値で、
2つの実効ファイルのチェックサムが同じなら、そのファイルは同一であると判断できます。

従って、PICに書き込まれたプログラムからチェックサムを読み出すことで、
どのプログラムが書き込まれているか分かります。

この後で解説するプログラム読書きソフトのMPLAB IPEを使う事で、
PICに書込まれたプログラムのチェックサムを簡単に確認できます。

MPLABを終了する

終了する時は、PICkitのライトバーが緑(接続状態)ならば、
メニューの[Debug] > [Disconnect from Debug Tool]を選択すると、
ライトバーが青(待機状態)になり、PICkitがMPLABから切断されます。

そして、MPLAB X IDEを閉じ、基板の電源をOFFしてから、PICkitのUSBを抜き、
最後に基板からPICkitを外します。



MPLAB IPEによるプログラムの書込み&読み出し方

実行ファイル(HEXファイル)の書込みや、読み出し(チェックサム確認)だけなら、
MPLAB IPEが簡単にできます。

1.PCにPICkitを接続する
 接続手順はMPLAB X IDEと同様で、接続後、MPLAB IPEを起動させます。

2.接続するデバイス(PICマイコン)を指定する
 起動したら、[Family] ドロップダウンメニューでデバイスのファミリを選択し、
 [Device] ドロップダウンメニューでデバイスを指定し、[Apply] をクリックして確定します。
 ([Family] の選択を省略し、[Device] から直接指定してもOK)

3.接続するツール(PICkit)を指定する
 [Tool] ドロップダウンメニューから使用するツールを選択します。
 ここで、PICkitが接続されていないとメニューに表示されません。

 選択後、[Connect] ボタンをクリックすると、PICkitとの接続を行います。

この時、MPLAB X IDEを使用中(PICkitと接続状態)だと接続エラーになるので、
MPLAB X IDEを終了するか、メニューの[Debug] > [Disconnect from Debug Tool]を選択し、
MPLAB X IDEをPICkitから切断した上で、MPLAB IPEを接続します。

[Connect] ボタンの表示が[Disconnect]になれば、
接続が完了し、書込み&読出しが可能となります。

4.書込み(HEX)ファイルを指定する
 PICに書込ませるプログラムの実行ファイルを
 Hex File欄の右にある[Browse]ボタンをクリックして、指定します。
 (ファイルのドラック&ドロップでも可能)

ここで指定するファイルはMPLAB X IDEで作成したHEX(ヘキサ)ファイルになります。
(¥プロジェクト名.X¥dist¥default¥productionフォルダにある)

ファイルを指定すると、チェックサム値が表示されます。
この値によって、プログラム(HEXファイル)の同一性を確認できるので、
記録しておきます。

5.プログラムをPICに書き込む
 [Program]ボタンをクリックすると、PICにプログラムを書込みを実行します。

 この時、MPLAB X IDEと同様、メッセージ画面が表示されるので、確認の上、OKします。

この書込み処理は、PIC内のフラッシュメモリのデータを消去してから、
書込みを行い、そのデータを読みだして書込んだ値と照合を行っています。

消去や、読出し、照合についてはボタンがあるので、個別に行うこともできます。

照合(Verify:ベリファイ)は、
PC内の指定したHEXファイルとPICマイコンに書込まれたHEXファイルが不一致の場合は、
Output画面に「Verify failed」と赤文字で表示されます。

読出し([Read]ボタンをクリック)を行うと、チェックサム値が表示されるので、
MPLAB X IDEで書込みした時に、この値を控えておけば、
PICに書込まれているのが、何のプログラムで、いつ作成されたものか判別できます。

終了する時は、[Disconnect] ボタンをクリックして、PICkitとの接続を解除してから、
基板の電源をOFFした上で、USBケーブルを外します。

※[Disconnect]してもPICkitが緑ランプのままで、キットも動作していない時は、
 再度 [Connect] ボタンをクリックしてから[Disconnect]すると切断できる場合があります。