<PICの使い方>
PICというMicrochip社のワンチップコンピュータがあります。その使い方についてブログ「作って試して」にシリーズで書いたのですが、散発的な記事になっていますので、以下にまとめておきます。ブログでの構成は次の通りでした。
- PICを使った電子回路の製作(その1) −準備−に、PICを使った電子回路の製作に必要なものを書いてあります。
- PICを使った電子回路の製作(その2) −アセンブラの操作法−に、アセンブラを使ったプログラミングの手順を書いています。
- PICを使った電子回路の製作(その3) −PICへのプログラムの書き込み−に、できたプログラムをどのようにしてPICへ書き込むか、を書いています。
- PICを使った電子回路の製作(その4) −デバッグのテクニック−に、プログラムのデバッグと電子回路の検査について書きました。
- PICを使った電子回路の製作(その5) −プログラム開発手法−で、プログラム開発の流れを振り返ります。
PICは1チップの制御用プロセッサであり、デジタル入出力とアナログ入力を備え、チップの内部でコントロールや簡単な演算処理を行うことができますので、プログラムができれば電子回路が非常に簡単になります。入力信号を処理し、なんらかの判定をして、適切なパルスを出す、というような動作はPICで容易に実現できます。
しかし、PICはれっきとしたコンピュータですので、初めて使うときにはかなりの壁が立ちはだかります。PICを使うためには、PICを使うための準備をし、知識を十分に溜め込んでから、プログラムと回路の開発を行うことになります。ここでは、以下の順に書くことにします。
- 1.PICを使った電子回路の製作に必要なものの準備
- 2.プログラミングの手順
- 3.PICへの書き込み
- 4.プログラムのデバッグと電子回路の検査
- 5.プログラム開発手法
1.PICプログラム開発に必要なものの準備
PICを使うために必要になるものを並べると以下のようになります。それらについて順に書きます。
- 1.1 アセンブラとコンパイラ
- 1.2 プログラム書き込み装置
- 1.3 電子回路の実験装置
- 1.4 測定器
- 1.5 PICのマニュアル
1.1 アセンブラとコンパイラ
PICは、一つのチップでコンピュータになっていますので、プログラムの作成が必要です。つまり、アセンブラ言語やコンパイラ言語でプログラムを記述しそれを機械語に変換します。そのためには、アセンブラや、あるいはBASICやC言語のようなコンパイラを使うことになります。私の場合は、あまり込み入ったプログラミングはしませんので、アセンブラの方が適しています。それで、マイクロチップ社の統合開発環境であるMPLAB IDEのアセンブラ(MPLAB ASM)を使用しています。MPLABIDEはフリーソフトで、マイクロチップのサイトからダウンロードできます。
コンパイラは未だ使ったことはありませんが、アセンブラでは手に負えなくなったらそのうちに使ってみようと思っています。入門用に、フリーで入手できるCコンパイラを以下に記します。
- PICC-LiteはフリーのCコンパイラーですが、対応するPICの種類が少ないようです。
- HI-TECH C PRO lite modeは製品版から最適化機能を除いた版で、フリーです。
- MPLAB C18やMPLAB C30はMicrochip社のCコンパイラーです。有料のソフトですが、Student Editionと呼ばれるフリーの評価版があります。
PIC開発環境については、マイクロファン ラボにも分かりやすく解説されています。
1.2 プログラム書き込み装置
PICプログラマ(ライタとも呼ばれる)装置で、PCで作ったPIC用のプログラム(機械語)をPICに書き込みます。PICの中のメモリにプログラムを書き込むための回路とPCとの接続のためのケーブルから成っています。純正品から自作までいろいろな種類の装置がありますが、私は、秋月電子通商のAKI-PICプログラマを使っています。写真の右側手前にある装置です。使い方については、改めて書きます。
初めてPICを使うのであれば、マイクロチップ純正の装置がよいかもしれません。対応しているPICの種類が多く、デバッグがしやすいというメリットがあります。Microchip社の製品としては、PICkit2やMPLAB ICD2等があります。他の人の意見をみると、PICkit2がお勧めのようです。私はこれらの装置を使ったことがありませんので、詳細については例えば後閑哲也さんの電子工作の実験室などを参考にして下さい。
1.3 電子回路の実験装置
ブレッドボードと呼ばれる電子回路の実験のための汎用基板を用意しておくと便利です。下の写真の手前左側のボードです。電源はDC5V程度のものを用意しておくのが一般的なようですが、私は、大抵、乾電池2個で動作させることが多いため、ブレッドボードに電池ボックスをいつも載せてあります。その場合、電圧は3V程度ですので、使えるPICの種類、クロック周波数にかなりの制約があります。
ブレッドボードについては、例えば、「ブレッドボードって何だ」も参考になります。
1.4 測定器
私は、二、三十年前に買ったテスター、数年前に買ったディジタルオシロ(写真の正面)を必要に応じて使っています。オシロは、OWON製のPDS5022Sです。このブログで紹介している機器の開発においては、何の不満もなく使えています。
1.5 PIC
PICには実に様々な種類が用意されています。PICの種類毎にマニュアルが用意されています。入出力の種類、クロック速度、メモリの大きさ、処理能力、ピン数、電源範囲などを考慮し種類を選びます。
PICについては、後閑哲也さんの電子工作の実験室他を覗いてみて下さい。
1.6 PICのマニュアル
用途と使用環境を基にPICの候補を決めたら、PICのマニュアルを入手します。Microchip社のサイトでダウンロードできます。英語版が基本ですが、少し日本語版もあるようです。
以上、ざっと書きましたが、これらについては、「PICを始めよう」の「Project 1 とにかく PICを動かしてみる」の「Step 1、必要なものを用意しよう」が参考になります。とても懇切丁寧にかかれています。但し、1.2のプログラマに関しては、私は、「PICを始めよう」で使っている装置とは別の装置を使っています。
2.プログラミングの手順
次に、プログラミングについて具体的に書きます。とは言いましても、「PICを始めよう」など、よくできたHPが沢山ありますので、それらHPを多数引用します。
- 2.1 開発用ソフトのインストール
- 2.2 プログラミングする前に必須なこと
- 2.3 プログラミングに取り掛かる
2.1 開発用ソフトのインストール
インストールの必要があるのは、アセンブラ(又はコンパイラ)とPICプログラマ用のソフト(開発したソフトをPICに書き込むためのソフトとデバッガ)です。
アセンブラはマイクロチップ社の統合開発環境であるMPLAB IDEのアセンブラ(MPLAB ASM)を用います。ダウンロードの仕方は、「PICを始めよう」の「Project 1 とにかく PICを動かしてみる」の「Step 1、 必要なものを用意しよう」に書かれていますので、参照して下さい。今回PICのプログラム開発に当たり、MPLABのバージョンが変わっていたため、私もダウンロードしました。8.10にバージョンアップするために、私のPCで時間が10分程度掛かりました。
次は、プログラマ用ソフトのインストールです。秋月電子通商のAKI-PICプログラマを購入した方は、付属CDの「PIC Programmer」をインストールします(その外のプログラマを購入した方は、その説明書に従って下さい)。「PIC Programmer」の付属CD内の「WIN」フォルダにある「SETUP.EXE」をダブルクリックするとインストールが開始します。インストールされたプログラムは、「PIC Programmer V4」となっています。
これで、プログラム開発の準備ができました。といいたいところですが、その前にしなければならないことがあります。
2.2 プログラミングする前に必須なこと
ここで、PICとは何か、どんなものかを理解しおかねばなりません。つまり、PICの構造と命令です。
とはいっても、最初の段階でPICを完全に理解するのは非常に難しいことですし、又、完全に理解する必要はありません。始めは大まかに理解するだけでよいでしょう。実際にプログラミングを開始すると、必要に迫られて少しずつ理解が進みます。又、そのときに本当に理解できるようになります。
さて、PICの構造と命令をざっと理解するにはどうしたらよいか。そうです。インタネットで探しましょう。例えば、後閑哲也さんの「電子工作の実験室」の「PICの基礎」はとても参考になります。また、「PICを始めよう」の「Project1 とにかく PICを動かしてみる」の「Step 2、 PIC の基本構造」もいいでしょう。「PICで遊ぶ電子工作」の「4章.PICの基礎」も参考になります。あるいは、PICに関する解説書を一冊購入しておくと便利です。
2.3 プログラミングに取り掛かる
以上の準備ができたところで、プログラミングに取り掛かります。MPLAB IDEを用いてプログラム開発するときは、最初にプロジェクトを作成するなどの手順が必要になります。先ずはまねをしてやってみるとよいでしょう。プログラミングの手順は次のとおりです。
- フォルダを作り、プロジェクトを生成する。
- アセンブラでプログラムを記述する。
プロジェクトを生成する手順については、初めての方は、「PICで遊ぶ電子工作」の「3章 第一ステップ(動かしてみる)」の「プログラムをつくる」を参考にして下さい。
なお、MPLAB IDEにはPICの機種毎にプログラムのテンプレートなどが準備されていますので、それを使うと便利です。その場合、の「PICを始めよう」の「Project 1 とにかく PICを動かしてみる」の「Step 3、 PIC12F675 プログラミングの準備」が分かりやくて便利です。ここでは、PIC12F675について書かれていますが、他のPICを使う場合も類推できると思います。
アセンブラでプログラムを書く際、始めのうちは、何もないところから書き始めるのは至難の業です。お手本になるプログラムを探し出し、それを修正しながら目的のプログラムを作り上げることができると少しは楽かと思います。
3.PICへの書き込み
ここでは、プログラムをPICに書き込む方法について書きます。内容は以下のとおりです。
- 3.1 PICのプログラムのデバッグの流れ
- 3.2 PICへのプログラムの書き込み
3.1 PICのプログラムのデバッグの流れ
プログラムができたら、プログラムが正しく記述されているかどうか調べる必要があります。そのためにできる仕掛けは、二つあります。一つは、プログラムが正しく書かれているか否かをソフト的に確認(シミュレート)する方法です。もう一つは、PICを実際の回路の中で全体的な動作を確認しながらプログラムを調べる方法です。
具体的に書きますと、前者の場合は、MPLABのデバッガ(MPLAB SIM)を使いソフト的にデバッグを行います。後者の場合は、PICにプログラムを書き込んでPICを実際の回路に実装し、それから回路のチェックとソフトのチェックを同時に行います。つまり、プログラミング→MPLABによるデバッグ→PICへの書き込み→実回路で動作チェック(ソフトとハードのデバッグ)、という流れになります。なお、後ろに書きますが、PICプログラマには、これらの処理を効率よく行う機能を持ったものがあります。
このブログでは、どのような流れで記述するか少し迷いましたが、上述のようにいろいろな手法がありますので、今回は先ずPICへの書き込みだけを書き、デバッグについては、次回書くことにしました。
3.2 PICへのプログラムの書き込み
PICへのプログラムの書き込みを行う装置を、PICプログラマあるいはPICライタなどと呼ぶようです。PICプログラマとしては様々な装置がありますが、実際の回路にPICを実装したままでプログラムの書き込みと実行の制御(回路に実装したままデバッグ)のできるICEタイプと、PICへの書き込み機能(実際の回路から外して書き込む)のみを持つ単機能タイプとがあります。PIC販売元であるMicrochip社の製品は、PICkit2やMPLAB ICD2等、前者のタイプで、デバッグがしやすく、又、対応しているPICの種類が多いというメリットがあります。他の人の意見をみると、PICkit2がお勧めのようです。私はこれらの装置を使ったことがありませんので、詳細については例えば後閑哲也さんの「電子工作の実験室」などを参考にして下さい。
私は、秋月電子通商のPICプログラマ(AKI-PICプログラマ)を使っています。この装置はプログラムの書き込みのみを行うタイプです。
AKI-PICプログラマを使うには、先ず、PCにPICプログラマを接続します。基本的にはRS232Cケーブルを使いますが、USBケーブルも使えるようになっています。接続方法は、それらのマニュアルを参考にして下さい。
では、MPLABで機械語に翻訳したプログラム(HECファイル)をPICに書き込みましょう。先ず、PICライタに付属しているソフト(Pic ProgrammerV4)起動します。画面がでましたら、「デバイス選択」でPICの選択をし、「HEXロード」をクリックして機械語になったプログラム(.HEX)を指定します。プログラムを書き込むためのPICチップをAKI-PICプログラマの指定されたICソケットに挿入(画面に表示されます)し、その後、「プログラム」をクリックするとプログラムの書き込みが開始します。なお、、「PICで遊ぶ電子工作」の3章.第1ステップ(動かしてみる)(4)プログラムをPICに書き込む、に図入りで説明がありますので参考にして下さい。
書き込みが終了しましたら、PICプログラマからPICを外し、回路に実装して回路とプログラムの検査となります。デバッグについては次回書きます。
4.プログラムのデバッグと電子回路の検査
機械語に翻訳したプログラムのデバッグの仕方について書きます。
PICのデバッグには、プログラムをPICに書き込む前に行うデバッグと、プログラムを書き込んだPICを回路に実装した形で行うデバッグがあります。前者は、PC上でのシミュレーションということになり、統合開発環境であるMPLAB(MPLAB IDE)が使えます。また、回路に実装した後のデバッグでは、オシロスコープやその他の検査器具を使うことになり、ごく普通の回路検査のイメージで、回路に検査用の回路を付加することもあります。なお、Microchip社のICEタイプのPICプログラマを用いると、PICを回路に実装したままプログラムを書き込んだり、実行の制御をしながらデバッグを行うことができますので、PICを抜き差しする必要がなくなります。
4.1 MPLABを使ったデバッグ
MPLABのアセンブラ(MPLAB ASM)を用いてプログラムを作成(機械語に翻訳)すると、HEXファイルが作られます。このようにしてできたプログラムをPC上でシミュレーションすることができます。このような機能(デバッガ)がMPLABに用意されており、MPLAB SIMといいます。先ず、MPLAB(MPLAB IDE)のメニュー「Debugger」から「Select Tool」、「MPLAB SIM」でデバッガ(シミュレータ)を有効にしておきます。そうすると、アセンブル(機械語に翻訳)した結果にエラーがなかったとすれば、PICプログラムのスタート命令にカーソルが動き、デバッグができるようになります。このデバッガ(シミュレータ)の操作法については、「PICを始めよう」の「Project1とにかく PICを動かしてみる」の「Step 7、 PC上で シュミレーションしてみる」に詳細に書かれています。参考にして下さい。
MPLAB SIMを使ってできるのは、主として、レジスタの操作と演算に係わる部分です。割り込みについても、流れを追うことはできます。しかし、実際の時間関係は殆ど分かりません。時間が絡む部分の検査は実際の回路で行わざるを得ません。
4.2 回路に実装して行うデバッグ(プログラムと回路の同時検査)
ICEを使うと、PICを回路に実装したままプログラムを書き込んだり、実行の制御をしながらデバッグを行うことができることを書きましたが、私は、ICEを使っていません。
電子回路は既にできているか、あるいは、ブレッドボードに配線してあるものとします。先ず、アセンブル(機械語に翻訳)したプログラム(HEXファイル)をPICに書き込みます。そのPICを実際の回路に挿入します。そこで、プログラムと配線の間違い探しです。この段階では、テスト用の回路を付加的に組み込んだり、いろいろな工夫が必要です。知恵の絞り方のうまさ加減が試されます。
なお、回路の検査の初期の段階では、PICの出力端子にPICの動作が判断できる信号を出力するようにプログラムしておくのが、非常に強力な手法です。動作が確認でき次第、そのような付加的なプログラムを削り、本来のプログラムに直していきます。この際、何度もPICを抜き差しして、実際の回路とPICプログラマの間で入れ替えることになります。
5.プログラム開発手法
今迄、PICのプログラム開発に際して必要なソフトと機器の使い方について書いてきました。ところで、プログラム開発の全体の流れは、いったいどのようになるのでしょうか。
組織的に行う場合には、要求仕様の明確化、システム設計・・と、手順を追って進めることが必須です。しかし、私のように一人で開発する場合、おまけに、PICそのものの動作・仕様を完全には理解していない状態でプログラム開発をスタートする場合には、それとは違った方法を使うことになるでしょう。つまり、基本的な部分を先に作り、徐々に機能を増やしていくプロトタイピングです。私の場、私がユーザでプログラマでもあり、おまけにシステム・技術をよく分かっていない状態での、いわば「一人プロトタイピング」とでもいう状況になります。
また、何度も修正しながら出来上がったプログラムを、後できちんとした形に作り直すことも面倒くさくなってしまうことも多いものです。それをスマートにいうと、進化的プロトタイピングということになりそうです。しかし、最初の基礎検討・基本仕様の決定をきちんとやっておいたとしても、そもそもの理解が不十分であれば、基本部分でさえもいろいろ試しながら作ることも多いわけです。従って、進化的プロトタイピングと使い捨て型プロトタイピングを併用することになります。このような手法は、表面だけ捉えるとオペレーショナルプロトタイピングと呼ぶ高尚な手法に似ています。非常に格好よく聞こえますね。とはいっても、私の場合は実態は「お気楽プロトタイピング」でしょう。
結論としては、自分で勉強しながら作る場合は、なんでもありだと思います。硬いことをいわずに気楽にいきましょう。使っているうちに覚えます。