PICSYS18でのプログラムの作成法を説明します。
最初は少し面倒に思われるかもしれませんが、1度MPLABのプロジェクトを作ってしまえば、それを使いまわしできるので、2個目以降のプログラムの作成はとても楽になります。:-)
PICSYS(1.00以降:現状ではPICSYS18のみ)のパッケージ内容を簡単に説明します。
PICSYSのパッケージ内容
PICSYS18を利用するために必要なソフトウェアを以下に示します。
USB関係の開発を行う際には、一般的にはMicrochip社のUSB Frameworkを別途ダウンロードする必要がありますが、PICSYS18で利用するUSBブートローダーやUSBスタックは、PICSYS18のパッケージに含まれていますので、改めて用意する必要はありません。
PICSYS18は以下のボードで利用できます。
PICSYS18を利用するためのMPLAB IDEでのセットアップ作業は以下の通りです。
PICSYSのプロジェクト例
上記の画面は、PICSYS18-SP用のプロジェクトを作成した例です。プロジェクトに以下のようなファイルの登録を行っています。
デバイス(MCUチップ)の指定
MPALB IDEの[Configure - Select Device...]メニューを開き、PICSYS18-SPの場合には、そのMCUであるPIC18F4550を設定します。
利用するボードにより、設定は以下の様になります。
インクルードパスの指定
MPLAB IDEの[Project - Build Options... - Project]を選択します。ウィンドウが開くので、[Directories]タブを選択し、[Show directories for:]のプルダウンリストで、[Include Search Path]を選択し、インクルードパスを設定します。
それぞれ、実際にファイルをインストールした場所を指定してください。
ライブラリパスの指定
MPLAB IDEの[Project - Build Options... - Project]を選択します。ウィンドウが開くので、[Directories]タブを選択し、[Show directories for:]のプルダウンリストで、[Library Search Path]を選択し、ライブラリパスを設定します。
実際にファイルをインストールした場所を指定してください。
MPLAB IDEの[Project - Build Options... - Project]を選択します。ウィンドウが開くので、[Directories]タブを選択し、[Show directories for:]のプルダウンリストで、[Library Search Path]を選択し、ライブラリパスを設定します。
メモリモデルの確認
MPLAB IDEの[Project - Build Options... - Project]を選択します。ウィンドウが開くので、[MPLAB C18]タブを選択し、[Categories: のプルダウンリストで、[Memory Model]を選択し、設定が上記の様になっていることを確認します。
プロジェクトが作成できたら後は以下の繰り返しです。
コンパイルで出来上がったプログラムは、USBブートローダーを利用してターゲットボードに簡単に書き込むことができます。
USBブートローダー:HIDBootLoader.exeの画面
Arduinoとは異なり、USBブートローダーがIDEと連携できていないので、最初はどうかと思いましたが、使ってみると。。。。もう手放せませんね。これまでは、主にPICkit2を利用してプログラム書き込みを行っていたのですが、ブートローダーそのものを書き込むとき意外はもうPICkit2を一切利用しなくなりました。:-)
注:これ以降は、PICSYS18 0.9Xに関する説明です。
PIC-DML-2520を例として、PICSYSプログラミングの手順を簡単に説明します。
PICSYSのパッケージを入手したらソースファイルを展開し、これからプログラミングを行うプロジェクトのフォルダにコピーした上で、IDEのプロジェクトファイルリストに*.h, *.cファイルを登録します。
次に、picsys18conf.hを編集して、以下の定義を有効にします。
#define PIC_DML_2520
#define INT_OSC 32MHz
PIC18Fは外部に発振子をつけなくても、PLLで逓倍して32MHzで稼動させることができるので、とっても頼もしいですね。
つぎに、IDEの[Configure]メニューの[Select Device...]でPIC18F2520を選択します。
これで、PICSYS18の利用準備は終了です。
以前はリンカースクリプトなどを指定しないといけなかったのですが、新しいMPLABではIDEが標準的な設定を選択してくれるようになり少し楽になりました。
つぎは、適当なファイル名でC言語のソースファイルを作成してプロジェクトに追加し、picsys18.hをインクルードするように記述します。
プログラムの作成はArduinoと同様に、初期化を行うsetup()関数と、その後の処理を繰り返すloop()関数を定義します。
例えば、以下のようなプログラムを記述すると、SW1ボタンを押すとLED1が点灯する処理を実現できます。
PICの細かな初期化処理など必要なく、抽象度の高いプログラムを記述できるので、非常に楽にプログラミングを進めていくことができます。
#include "picsys18.h"
void setup()
{
pinMode(LED1, OUTPUT) ;
pinMode(SW1, INPUT) ;
}
void loop()
{
digitalWrite(LED1, digitalRead(SW1)) ;
}
最後に、ビルドもしくはメイクをしてやって、hexファイルができれば、めでたしめでたし。
Arduinoライクなプログラムで、main関数がないのでC言語のユーザーとしては少し不安になりますが、main関数そのものは、PICSYS18の場合には、picsys18.cに以下の様に定義されていますのでご心配なく。
void
main(void)
{
_initPicsys() ;
setup() ;
for (;;)
loop() ;
}
また、コンフィグ設定も同じくpicsys18.cに一般的なものが書き込まれています。