PIC32でシンプルなLチカをやってみる

Simple LED blinking with PIC32
 
今回はマイクロチップ謹製の統合開発環境を使った、最も簡素なLチカをプログラミングしてみましょう。

まずはプログラムライターを開発基板に接続します。サンプル基板では、Pickitの▼マークを一番右にして順にピンを差し込めば一致するようになっています。右から6番目のピンにはLEDと抵抗をつなぎます。また、5v電源はUSB端子から取得していますので、USB端子をパソコンやACアダプターなどに接続しておいてください。
マイクロチップのサイトより統合開発環境「MPLAB X IDE(現時点で最新版は5.0)」と32bitコンパイラ「XC32」をダウンロードし、インストールします。

開発ツール・MPLABを起動したら、メニューから「新しいプロジェクト」を選びます。今回はフレームワークを使用しない「Standard Project」を選択してください。
プログラム対象の機器を選びます。「Device」で名称をキーボードで打ち込むと徐々に候補が絞られていくので、「Family」で「PIC32」でフィルターする手間は必要ありません。
プログラミングツールを選択します。ちなみに黄色のマークは「動作はするが、こちらですべての検証は行っていない」を意味しています。私の手持ちはPickit3なので、ここではそれを選んでいます。
コンパイラ選択画面では、先ほどインストールしたXC32を指定します。
プロジェクト名とプロジェクトの保存先を指定します。ほかのエディタでも正しく文字を表示できるように「Encoding」は「UTF-8」にしておきましょう。
プロジェクトが無事作成されたら、C言語ファイルを作成しましょう。まずはメニューより「新規ファイル」を選択。
ファイルの種類は「Cメインファイル」を選びます。ファイル名は任意でかまいません。
コードを記入します。まずは手始めに内部発振回路を使用するなど、すべてマイコンの初期値を使用しています。ちなみに「#include <p32xxxx.h>」をインクルードすることで、レジスタのアドレス番号を名称で指定できるようになります。
main.c
#include <p32xxxx.h>

int main(int argc, char** argv) {
    // B0ピンを出力にする
    TRISBbits.TRISB0 = 0;
    
    int i = 0, n = 0;
    while(1){
        PORTBbits.RB0 = n;
        i++;
        if(i >= 100000){
            // 10万クロックに1回の割合でスイッチを切り替える
            n = (n == 0) ? 1 : 0;
            i = 0;
        }
    }
    
    return (EXIT_SUCCESS);
}
プログラムコードを入力したら、実行してみましょう。
プログラムコードにミスがなければ「プロジェクトを実行」ボタンを押すだけで、ビルドからチップへの書き込みまで一括で行われます。



また、以下の2行を追加するとPickit3を使ったデバッグができるようになります。
debug.c
#pragma config ICESEL = ICS_PGx3 // 環境によってはICS_PGx2の場合もある
#pragma config DEBUG  = ON
2018/09/23