PIC16F1827+MPLAB SNAPでLチカするまでの完全手順

PICマイコン

はじめに

今回は、MPLAB SNAPを使って、初めてPICマイコンに書き込みを行ってみました。

MPLAB SNAPはPickitに比べて機能は制限されていますが、比較的安い値段で購入することができます。現時点では、秋月電子で2,200円で販売されていました。

MPLAB SNAPを使ったLチカの記事が少なかったので、プログラムの作成から書き込みまでの手順、注意点などを記録しておきます。

MPLAB X IDEのインストール

PICマイコンへ書き込むを行うには、「MPLAB X IDE」と「MPLAB XC8 Compiler」というMicrochip公式のソフトが必要になります。

今回使用したバージョンは以下の通りです。

  • MPLAB X IDE v6.30
  • MPLAB XC8 Compiler v3.10

以下の記事で、インストール方法をまとめているので、まだインストールしてない方はぜひ参考にしてください。

【2026年版】MPLAB X IDE のインストール手順(Windows/Mac)
はじめにPICマイコンの開発では、Microchip公式の開発環境「MPLAB X IDE」を使用します。この記事では、「MPLAB X IDE」と「MPLAB XC8 Compiler」のインストール手順を初心者向けに解説します。Wind…

回路を組む

パーツリスト

次のパーツを使用して回路を作成しました。プルアップ抵抗 10kΩコンデンサ 0.1uF(パスコン)はなくても一応動作しますが、誤動作防止のためにつけています。

  • MPLAB SNAP
  • PIC16F1827
  • microUSBケーブル
  • ブレッドボード/ジャンパワイヤ
  • 電池ボックス(単三3本)
  • 抵抗 330Ω, 10kΩ
  • コンデンサ 0.1uF
  • LED

回路図

LEDは、そのままPICに接続すると大きな電流が流れ、PICが壊れてしまいます。そのため、抵抗を直列に接続し、電流を制限しています。

使用したLEDは順方向電圧が約2Vなので、

(5 \mathrm{V} - 2 \mathrm{V}) / 330 \mathrm{\Omega} = 0.0091 \mathrm{A} = 9.1 \mathrm{mA}

となります。PICでは、1ピンあたり数十mAが上限となっているため、LEDの電流を5~10mA程度にしおくと安全です。

配線

LEDは足の長いほうがプラス(アノード)なので、PIC側に接続します。

PICの向き:切り欠き(丸い凹み)が上

PICの向き:切り欠き(丸い凹み)が左

プログラムを書き込む

次に、MPLAB X IDEを使ってプログラムを書き込みます。パソコンとMPLAB SNAPが接続されていることを確認してください。

プロジェクトの作成

まず、MPLAB X IDEを起動すると以下のような画面になるので、左上の「New Project…」を押してプロジェクトを作成します。

「Microchip Embedded」と「Application Project(s)」が選択されていることを確認し、次へ進みます。

Deviceで「PIC16F1827」を選択し、Toolで「Snap」と書かれたものを選択します。このとき、MPLAB SNAPが表示されない場合は、再度接続を確認し、最初からプロジェクトを作り直してください。

デバッグヘッダーは「None」で問題ないので、変更せず次へ進みます。

XC8が選択されていることを確認し、次へ進みます。

Project Nameは任意で問題ないですが、今回は「led」とします。

「Open MCC on Finish」のチェックを外し、「Set as main project」にチェックされていることを確認します。Encodingは「UTF-8」を選択し、「Finish」を押します。

以上でプロジェクトの作成が完了しました。

プログラムの作成

次に、プログラムを作成します。サイドバーで「Source Files」を選択し、左上の「New File…」を押してください。

Categoriesで「C」を選び、「C Source File」を選択します。

File Nameは任意ですが、今回は「main」とします。「Finish」を押すと、main.cが作成されます。

作成したプログラムは次のようになります。

最初のCONFIG1, CONFIG2の部分には、マイコンの設定を定義しています。今回使用したMPLAB SNAPは高電圧プログラミングに対応していないので、必ず LVP = ON に設定してください。高電圧で書き込んだ場合、元に戻せなくなる可能性があるので注意してください。

LEDを点滅させる処理は、whileの中に書かれています。LATBbits.LATB3のビットを0/1に変更することで、LEDを接続したピン(RB3)の出力を決めることができます。

C
// File: main.c

// PIC16F1827のコンフィグレーション設定

// CONFIG1
#pragma config FOSC = INTOSC    // 内部クロックを使用する
#pragma config WDTE = OFF       // ウォッチドッグタイマを使用しない
#pragma config PWRTE = OFF      // 電源投入時の待機時間を設定しない
#pragma config MCLRE = OFF      // MCLRピンをリセット入力として使用しない
#pragma config CP = OFF         // プログラムの読み出し保護をしない
#pragma config CPD = OFF        // データメモリの読み出し保護をしない
#pragma config BOREN = ON       // 電圧低下時にリセットする
#pragma config CLKOUTEN = OFF   // クロック信号を外部へ出力しない
#pragma config IESO = OFF       // クロックの自動切り替えを行わない
#pragma config FCMEN = OFF      // クロック異常の監視を行わない

// CONFIG2
#pragma config WRT = OFF        // プログラムメモリの書き込み保護をしない
#pragma config PLLEN = OFF      // PLL(4倍速クロック)を使用しない
#pragma config STVREN = ON      // スタック異常時にリセットする
#pragma config BORV = LO        // 電圧低下検出のしきい値を低く設定
#pragma config DEBUG = OFF      // デバッグ機能を使用しない
#pragma config LVP = ON         // 低電圧プログラミングを使用する

#include <xc.h>                 // PIC用の定義ファイルを読み込む

#define _XTAL_FREQ 8000000      // クロック周波数を8MHzに設定

void main(void) {

    OSCCON = 0b01110000; // 内部クロックを8MHzに設定

    ANSELA = 0x00; // PORTAをすべてデジタル入力・出力にする
    ANSELB = 0x00; // PORTBをすべてデジタル入力・出力にする

    TRISBbits.TRISB3 = 0; // RB3を出力モードに設定する

    LATBbits.LATB3 = 0; // LEDを初期状態(消灯)にする

    while (1) { // この中の処理を繰り返す

        LATBbits.LATB3 = 0; // LEDを消灯する
        __delay_ms(500); // 500ミリ秒待つ

        LATBbits.LATB3 = 1; // LEDを点灯する
        __delay_ms(500); // 500ミリ秒待つ
    }
}

このプログラムをmain.cに入力します。PICの型番によって設定が異なる場合があるので注意してください。

書き込み

main.cに入力したプログラムをPICに書き込みます。上部にあるボタンを押して書き込みます。書き込みには電源が必要なので、電池ボックスの電源が入っているか確認してください。

電圧に関する注意事項が表示されます。問題ないので、Yesを選択します。

ここで、PICへの書き込みが始まります。下の出力に「Programming/Verify complete」と表示されたら、正常に書き込まれています。

動作確認

このように0.5秒間隔でLEDが点滅していれば、正常に動作しています。

おわりに

この記事では、MPLAB SNAPを使って、PICマイコンでLチカをしてみました。SNAPは安価で機能が少ないですが、開発用途では問題なく使用することができました。

この記事が参考になれば幸いです。最後まで読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました