PICの開発環境は改良が続けられている。メーカーであるmicrochipが供給するツールやライブラリの品質も大きく向上し、以前のものとはまったくの別物でC言語での開発も十分に可能である。また、PICはArduinoなどと比べ価格や消費電力など有利な点も多い。この記事では、マイコンにPIC16F1955 開発環境にMPLAB X IDE、書き込みツールにMPLAB SNAPおよびC言語(xc8)を使用した開発手法について解説する。まずはLEDをチカチカさせる。
入手方法
私は次のサイトで入手した。
種別 | 品名 | 入手先 | URL |
---|---|---|---|
マイコン | PIC16F19155 | 秋月電子 | https://akizukidenshi.com/catalog/g/gI-13504/ |
書き込みツール | MPLAB SNAP | 秋月電子 | https://akizukidenshi.com/catalog/g/gM-13854/ |
IDE | MPLAB X IDE | microchip | https://www.microchip.com/en-us/development-tools-tools-and-software/mplab-x-ide |
C言語 | xc8 | microchip | https://www.microchip.com/en-us/development-tools-tools-and-software/mplab-xc-compilers |
この他に抵抗、ブレッドボード、LED、コンデンサー、タクトスイッチ、ICクリップなども秋月電子で購入している。
回路図
実際にはRC1に接続したLED1個しか使わないが、LED2個とSW1個およびPIC構成される回路図を作成した。また、MLABO SNAP に接続するためのJ1を記載した。水晶発振器などもないこともあって非常にシンプルである。
ソフトウェアのインストール
私はxc8⇒MPLAB X IDEの順でインストールした。MPLAB X IDEをインストールしたあと、MPLAB X IDEのメニューTools⇒plaginから、MPLAB Code Configuratorをインストールする。MPLAB Code Configurator(MCC)は強力なツールでサンプルソースが不要なほどにコード生成を支援してくれる。
MPLAB SNAP (書き込みツール)
MPLAB SNAPは書き込みの他にステップ実行や変数Watchなどのデバックができるハードウェアである。パソコンとはmicro USB端子を用いて接続し、PICとはジャンパーワイヤなどを用いて接続する。配線を下表にまとめる。コンデンサーや抵抗を挟まずに直接接続する。電源は、マイコン側を切ってからMPAB SNAPを切る。PICKIT4とは異なり電力はMPALB SNAPからは供給されない。
MPLAB SNAP | PIC16F19155 | 備考 |
---|---|---|
1 MCLR | 1 MCLR | 通常実行時には外さないと動かない場合がある。 |
2 Vcc | 20 Vcc | MPLAB SNAPからは供給されないので、別途電源が必要 |
3 GND | 19 GND | |
4 PGD | 28 ICSPDAT | |
5 PGC | 27 ICSPCLK | |
6NC | - | 接続しない |
7 - | - | 接続しない |
8 - | - | 接続しない |
プロジェクトの作成
MPLAB X IDEからFile⇒NewProjectで表示されるダイアログに従いプロジェクトを作成する。
1.Standalone Project
2.Device >PIC16F19155選択
Tool> Snap-XXXXXを選択(XXXXXはシリアル番号?)。表示されない場合は、MPLAB SNAPとの接続に問題がある。
3.XC8 (v2.32)を選択
4.ProjectName>プロジェクトの名前をつける。ここではltikaにした。
最後、Finishボタンででプロジェクトがでる。
PICの設定
次にMCCを使って、PICの設定を行っていく。MCCのアイコンがない場合は、プラグインの設定を確認する。
動作周波数の設定
今回は内蔵クロックを利用し32MHzで使用するので、次画像のようにCurrent System Clockが32MHz (2x PLL)になるように設定する。
入出力の設定
MCCを用いて回路図の通りRC0 RC1を出力、RC4入力に設定する。
pullupの設定
RC4は内部pull upを設定する。内部pull upを使う場合はWPUにチェックを入れる。WPUはweak pull upの略。
コードジェネレート
あとは、Generateボタンをクリックすると、ここまでのPICの設定を行うコードが生成されプロジェクトに追加される。
ソフト
次にLEDをチカチカさせるコードを記載する。
main関数のwhileブロックの中に、LEDを光らせるコードを書く。
while (1)
{
// Add your application code
IO_RC1_SetHigh() ;
__delay_ms(500);
IO_RC1_SetLow() ;
__delay_ms(500);
}
このコードは500ms(=0.5秒)ごとにRC1のLEDを点滅させる。IO_RC1_SetHigh()およびIO_RC1_SetHigh()はRC1のデジタル出力を行うマクロで、MCCで生成されるpin_manger.hで定義されている。このファイルには他にもIO_RC3_Toggle() なども定義されているので一読するとよい。__delay_msは引数分のms間停止するマクロである。pic.hで定義されおり、xcに組み込まれている_delay関数を呼び出す。
実行
画面の上部 ミドリ三角ボタンの再生ボタンをクリックするとPICに転送され実行される。
次回の予定
タクトスイッチを使った例を紹介する。