はじめに
ここからは実際のA33F,dsPICの機能の使い方について説明します。まずは開発環境の使い方と開発の進め方について説明します。
※このページで紹介する内容はあくまでも一例です。個別の作成のご相談ご質問はお答えできませんのでご了承下さい。このページと同じ内容についてのご質問についてはロボット掲示板にてお願いいたします。
※以下の情報は2007年11月現在のものです。ご注意ください。
※このページではC言語の基本的な部分を理解している方向けに書いてあります。また、何回かMPLABの操作を行った方を対象にしています。それ以外の方はまず基本編を読んで下さい。
開発の流れ
おおまかな流れは次のようになります。
1)プロジェクトを作成
2)プログラムを作る(ソースファイルを作成)
3)ビルド(必要なファイルを自動生成。途中でコンパイラC30が自動で起動する。)
4)プログラムの転送
5)デバック、問題があれば2)へ戻る
開発にはMPLABとC30というソフトウェアが必要です。どちらも無償で入手できます。MPLABとC30の入手からインストールまではこちらを参照してください。
プロジェクト作成〜プログラムの転送まではこちらに例があります。
デバックはこのページで説明します。
MPLABのマニュアル
dsPICのメーカーではるMicrochip社はアメリカの会社なので、基本的にマニュアル類は英語です。日本法人でマイクロチップジャパンという会社があり、いくつかのマニュアルを日本語化しています。但し、日本語化には時差があり、ここで使っているMPLABのver8はまだマニュアルが日本語化されておりません。そのうち日本語化されるかも知れませんのでマイクロチップジャパンのリンクを示します。
マイクロチップ・テクノロジー・ジャパン株式会社のホームページ
最新版のマニュアルなどは、本家アメリカのホームページにあります。しかし、置いてある場所や内容はよく変わるので注意して下さい。
Microchip社のホームページ
とはいえ、英語のドキュメントを読むのは苦労すると思うので、このページでは、ひととおり開発ができるだけの操作について説明します。
MPLABの画面(Ver8の場合)
これはMPLABの基本的な画面の様子です。基本的なウィンドウに、「プロジェクトウィンドウ」と「アウトプットウィンドウ」があります。プロジェクト作成直後はこの2つのウィンドウが出ていない場合があります。この2つのウィンドウを出すにはメニューの「View」を選択し、各ウィンドウを指定します。
全ての操作は「メニュー」の選択で行います。また、よく使われる操作はツールバーのアイコンになっています。
MPLABの役割
MPLABはMicorchip社のマイコンを開発する統合環境ツールで、Windows上で動きます。主な役割は次の通り。
1)プロジェクトの管理(必要なファイルの管理)
2)ソースファイルの編集
3)コンパイル管理(実際のコンパイルは別なソフト、C30がバックグランドで実行している)
4)プログラムのチップへの書き込み
5)デバッカとの通信、デバック表示(今回のデバッカはICD2)
MPLABのバージョン
A33FではdsPIC33Fというシリーズのマイコンを使っていますが、MPLABはMicrochip社全てのマイコンの開発ができるようになっています。逆に言うと、dsPIC33Fの開発だけでよいのですが、それ以外も開発できてしまうので、設定などが少々面倒になります。また、新しいチップが発売されるたびにMPLABもバージョンアップするので、使い方が違ってしまうなどの問題もあります。
ということで、一度使ったバージョンは、特別な理由がない限り変更しないことをお勧めします。今回はMPLABのver8を使っていますので、今後、特別な理由がない限りはVer8を使い続けることをお勧めします。
メニュー
<File>
ファイル関連の操作、既存のプロジェクトを開く、などを行います。
<Edit>
コピー・貼り付けなどのエディターの機能を使います。MPLABのエディターは予約語やコメントなどの色が自動的に変わります。また、プログラム時のインデント(見やすいように行の先頭位置をズラす。Tabキーを押すと一様にズレる)を統一してくれます。
<View>
MPLABのいろいろなツールをひらくところです。プロジェクトウィンドウとアウトプット以外にも、デバック中に使うウィンドウなどを開きます。
<Project>
プロジェクトの新規作成、管理、ビルドなどを行います。
<Debugger>
デバッカの設定、デバックプログラムの書き込み、デバック実行・停止・ステップ実行などを行います。今回、デバッカはICD2になります。
<Programmer>
プログラマ(プログラム書き込み機)の設定、書き込などを行います。今回、書き込み機はICD2になります。ICD2はデバッカと書き込みを兼用した装置です。
<Tools>
コンパイラ(今回はC30)以外の外部ソフトを立ち上げます。非常に高度なことを行う場合に使います。ここを操作すると画面が変わるので、なるべく開かないようにしてください。
<Configure>
チップのハードウェア設定などを行います。ハードウェア設定はプログラムの中でも行えるものが多く、今回もプログラムで記述しますのでここはあまり使いません。
<Window>
開いているウィンドウの切り替えなどを行います。
<Help>
ヘルプ(英語)や、MPLABのバージョンを確認します。
ツールバー
ツールバーについては、アイコンの上にマウスをポイントする(クリックではなく移動してしばらくする)と出てくる説明を見て判断して下さい。以下、よく使うものを説明します。
New File:新規ファイルを開く
Open File:既存のファイルを開く
Save Workspace:プロジェクトを保存
Build All:ビルド
Program target device:プログラムをマイコンに書き込む
Run:デバック実行
Halt:デバック一時停止
Step Into:デバックで一行実行
Reset:デバックをリセット
メニュー:File
<New>
新規ファイルを作成します。
<Add New Files To Project>
プロジェクトにファイルを追加します。
<Open>
ファイルを開きます。MPLAB上にファイルが開いても、プロジェクトに追加されるわけではないので注意。
<Close>
閉じられるファイルにフォーカスがあるときに、そのファイルを閉じます。
<Save>
フォーカスがあるファイルをセーブします。
<Save As...>
名前をつけて保存。
<Save All>
全てのファイルを保存します。プロジェクトの設定などは保存されません。
<Open/Close/Save/Workspace>
プロジェクトを開く/保存/閉じるを行います。このようにMPLABではProjectと言う場合とWorkspeceと言う場合がありますので注意して下さい。
<Inport/Export>
すいません、ここよくわかりません。
<Print>
フォーカスがあるファイルの内容を印刷します。
<Recent Files/Workspace>
最近開いたファイルやプロジェクトを開きます。
<Exit>
MPLABを終了します。
メニュー:Edit
エディターの操作を行います。
<Undo>
取り消し(直前の作業を戻す。)
<Redo>
取り消しの取り消し。
<Cut/Copy/Paste/Delete>
それぞれカット、コピー、貼り付け、削除
<Select All>
フォーカスがあるファイルの文章全てを選択状態にします。
<Find>
ファイルの中の文字を検索します。
<Find Next>
Find中に、次の検索結果に移動します。F3を押した方が速い。
<Find in Files...>
キーワードがあらかじめ用意され、検索場所や条件もプログラム中の文字検索用になっているFindです。
<Replace>
文字を別な文字に置き換えます。
<GoTo>
指定した文字列のある関数などにフォーカスを移動します。
その他はエディターの設定です。自分の好みがあれば変更してもよいでしょう。
メニュー:View
<Project/Output>
それぞれ、プロジェクトウィンドウとアウトプットウィンドウを開きます。
<Toolcars>
ツールバーの表示/非表示を切り替えます。
その他はデバック時に使うツールをひらくものです。デバックについてはこのページ下の方で説明します。
メニュー:Project
<ProjectWizard>
プロジェクトウィザードを立ち上げて、新しいプロジェクトを作ります。プロジェクト作成〜プログラムの転送まではこちらに例があります。
<New/Open/Close>
それぞれ、プロジェクトを新規作成、開く、閉じるします。プロジェクトを新規作成する場合はProjectWizardを使った方が良いです。
<Set Active Project>
プロジェクトは複数開くこともできます。その場合、アクティブにするプロジェクトを選びます。プロジェクトを複数開くと間違って違うところを修正したりしますのであまりお勧めできません。
<Crean>
中間ファイルを消去します。
<Export Makefile>
メイクファイルをエクスポートします。
<Build All>
ビルドを実行します。
<Make>
修正があったファイルだけをコンパイルします。ビルドより少し速いですが、PCが速いのであまり速度は変わりません。
<Build Configuration>
リリースモードでビルドするか、デバックモードでビルドするかを選択します。デバックモードでビルドすると、MPLABからの指示でマイコンが動き、RUN(プログラム実行)やHalt(プログラム一時停止)などの操作ができます。リリースモードでビルドすると、電源が入った瞬間にプログラムが動くようになります(但し、プログラムケーブルが接続されている場合は停止する)。
<Build Options>
ビルドを行う場合の細かい設定を行います。ビギナーの場合は、Printf関数を使う時以外はここを操作しないで下さい。
<Save Project 〜 RemoveFiles From Projecr>
上から「プロジェクトの保存」 「プロジェクトを名前をつけて保存」 「プロジェクトにファイルを追加」 「プロジェクトに新しいファイルを作って追加」 「プロジェクトからファイルを除く(追加の逆)」 です。プロジェクトウィンドウ上で右クリックで同じ操作ができます。
<Select Language Toolesuite>
コンバイラを選択します。dsPIC33Fの場合はC30になりますので、C30以外は選択しないで下さい。尚、ここにC30のリストを載せるには、MPLABを先にインストールして、後からC30をインストールする必要があります。
<Set Language Toolsuite>
コンパイラのある場所のパスを指定します。ここもいじらないで下さい。
<Version Control>
VCSを使う場合にここを使います。VCSについてはMPLABの英語ユーザーガイドに書いてあります。個人で開発する場合には特に使わなくても問題ありません。
メニュー:Debugger
デバッカ(ICD2)でデバックする時に使います。
<Select Tool>
MPLABで使うことのできるデバック装置の一覧が出ます。デバックを行う時は「MPLAB ICD2」を選択してください。
<Clear Memory>
マイコン内部のメモリを消去します。
<Run〜Reset>
デバック実行時の操作を行います。
<Breakpoints>
ブレークポイントの設定を行います。このページ下のデバックの説明で詳しく説明します。
<MPLAB ICD2 Setup Wizard>
ICD2の設定を行います。MPLABのインターフェイス(USBかRS232C、今回はUSB)を選択したり、自動的にICD2のOSをダウンロードしたりするかを設定します。ICD2はチップによってOSが違いますが、プロジェクトのチップ選択を変えたりするとOSが自動的に入れ替えられます。dsPIC33Fしか開発しない場合は、インストール直後の一回だけOSがICD2にダウンロードされます。ICD2のOSはMPLABの中にあり、チップにあったものが自動的に転送されます。
<Program>
ビルドしたプログラムをマイコンに転送します。
<Read>
マイコンに転送したプログラムを読み込みます。
<Read EEPROM>
EEPROMがついているチップの場合、EEPROMの中のデータを読み込みます。dsPIC33FにはEEPROMは内蔵されていません。記憶装置はA33Fに搭載されているmicroSDカードを使います。
<Abort Operating>
プログラムの転送などの作業を中止します。
<Connect>
MPLABとICD2が接続されているか確認します。結果はアウトプットウィンドウに表示されます。
<Download ICD2 Operation System>
ICD2のOSを書き換えます。
<Settings>
デバッカの設定を行います。
メニュー:Programmer
ICD2を書き込み機として使う場合に使います。書き込み機をProgrammerと呼びます。ここではICD2のことになります。
<Select Programmer>
MPLABで使うことのできる書き込み装置の一覧が出ます。デバックを行う時は「MPLAB ICD2」を選択してください。
<MPLAB ICD2 Setup Wizard>
Debugger(上の節)と同じ。
<Program>
ビルドしたプログラムをマイコンに転送します。
<Read>
マイコンに転送したプログラムを読み込みます。
<Verify>
転送したプログラムが合っているか確認します。
<Erase Part>
プログラムを消去します。
<Blank Check>
メモリーがプランク(消去済み)かをチェックを行います。
<Read EEPROM>
EEPROMがついているチップの場合、EEPROMの中のデータを読み込みます。dsPIC33FにはEEPROMは内蔵されていません。記憶装置はA33Fに搭載されているmicroSDカードを使います。
<Release from Reset と Hold in Reset>
この2つは現時点のユーザーガイドに記載がないのでどのような動きをするかわかりません。おそらく、Programmerのエラー状態から復帰させるものだと思います。
<Connect>
MPLABとICD2が接続されているか確認します。結果はアウトプットウィンドウに表示されます。
<Download ICD2 Operation System>
ICD2のOSを書き換えます。
<Settings>
書き込み機の設定を行います。
メニュー:Tools
ここは外部ソフトウェアを起動するところです。A33Fでは使いませんので説明を割愛します。
メニュー:Configure
チップのハード的な設定を行います。
<Select Device>
開発するチップを選択します。プロジェクトウィザードで指定しますので、ここで改めて指定する必要はありません。
<Configuration Bits>
チップのハードウェア設定を行います。ここで設定できることはプログラム中でもできますし、後のページでプログラム内での設定方法を説明しますので、ここを特に操作する必要はありません。クロックを何を使うかや、書き込んだプログラムコードを読み取れないようにする、などの設定です。
<External Memory>
外部メモリーの設定です。dsPIC33Fには外部メモリーはありません(その代わり、A33F上のmicroSDカードスロットとつながっている)。
<ID Memor>
ユーザーIDを設定します。特に操作する必要はありません。
<Settings>
MPLABのその他の設定を行います。
メニュー:Window
開いているウィンドウを選択したり閉じたりします。読めばわかるので説明は割愛します。(マウスでウィンドウを直接操作しても同じ)
プロジェクトウィンドウ
プロジェクトウィンドウは、メニューの「View」−>「Project」で開きます。プロジェクト作成後に、プロジェクトにファイルを追加/削除したい場合は、それぞれのフォルダやファイルで右クリックして操作します(追加は「Add
Files...」で削除は「Remove」)。dsPIC33Fの開発では、毎回かならず必要なファイルもありますが、自動的にプロジェクトには組み込んでくれませんので注意して下さい。MPLABはいろいろなマイコンを開発できるのでこのように個別設定が必要な箇所が多いのが少し難点です。
これは、基本編で作ったプロジェクトの表示例です。ソースファイル以外にも必要なファイルがあります。
以下、フォルダの説明をします。尚、ファイルへのリンクは右クリックで対象を保存で取得できます。
<Source Files(ソースファイル)> xx.c xx.asm xx.s
プロジェクトに追加されているソースファイルを示します。
<Header Files(ヘッダーファイル)> xx.h xx.inc
追加されているヘッダーファイルを示します。ヘッダーファイルはビルド時だけに組み込まれます。dsPIC33FJ256GP710を開発する場合は、Microchipより「p33FJ256GP710.h」というヘッダファイルが用意されており、機能の定義などを行っています。今回もこのヘッダファイルを使っています。
<Object Files(オブジェクトファイル)> xx.o
追加されているオブジェクトファイルを示します。オブジェクトファイルはあらかじめコンパイルされているファイルで、他のプロジェクトでコンパイルしたものを使う場合はここで追加します。
<Library Files(ライブラリファイル)> xx.a xx.o
追加されているライブラリファイルを示します。ライブラリはメーカーから供給されており、ビルドのリンク時(自動で行われる)に組み込まれます。dsPIC33FJ256GP710を開発する場合は「libp33FJ256GP710-coff.a」が必要になります。
<Linker Scripts(リンカースクリプト)> xx.gld xx.lkr
リンク時に実行するスクリプトを記述したファイルをここに追加します。リンカースクリプトはこのフォルダに1つしかおいてはいけません。dsPIC33FJ256GP710を開発する場合メーカーが「p33FJ256GP710.gld」というファイルを用意しています。
<Intermediary Files(中間ファイル)>
プロジェクトはこのフォルダを管理しますが、ユーザーからは見えません。ビルド中に中間ファイルがいくつか生成されます。
<Ourput Files(出力ファイル)> xx.coff xx.map
プロジェクトはこのフォルダを管理しますが、ユーザーからは見えません。ビルド後(正確にはリンク後)に最終的な出力ファイルを生成します。
<Ourput Files(出力ファイル)> xx.txt xx.pdf xx.scl
必要であれば、その他のファイルを追加できます。テキストファイルやpdfファイル、シュミレータファイル(scl)などを追加します。
よくあるエラー表示
アウトプットや、エラーウィンドウが開いてエラーをうながす場合がありますが、ここではよくあるエラーの例を紹介します。
■ICDWarn0020:
ICD2が物理的に接続されていないか、間違ったチップが接続されている場合に出ます。特に、 (expected=0xFF, read=0x0) と出ている場合は電源が入っていないか、物理的にプログラムケーブルが抜けている場合が多いです。
デバッカの使い方
ICD2は書き込みもできるデバッカです。ここではMPLAB+ICD2でのデバックの方法を説明します。
<デバッカの必要性>
いままで(基本編では)、計算結果などをUSBシリアルを通じてPC上に表示していました。よく雑誌の付録についているマイコンなどでもこの方法でプログラム結果を確認しますが、この方法ではプログラムがまったく動かない場合にどこが悪いのかがわかりません。デバッカはプログラムを停止して、マイコン内部の状態を調べるものです。
<ICSP>
dsPIC33FにはICSP(In Circuit Serial Programming:基板にマイコンが載ったままシリアルでプログラムが書けるという意味)という機能がついており、マイコンのプログラムとは別でマイコンと通信をすることができます。これによりプログラムを書き込んだり、マイコン内部の状態を確認したりできます。
<デバックモードとプログラマモード>
ICD2のモードには大きく2通りあり、デバックモードとプログラマーモードがあります。
「Programmer」−> 「Select Programmer」−>「MPLAB ICD2」を選択すると、ICD2はプログラム書き込み機として動きます。これはプログラムが完成したときに最後に転送するものです。プログラムは電源が入った直後から動くようになります(プログラムケーブルをつけたままだと停止する)。実際には一度でプログラムが上手く動くということはないので、何回もデバックを行うことになります。
「Debugger」−>「Select tool 」−>「MPLAB ICD2」を選択するとデバックモードになり、いろいろなデバックツールが使えます。
<Build Configuration>
ICD2のモードだけでなく、ビルド時もデバックモードとプログラマモードがあり、「Project」−>「Build Configuration」でRelease(最終版)か、Debug(デバック中の版)かを選択した上でビルドします。
ただし、ここですが、MPLABのver8ではどちらを選択してもあまり変わらないようです。最終版を書き込む時だけ、Releaseに設定されているかを注意して下さい。尚、この選択はツールバーでも行うことができます。
では、以後は実際の例を使って説明します。基本編で使ったプロジェクトを開いてください。(基本編をやっていない方はどのようなことができるか確認する程度で読んでください。)
プロジェクトはビルドされているものとします。デバックモードでビルドして、チップにプログラムを転送(「Debugger」->「Program」)してください。A33Fには電源が入っており、ICD2とプログラムケーブルで接続されている状態とします。
<ブレークポイント>
デバック時には、任意の位置でプログラムを止めることができます。この止める場所を「ブレークポイント」と言います。ブレークポイントを設定するには、ソースプログラムの行番号の少し右(灰色の部分)をダブルクリックします。
これは行97にブレークポイントを設定したところです。ブレークポイントが設定されると、その場所に赤丸でBのマークがつきます。
この状態で、RUN(「Debugger」->「Run」又はF9キー)すると、プログラムがデバックモードで実行され、ブレークポイントまでくると一時停止します。
一時停止すると、次のようにBマークに緑の矢印がついて、そこで止まっていることを示します。基本編のサンプルプログラムでは、起動時にLEDを3回点滅していますが、その前にブレークポイントが付いているので、基板の方はLEDが点滅する前の状態(LEDにつながっている端子の初期化が終わった状態、つまり端子はLOW、つまりLEDが点きっぱなし)になっているはずです。
<変数の値を見る>
ブレークポイントで一時停止している状態で、マウスのカーソルをソースプログラムの変数の上にしばらく置くと、その変数の中の値が表示できます。
これは、for文の中のcntの上にカーソルを置いたところです。まだfor文は開始されていないので、cntの中の値は0になっています。この変数はint型で宣言されているので、表示も16ビット表示(16進数で4桁)になっています。
<ステップ実行させる >
プログラムを一行づつ動かして様子をみる場合は、Step Intoを実行します。
ボタンを押すと一行づつ実行されます。上の上体で1ステップ(1行)実行させてみると、次のように緑矢印が動いて次の行へ行きます。この際、アウトプットにはその行が実行された結果が表示されますが、プログラムの無いようによっては一行実行するのに非常に時間がかかる場合があります。(通信しながら実行するので、本当の実行より遅い)
このようにして、プログラムを1行づつ検査することができます。ステップ実行のその都度、変数の中を見ることができます。
<その他の操作>
一時停止を再開するにはRUNボタンを押します。プログラムをはじめから実行したい場合はResetボタンを押します。逆に、実行中にブレークポイント以外のタイミングで一時停止したい場合はHaltボタンを押します。
<デバックツール>
デバックツールは「View」の中で開くことができます。
「Call Stack」〜「Watch」までの、黒字になっているところが現在使えるものです。よく使うのはWatchです。
<Watch>
WatchはSFR(特殊レジスタ)と変数の中身を表示するウィンドウで、自分で見たいものだけのリストが作れます。
これはWatchを開いたところです。このように、Wacthで変数などを指定していると、一時停止した時の変数の中身を見ることができます。プログラムのデバック中は何度も同じ変数やSFRを参照することが多いのでこれを使います。
なにを見るかのリストはしたのタブの選択でWatch1〜4までの4パターンを登録できます。
<その他のツール>
その他はそれぞれの名称のものの全てのリストが出ます。Watch以外はあまり使いませんが、興味があったら除いてみても良いでしょう。
<Memory Usage Gauge>
プログラムメモリーとRAMがどのぐらい残っているかを表示します。大きなプログラムを作る場合はこれを見ながら作る必要があります。下はサンプルプログラムの例で、ほとんど使用していないのがわかります。この値はビルド後に変わりますので注意して下さい(容量を見る場合はビルドする)。
おわりに
ここで説明したことは基本的な部分です。MPLABはこの他にも沢山の機能がありますが、ほとんどはこの基本部分だけで開発できるはずです。もし、やりたいことが出てきた場合は英語版のMPLABユーザーガイドを参照してください。
次は、dsPIC33Fの特有なハードウェア設定について説明します。
2007年12月1日
|