今回から数回にわけて、PICマイコンのプログラムを詳しく説明します。
本シリーズ記事の内容を改訂して、基礎編、応用編、実践編として以下のリンクに公開しています。以下のシリーズはさらにいろいろなPICマイコンの機能をご紹介しています!
PICマイコン電子工作入門 〜基礎編〜
PICマイコン電子工作入門 〜応用編〜
PICマイコン電子工作入門 〜実践編〜
今回の説明
発光ダイオード点滅回路を完成させるために以下の順序で説明しています。このエントリの説明は(3)「プログラムを作る」の部分の、プログラム作成のステップになります。
- 発光ダイオード(LED)を電池と抵抗のみで光らせる回路を組む
PICマイコンの回路を組む前に、まずは電池、抵抗、発光ダイオードのみを使って、ブレッドポード上に回路を組んで発光ダイオードを光らせてみます。ここでは電池、抵抗、発光ダイオードの回路記号、回路図と、回路図からブレッドボードに組む方法を説明します。 - PICマイコンのベース回路を組む
はじめの一歩の回路は、発光ダイオードを1秒に1回光らせるだけの回路です。この回路を組みます。 - プログラムを作る
発光ダイオードを1秒に1回光らせるプログラムを作成します。 - PICマイコンに書き込んで動作させる
作成したプログラムをPICマイコンに書き込んで動作させてみます。 - ベース回路にスイッチを追加
発光ダイオードの点滅をスイッチで開始させるために、ベース回路にスイッチを追加します。これまでは発光ダイオードを光らせる、という出力制御をしましたが、PICマイコンで外部から信号を入力する方法を確認します。 - ベース回路にブザーを追加
スイッチ付きの1秒に1回光らせる回路を作りましたので、ブザーを追加してタイマーを作ってみます。
プログラムの構成
前回のエントリでは、完成したプログラムをビルド・書き込み・動作テストさせてみましたが、今回からこのプログラムの中身を詳しく説明します。プログラム自体は短いですが、PICマイコンプログラムの基本的な部分がいろいろと詰まっていますので、一通り理解することを目指しましょう!
PICマイコンのプログラムは多くの場合、以下のような構成になっています。
それぞれのブロック毎に説明していきますが、すべてのブロックを説明するとかなり長い説明になりますので、今回はコメント部分とヘッダファイルインクルード部分の説明をします。
なお、PICマイコンプログラムの構成はだいたい上の構成になっていますが、実際のプログラムを見るとちょっと違うところもあります。どのような点が違う可能性があるかというと、、、
- PICマイコンコンフィグレーション設定部分やその他設定部分を、main.cには記述せずに別にヘッダファイル(例えばconfig.hのようなファイル名のファイル)を用意してそこに書き、それをmain.cでインクルード(#include “config.h”)することが多くあります。この場合、main.cにはPICマイコンコンフィグレーション設定部分やその他の設定部分は記述されておらず、外部のファイルに書かれていることになります。
- 規模がちょっと大きくなってくると、プログラムを複数の.cファイルに分けて記述されることが多くなります。今回はひとつのファイルにまとめた方がわかりやすいので、main.cのひとつのファイルでプログラムを書きました。今回作成するプログラムは機能を拡張してもかなり小さいプログラムになると思います。一方で、最終的にはそれなりの規模のプログラムになる場合は、小規模の試作から始めるケースでも、小規模のときからファイル構成を考えておくとよいと思います。
- C言語解説書のプログラムでは、メイン関数はだいたいmain.cに記述しますが、PICマイコンプログラム、特にMicrochip社のサンプルコードなどを見ると、メイン関数のあるファイル名がmain.cではないケースもあります。Microchip社のサンプルコードでは、例えばUSBキーボードデバイスのサンプルプログラムのメイン関数は “keyboard.c” だったりします。
という感じです。特に最初の2項目はC言語プログラミングの話になってきますので詳細はC言語の解説書を参照いただければと思います。なお、Microchip社からリリースされているサンプルプログラムは規模の大きいものが多く、そのようなケースではどのようにプログラムを書いていけばよいか参考になりますよ。
コメント部分
MPLABX IDEで、新規プロジェクトを作って、main.cを新規追加すると、main.cファイルの先頭にコメントが自動的に記述されます。内容は、ファイル名と作成者です。今回はこのままにしますが、自分でいくつもプログラムを書いていくとだんだんわからなくなってきますので、今後いろいろなプログラムを作成されるときは、これ以外にも以下の内容を記述しておくとよいと思います。
- プログラムの内容。例えば、LEDを1秒に1回光らせるプログラム、など。
- プログラムのターゲットとなる回路の情報(回路図の保存場所など)
- ターゲットのPICマイコン。PIC12F683、など。
- コンパイラ。XC8、など。
- プログラムバージョン
- 簡単な変更履歴
ところで、昔はプログラムの先頭コメント部分に結構細かく変更履歴を書くケースが多かったと思います。でも最近は変更履歴を書くにしても簡単な内容にとどめて、実際はバージョン管理システムで管理することが多くなってきました。例えばGitHubやBitbucketなどというWebサービスを聞いたことがないでしょうか。GitHubはGitというバージョン管理システムでソースコードを共有・管理するWebサービスです。
このバージョン管理システムですが、実はMAPLABX IDEに搭載されています。MPLABX IDEのVer.3系では
- Git
- Mercurial
- Subversion
が利用できます。このバージョン管理システムはそれぞれ特徴があり、使い方も異なります。これらの解説については書籍やサイトがありますのでご興味があれは勉強してみてください。なお、MPLABX IDEで利用する場合、”Team”メニューからそれぞれのバージョン管理システムメニューで管理します。
というわけでいろいろと説明してしまいましたが、まずはデフォルトで進めてみて、自分でいろいろと工夫してみましょう。またバージョン管理システムはツールとして使えるといろいろと役に立ちますのでこちらも是非勉強してみてください。
ヘッダファイルインクルード部分
新規プロジェクトを作って、main.cを新規追加すると、デフォルトで stdio.h と stdlib.h がインクルードされるように記述されています。ヘッダファイルのインクルードについては、基本的な機能のプログラムでしたらこれらの加えて xc.h をインクルードすればOKです。
ところで、#include文でインクルードしているファイルの内容を確認したいケースがありますよね。この場合、MPLABX IDEでは、すぐにそのファイルを開けるショートカットが用意されています。例えば、xc.hを開きたい場合、commandキーを押しながら、以下のようにマウスカーソルを <xc.h> の文字列にもっていきます。
すると、今までオレンジ色だった文字色が青色に変わります。この状態でクリックすると、xc.hが開かれます。
ところで、xc.hの内容は、htc.hをインクルードしているだけです。htc.hを開いてみると、さらに何かをインクルードしています。このあたりについては、メイン関数を説明するときに詳しく調べてみようと思います。具体的には、PICマイコンのピンの電圧を制御する場合、GP5 = 1; などと記述すれば制御できることは説明しましたが、この GP5 はどのように定義されているか、調べてみることにします。
それでは、次回はPICマイコンコンフィグレーション設定部分の説明をしますね。
更新履歴
日付 | 内容 |
---|---|
2015.9.22 | 新規投稿 |
2018.12.3 | 新シリーズ記事紹介追加 |