<PIC24USB用プロジェクトの作成>

実際にPIC24USB用のアプリケーションを作成してみましょう。
今回は最も簡単なLEDをブリンクさせるプログラムをCで作成します。

まずはインストールしたMPLABを起動します。


新しいプロジェクトを作るにはニューの「Project -> Project Wizard」を起動します。

「次へ」をクリック。


デバイスは「PIC24FJ256GB106」を選択して、「次へ」をクリック。


Active Toolsuiteは「Microchip C30 Toolsuite」を選択して、「次へ」をクリック。


作成するプロジェクトファイルを聞いてきるので、「Browse」をクリック。


作成するディレクトリを選択して、右上の「フォルダ作成アイコン」をクリックして、
「新しいフォルダ」を作成する「blink」フォルダに変更します。
さらに作成した「blink」フォルダを開きます。


「ファイル名」に「blink」を入力して「保存」ボタンをクリックします。


「次へ」をクリック。


プロジェクトに既存のファイルを追加する画面になりますが、
今回は一から作りますので、何もせず「次へ」をクリック。


「完了」ボタンを押して完了です。

<ソースファイルの作成>

プロジェクトは作成されましたので、プロジェクトにソースファイルを作成します。
MPLABのメニューの「File -> Add New File to Project」を開きます。

先ほど作成したディレクトリに移動すると上記のようにプロジェクトファイル(blink.mcp)が作成されています。
この画面で、「ファイル名」に「blink.c」と入力して「保存」をクリックします。

blink.cが開きますので、下記のソースコードを入力します。
  1. #include "p24FJ256GB106.h"
  2. _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF
  3.     & COE_OFF & ICS_PGx2 & FWDTEN_OFF)
  4. _CONFIG2( IESO_OFF & FNOSC_PRIPLL & PLLDIV_DIV4 & PLL_96MHZ_ON
  5.     & FCKSM_CSDCMD
  6.     & OSCIOFNC_OFF & IOL1WAY_OFF & DISUVREG_OFF & POSCMOD_XT)
  7. int main(void){
  8.     CLKDIV = 0;                 //周辺:32MHz CPU:32MHz USB:48MHz
  9.     AD1PCFG = 0xffff;             //AN0-15をデジタル入力
  10.     _TRISE4 = 0;                 //ポートE4を出力に設定
  11.     //タイマ1の設定
  12.     PR1 = 6250-1;               //(32000000/2)/10/256 = 6250
  13.     T1CON = 0b1000000000110000;   //プリスケーラ1/256, 10Hzでblink
  14.     _T1IE = 1;
  15.     for(;;){
  16.         ;
  17.     }
  18. }
  19. void __attribute__((interrupt, no_auto_psv)) _T1Interrupt(void){
  20.     _T1IF = 0;
  21.     _LATE4 = !_LATE4;             //ポートE4を反転
  22. }
1行目のインクルードはPIC24FJ256用のレジスタなどが定義されているファイルでインクルードすることにより、CLKDIVなどのレジスタ名をダイレクトにソースコードで使用できるようになります。

2-8行目はPIC24のコンフィグレーションの設定で、PIC24USBを使用する場合は上記のように指定します。(16MHzクリスタルを使用してUSB用のクロックをPLLで生成するなどの設定です。詳しくはPIC24FJ256のデータシートを参照してください。)

24-27行目はタイマー1の割り込みを使用して、割り込みルーチン内でポートE4を反転させています。

PIC24USBのCN2-3(ポートE4)とCN2-1(GND)の間に接続したLEDを点滅させます。

<コンパイル & 書き込み>

ソースコードが入力できたら実際にコンパイル(Make)を行って見ましょう。
MPLABのメニューから「Project -> Make」を実行します。(F10キーを押してもOKです)
MPLABのOutputウインドウにBUILD SUCCEEDEDと表示されればOKです。

コンパイルが完了するとフラッシュ書き込み用のヘキサファイル(blink.hex)が生成されます。
これをPIC24USBに書き込みます。
書き込むにはPIC24USBのライタープログラムを起動させる必要がありますので、VSSとPGDをショートさせた状態でPCと接続します。


コマンドプロンプト(DOS窓)を開き、今回作成したblinkディレクトリに移動して「pic24wr blink.hex」を実行すればフラッシュメモリに書き込まれます。
pic24wr.exeはこちらからダウンロードできます)
pic24wrは書き込み後、自動的に書き込んだプログラムを実行しますので、PIC24USBのCN2-3(ポートE4)とCN2-1(GND)の間にLEDを接続すればLEDが点滅するはずです。



pic24wrで書き込み後、再度書き込みを行う場合はVSSとPGDをショートさせた状態でUSBケーブルの抜き差しを行ってください。抜き差しによりライタープログラムが起動しますので再度pic24wrで書き込むことが可能になります。

コマンドプロンプトを開いてpic24wrを起動するのは面倒ですので、Makeの際に自動的にpic24wrを実行することも出来ます。
MPLABのメニューから「Project -> Build Options -> Project」を開き、「Custom Build」タブを選択します。

「Post-Build Step」にチェックを入れ「pic24wr blink.hex」を実行するようにします。

この状態でMakeを行うと下記のようにコンパイル&書き込みが行われます。
(pic24wr.exeがblinkのディレクトリにコピーされているか、pic24wr.exeへのパスが有効であること)


<USBを使用した C++ コンソールアプリ>

USBを使用したC++のコンソールアプリケーションのサンプルです。
「Visual Studio 2005」を使用しています。ファイル一式はこちらからダウンロードできます。

PIC24側のファームウエアはこちらからダウンロードしてください。
usb_cnt_adc.hexをPIC24USBに書き込んで使用します。
マイクロチップの提供するUSBライブラリのMCHPUSB Generic Driverを使用しています。

サンプルプログラムはADC入力AN4,AN5,AN6,AN7をAD変換して値を表示します。
同時にRP11に入力されるベースクロックを基準にして、RP26に入力される信号の周波数を測定しています。

<USBを使用した C# コンソールアプリ>

C#を使用したコンソールアプリのサンプルです。
「Visual Studio 2005」を使用しています。ファイル一式はこちらからダウンロードできます。

基本的な機能は上記のC++のサンプルと同じです。PIC24のファームウエアも同じものを使用します。

<USBを使用した C# Windowsフォームアプリケーション>

C#を使用したGUIのWindowsフォームアプリケーションです。
「Visual Studio 2005」を使用しています。ファイル一式はこちらからダウンロードできます。

基本的な機能は上記のC++のサンプルと同じです。PIC24のファームウエアも同じものを使用します。