You are here

PICSYS18をはじめよう

PICSYS18でのプログラムの作成法を説明します。
最初は少し面倒に思われるかもしれませんが、1度MPLABのプロジェクトを作ってしまえば、それを使いまわしできるので、2個目以降のプログラムの作成はとても楽になります。:-)

○ PICSYS18のパッケージ内容

PICSYS(1.00以降:現状ではPICSYS18のみ)のパッケージ内容を簡単に説明します。

PICSYSのパッケージ内容

  • BOARD: PICSYSを利用できるマイクロファン製品のボードごとのピン配置などが記載されたヘッダーファイル群が格納されています。
  • LIB: PICSYSを利用できるマイクロファン製品のボードごとのPICSYSライブラリファイル群が格納されており、利用するボードに対応したライブラリを選択してMPLAB IDEのプロジェクトに登録します。
  • LINKER: PICSYSを利用できるマイクロファン製品のMCUチップごとのリンカースクリプト(リンク用の定義ファイル)群が格納されており、利用するボードに対応したスクリプトを選択してMPLAB IDEのプロジェクトに登録します。
  • PICSYS18-USB: USBブートローダーとそれで利用できるUSB機能のサンプルプログラム群が格納されています。
  • PICSYS18-USB-USB Bootloader-HEX: USBブートローダーを利用できるマイクロファン製品のボードごとのブートローダの実行形式(HEXファイル)群が格納されています。
  • PICSYS18-USB-USB Bootloader-PC: PC側で利用するUSBブートローダーのプログラムです。
  • SAMPLE: PICSYSを利用できるマイクロファン製品のボードごとのサンプルプロジェクト群が格納されています。
  • SRC: PICSYSのソースファイルです。一部のヘッダファイルはMPLAB IDEのプロジェクトに登録しますが、他のファイル群はPICSYSライブラリを再構築する際のみに利用します。
  • USB: Microchip社のUSBスタック(の一部:PICSYSで利用する)です。PICSYSのライブラリを再構築する際のみに利用します。

○ PICSYSの利用環境

PICSYS18を利用するために必要なソフトウェアを以下に示します。

  • MPLAB IDE
  • MPLAB C18
  • PICSYS18パッケージ

USB関係の開発を行う際には、一般的にはMicrochip社のUSB Frameworkを別途ダウンロードする必要がありますが、PICSYS18で利用するUSBブートローダーやUSBスタックは、PICSYS18のパッケージに含まれていますので、改めて用意する必要はありません。

PICSYS18は以下のボードで利用できます。

マイクロファン Yahoo!ショップ

マイクロファンネットショップ

○ プロジェクトの作成

PICSYS18を利用するためのMPLAB IDEでのセットアップ作業は以下の通りです。

  • 新規プロジェクトの作成
  • インクルードパスの指定
  • ライブラリパスの指定
  • PICSYSヘッダーファイルの登録
  • PICSYSライブラリの登録
  • リンカースクリプトの登録
  • デバイス(MCUチップ)の指定
  • ソースファイルの登録

PICSYSのプロジェクト例

上記の画面は、PICSYS18-SP用のプロジェクトを作成した例です。プロジェクトに以下のようなファイルの登録を行っています。

  • ソースファイルの作成と登録:blink.c
  • ヘッダーファイルの登録:picsys18conf.h - SRCフォルダから
  • ライブラリの登録:PICSYS18-SP.lib - LIBフォルダから
  • リンカースクリプトの登録:rm18f4550 - HID Bootloader.lkr - LINKERフォルダから

デバイス(MCUチップ)の指定

MPALB IDEの[Configure - Select Device...]メニューを開き、PICSYS18-SPの場合には、そのMCUであるPIC18F4550を設定します。
利用するボードにより、設定は以下の様になります。

  • PICSYS18-SP: PIC18F4550
  • PICSYS18-XBEE: PIC18F26J50
  • PIC18F-MOD-2553: PIC18F2553
  • PIC18-DEV-2550URL: PIC18F2550

インクルードパスの指定

MPLAB IDEの[Project - Build Options... - Project]を選択します。ウィンドウが開くので、[Directories]タブを選択し、[Show directories for:]のプルダウンリストで、[Include Search Path]を選択し、インクルードパスを設定します。

  • C18の基本的なヘッダーファイル用の設定: 例えば C:\MCC18\h
  • PICSYS18のヘッダーファイル用の設定: 例えば D:\PICSYS18\SRC

それぞれ、実際にファイルをインストールした場所を指定してください。

ライブラリパスの指定

MPLAB IDEの[Project - Build Options... - Project]を選択します。ウィンドウが開くので、[Directories]タブを選択し、[Show directories for:]のプルダウンリストで、[Library Search Path]を選択し、ライブラリパスを設定します。

  • C18の基本的なヘッダーファイル用の設定: 例えば C:\MCC18\lib

実際にファイルをインストールした場所を指定してください。

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で稼動させることができるので、とっても頼もしいですね。

MCUの指定

つぎに、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に一般的なものが書き込まれています。

開発ソフト: 
チップファミリー: 
プログラムライタ: