前回MPLABを使ってプログラムを作成する方法を確認したので、今回は作成したプログラムを実際にPICへ焼いてみました。
今回の書き込みを行ったのはPIC16F84Aです。
PICへの書き込みにはライタが必要なので、まずは以下のハードを用意します。
用意する道具一覧
PICkit3
今回、ROMの書き込みにはPICkit3を使用しました(PICkit2でも書き込み可能です)。
楽天だと2021年7月現在、Debug Express付きのものが1万円ほどで販売されているようです。
プログラムの書き込みだけならDebug Expressは不要です。PICkit3単体だと4000円程度で入手できます。
ブレッドボード
PICの書き込みをするだけなら、以下のように小型で安価なものでも十分です。
小型のものだと400円程度から購入できます。
PICにセンサーなどを追加して色々遊んでみたい人は、以下のようにもう少し大き目のものがお勧めです。
大きいほうも持っているのですが、今回は小型のもので動作確認しました。
ブレッドボード用のジャンプワイヤ
ブレッドボードで使用する配線用のワイヤです。
大きめのブレッドボードを購入した場合は、ワイヤも同梱されていることも多いです。
ブレッドボード用ジャンプワイヤセット
PICへの書き込み方法
まずはPCへPICkit3を差し込みます。接続には必ず付属の赤いUSBケーブルを使用してください。WindowsXPで確認しましたが、特にドライバのインストールは要求されずに認識されました。
デバイスマネージャのUSBヒューマンインターフェースとして、以下のようにPICkit3が認識されていればOKです。
次にMPLABを起動し、書き込みを行いたいプログラムのプロジェクトファイルを開きます。
メニューバーよりProgramer->Select Programmer->PICkit3を選択し、チェックを入れます。
すると、右下にConnectingというメッセージがしばらく表示されます。
この時、PMLABでデバッグを行っていた場合は以下のメッセージが出ます。
Debugger In Use
----------------
A programmer and a debugger cannot be loaded at the same time.
Do you want to unload the debugger and continue loading the
programmer? |
Debugger In Use
----------------
A programmer and a debugger cannot be loaded at the same time.
Do you want to unload the debugger and continue loading the
programmer?
これは、プログラム(デバッグ)機能とPICへの書き込み機能が同時に使用できないという警告です。デバッグを終了して書き込みを行いたい為、OKをクリックします。
その後、OutputウィンドウにPICkit3タブが表示され、デバイスが検出されたというメッセージが表示されます
PICkit3 detected
Connecting to PICkit3...
Running self test...
Self test completed
RS Version..... 01.08.22
AP Version..... 01.08.22 |
PICkit3 detected
Connecting to PICkit3...
Running self test...
Self test completed
RS Version..... 01.08.22
AP Version..... 01.08.22
初回の使用時には、PICkit3とMPLABのバージョンによっては、ファームウェアをアップグレードを促すダイアログが表示されます。通常はファームをアップしないとしないと使用できないので、OKをクリックします。
ファームのダウンロードとアップデートが行われます。
しばらく時間が掛かるので待ちます。
ファームのアップデート後、再度PICkit3を刺しなおすと以下のようになります。
(今回のファームバージョンは01.27.15でした)
PICkit3 detected
Connecting to PICkit3...
Running self test...
Self test completed
Firmware Suite Version .... 01.27.15
Firmware type ............. Midrange |
PICkit3 detected
Connecting to PICkit3...
Running self test...
Self test completed
Firmware Suite Version .... 01.27.15
Firmware type ............. Midrange
次に、電圧設定に関する警告が表示されます。
Voltage Caution
CAUTION: Check that the device selected in MPLAB IDE (PIC14F84A)
is the same one that is physically attached to the debug
tool. Selecting a 5V device when a 3.3V device is connected
can result in damage to the device when the debugger checks
the device ID. |
Voltage Caution
CAUTION: Check that the device selected in MPLAB IDE (PIC14F84A)
is the same one that is physically attached to the debug
tool. Selecting a 5V device when a 3.3V device is connected
can result in damage to the device when the debugger checks
the device ID.
MPLABで選択されたデバイスと同じものが取り付けられているか確認してください。
3.3V駆動のデバイスに対してプロジェクト作成時に5V駆動のデバイスを選択しているとデバイスにダメージを与える原因となります。
メッセージを確認後、問題なければOKをクリックします。
次に接続される側であるPIC側の回路をブレッドボードで組み,PICkitと接続します。
ドキュメントによると以下の接続を行う必要があります。
上記仕様を元に実際にブレッドボードで組んだ回路です。
使用するPICは、前述の通りPIC16F84Aです。
左下の外部に出ている線がPICkit3との接続線で、左側がpin1になります。
こちらはPICkit側です。▲のある側がpin1で、pin6は使用しません。
また、PICkit3は+5V電源の供給も行えるのですが、最初の動作確認は外部から電源を貰ったほうが確実です。
配線を行いPICが認識されると、Target Detectedのメッセージが表示されます。
Target Detected
Device ID Revision = 00000000 |
Target Detected
Device ID Revision = 00000000
ここまで出来たら、次はいよいよプログラムの書き込みです。
メニューバーにPICkit3の操作用アイコンが追加されています。
アイコンは、左から順に以下の操作を行う事ができます。
Program PICにプログラムを書き込みます
Read PICからプログラムを読み出します
Verify PICに正しくプログラムを書き込めたかチェックします
Erase Flash Device PICからプログラムを消去します
Blank Check All PICのプログラムが空であるかチェックします
Release From Reset
Hold In Reset
Power On |
Program PICにプログラムを書き込みます
Read PICからプログラムを読み出します
Verify PICに正しくプログラムを書き込めたかチェックします
Erase Flash Device PICからプログラムを消去します
Blank Check All PICのプログラムが空であるかチェックします
Release From Reset
Hold In Reset
Power On
今回は一番左のProgramをクリックします。
下記のメッセージが表示されれば書き込みは成功です。
Programming...
Programming/Verify complete |
Programming...
Programming/Verify complete
今回は、動作確認として以下のプログラムを書き込みました。
LIST P=16F84
INCLUDE P16F84A.INC
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
ORG 0
BSF STATUS, RP0
MOVLW 0xFF ; PORTAを入力にする
MOVWF TRISA
MOVLW 0x00 ; PORTBを出力にする
MOVWF TRISB
BCF STATUS, RP0
MAIN_LOOP
; RA2に入力が無ければPORTBを1,有れば0にする
MOVLW B'11111111'
BTFSS PORTA, 2
MOVLW B'00000000'
MOVWF PORTB
GOTO MAIN_LOOP |
LIST P=16F84
INCLUDE P16F84A.INC
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
ORG 0
BSF STATUS, RP0
MOVLW 0xFF ; PORTAを入力にする
MOVWF TRISA
MOVLW 0x00 ; PORTBを出力にする
MOVWF TRISB
BCF STATUS, RP0
MAIN_LOOP
; RA2に入力が無ければPORTBを1,有れば0にする
MOVLW B'11111111'
BTFSS PORTA, 2
MOVLW B'00000000'
MOVWF PORTB
GOTO MAIN_LOOP
動作確認用のスイッチ、LED、オシレータを追加した回路はこちら。
スイッチを操作して、LEDのON/OFFがコントロールできれば動作確認は成功です。
ブレッドボードによる電子回路実験 (I・O BOOKS)