MPLAB X IDEの使い方
公開日: 2021年02月19日最終更新日: 2022年01月28日
電子工作で大体何でも作れるようになった話でPICを使った開発に必要な、MPLAB X IDEの使い方について説明する記事です。
開発の準備
PICで動作するプログラムの開発にはMPLAB-X IDEを使用します。詳細なセットアップ手順は検索するとたくさん出てくるのでここでは最低限だけ記載します。
MPLAB X IDEのインストール
MPLAB X IDEのサイトから最新版をダウンロードしてインストールします(以下の図ではMPLAB X IDE v5.30)。
MPLAB XC8 Compilerもダウンロードしてインストールします(以下の図ではMPLAB XC8 Compiler v2.10、インストール時のLicense TypeはFreeを選択)。
プロジェクトの作成
- Choose Project
- Categories: Microchip Embedded
- Projects: Standalone project
- 使用するDeviceを選択します。ここではPIC12F1822です。
- Select Device
- Family: Mid-Range 8-bit MCUs (PIC10/12/16/MCP)
- Device: PIC12F1822
- Supported Debug Header: None
- 今回は使用しません。
- Select Tool (Optional):
- PICKit3を選択します。PICKit3をPCに接続しているとシリアル番号が表示されるので選択します。
- Select Compiler: XC8(v2.10)
- 先ほどダウンロードしてインストールしたXC Compilerを選択します。
- Select Project Name and Folder:
- 任意の名前をつけてください。
- WindwosならEncodingはShift JISにしておきましょう。
これでプロジェクトはできました。ソースファイルを追加してプログラミングを始めることができます。
MCC(MPLAB Code Configurator)
MPLAB X IDEを使っていて一番便利だったのがMCCというプラグインです。デバイスのコンフィグレーション(使いたい機能、周波数、割り込みの設定)をGUIで設定すると、必要なコードを自動生成してくれます。
Tools > Plugin > Available Pluginsタブから、MPLAB Code Configuratorをインストールします。 インストールすると下図の通りアイコンが出てくるのでクリックします。
MCCの画面に切り替わるので、Device Resourcesから使用したい機能を選んでProject Resourcesに追加すると、PinManagerの画面に対応する機能の行が追加されます。 今回はADC(アナログ・デジタル変換)、MSSP(I2C)、ECCP(PWM)、TMR1とTMR2(タイマー割り込み)を使用するためProject ResourceのPeripheralsに追加しています。
使いたい機能を追加したら、Pin Managerでピンに機能を割り当てていきます。ピンによって割り当てられる機能が異なるため、Pin Managerのピンと機能のマトリックスで割当がぶつからないように選択します。今回は図の通り無駄なく割り当てることができました(緑の鍵がかかっているところ)。ここはパズルみたいで楽しかったです。
また、これらの機能を利用したプログラムを書く場合、サンプルコードが自動生成されたヘッダの中に記載されているので持ってきていじるだけです。 例えば、I2Cのコードの雛形はMCCで自動生成されたHeader Files/MCC Generated Files/i2c.hの中にコメントとして記載されています。
PICへのプログラム書き込み回路の準備
作成したプログラムを書き込むためには、PICKit3とPICを接続する必要があります。 PICKit3とPIC12F1822の同じ名前のピン同士をつなぐだけです。
PICKit3のピン配置は以下のようになっています([http://ww1.microchip.com/downloads/jp/DeviceDoc/52010A_JP.pdf])
PIC12F1822のピン配置もデータシートで確認すると以下のようになっています。
書き込み中はMCLRをVILに保持する必要があります。MCLRとVDDを10kΩのプルアップ抵抗で接続すればいいようです。
データシートにはそのモジュールの使い方を含めた全ての情報が記載されているため、一次情報として必ずデータシートを確認します。