MPLAB XとPICKit3でPICをデバッグしてみる
〔シミュレータ基本編〕
〔MPLAB X の使い方に戻る〕
前にMPLAB Xでシミュレータを起動しシミュレーションする方法は記述しましたが、
今度は実際のPICでデバッグを行う方法を書いて置きます。
これが出来るとバグ潰しに大いに役立つはずです。
ブレークポイントの設置やステップ実行等の操作は、シミュレータの操作と全く同じですので
操作の基本は[シミュレータ基本編]を参照して下さい、ここでは読んでいるのを前提として書きます。
デバッグが出来るデバイス(PIC)は、データシートのコンフィグレーションの項を見て、
[DEBUG]のインサーキットデバッガモードビットが有ればデバッグ出来ます。
尚、この[DEBUG]ビットのON/OFFはプログラムでコンフィグレーションの記述はしない様にします、
MPLAB X IDE 自身が制御する事になっているので。
《接続》
左がデバッグ実験の風景写真です。
PICは18F25K22で行っています。
配線は通常のPICにプログラムを書込む
時の場合と同じですが、
"PICkit3ユーザガイド"の
「2.5.2 ターゲット回路との接続」と
「2.5.5 デバッガの正常動作を妨げる回路」
と言う章が有るので一読しましょう。
実際の回路ではリセットSW(VPP/MCLR)を
設け、PGC/PGDのピンはデバッグを行う為に
出来るだけ使用しない様に実装を心得た方が
良いでしょう。
VPP/MCLR ラインからVDD へのプルアップ抵抗(約10KΩ)を接続する事を推奨します。
(とユーザガイドには書いて有ります)
PICkit3とPIC(PDIPタイプ)の接続端子番号一覧です。
PICkit3
ピンNo. |
端
子名 |
8PinPIC
ピンNo. |
14PinPIC
ピンNo. |
18PinPIC
ピンNo. |
28PinPIC
ピンNo. |
1 |
VPP/MCLR |
4 |
4 |
4 |
1 |
2 |
VDD |
1 |
1 |
14 |
20 |
3 |
VSS(GND) |
8 |
14 |
5 |
8/19 |
4 |
PGD(ICSPDAT) |
7 |
13 |
13 |
28 |
5 |
PGC(ICSPCLK) |
6 |
12 |
12 |
27 |
6 |
PGM(LVP) |
|
|
|
|
電源供給について
上の実験回路ではPICkit3からの電源で、プログラム書き込みもデバッグ動作も行っているので
MPLAB Xで下記の設定を行います。
@MPLAB X メニューバーの[File]->[Project Properties]をクリックします。
下記のプロジェクトプロパティ画面が表示されます。

画面左側のパネル"Categories:"で"PICkit3"をクリックします。
画面右側のパネル"Option categories:"で"Power"を選択します。

"Power target circuit from PICkit3 □"の項目にチェックを入れる。
"Voltage Level"の項目でPICkit3から供給する電圧を選択する。
(チェックのみではダメです、電圧もチャンと選びます)
後は[OK]ボタンをクリックします。
通常は実機でデバッグするので電源は繋がっているはずですね、その場合はこの操作は行いません。
(逆にPowerのチェックを入れている場合は外す事になりますよ)
《コンフィグレーション》
デバッグする前に変更するべきコンフィグレーションの設定が有ります。
・上でも記述しましたね、[DEBUG]ビットは記述しない。
・MCLRピンはI/Oにしない事。(MCLRE=EXTMCLR/ON)
・ウオッチドッグタイマーは無効にします。(WDTEN=OFF)
・メモリなどのコードの保護は無効にします。
・低電圧プログラミング機能は無効にします。(LVP/PGM=OFF)
MCLRピンにリセットスイッチを繋いでいない場合はVDDにプルアップ(10KΩ)します。
PICkit3を買うと付いて来るポスターの様な簡易マニュアルが出て来たので眺めていたら、
変更するべきコンフィグレーションの設定の項に以下の2点を新たに見つけてしまった。
・「JTAG Disabled」 これは私の扱うPICには無いので無視します
・「BOD VDD > BOD VDD min」 今一つ解らないが、リセットが掛からない様にBORENをOFFに
しろって事かしら?
上記設定を変更しなかった場合は、下記の注意画面が表示されます。 *2)
(この画面は、MPLAB X IDE V3.40からのコピーです)

「 要求された操作は、以下の構成ビット設定では続行できません。
パワーアップタイマイネーブルビット= PWRTイネーブル。
マスタークリアイネーブルビット= MCLR / VPPピン機能はデジタル入力です。
MCLRは内部でディセーブルです。
ポートピンのWPU制御ビットの制御下で弱いプルアップ。
MPLABに設定を変更して続行しますか?
注:これにより、このセッションの構成メモリのみが変更されます、
プログラムコードの設定ビットの設定は変更されません。 」
[Yes]ボタンをクリックしデバッグを進めても良いでしょう。。
《Challeng Debug》
さあ、デバッグに挑戦です。
@PICkit3はデバッグ対象のPICと接続できていますね。
Aコンフィグレーションの設定(上記)はOKですね。
BMPLAB X メニューバーの[Debug]->[Debug Project]をクリック、あるいは
の赤枠ツールアイコンをクリックします。
CPICにプログラムが書きこまれた後にPICが動作を開始します。
ブレークポイントを設置していればそこで停止しますが、なければRUN状態です、
一時停止の[Pause]ボタンをクリックすれば一旦止まるでしょう。
D後は[シミュレータ基本編]と操作は同じです、バグを潰しましょう。
《ブレークポイントについて》
左図は、MPLAB Xの左側パネルの[Dashboard]タブ内の
表示です。
"Debug Resources"の所で"Free:3"と有りますが
これはブレークポイントをMAX3個まで設置可能と言う事です。
(因みに、PICにより個数は変わりますよ)
(この個数が0でないならデバッグ可能と言う事ですね)
[Dashboard]タブの表示方法はここを見ましょう。
この様に実際にデバッグを行うとブレークポイントと
停止した場所がズレる事が有ります。
99行でなく100行目で停止していて、
99行も実行されている様です。 *1)
日本語マニュアル
MPLAB X IDE(V3.xx) ユーザガイド *3)
PICkit3 MPLAB X IDE 用インサーキット デバッガ/プログラマ ユーザガイド
リンクの見直し(*3) 2020/03/26
記事一部追記(*2) 2016/12/28
追記(*1) 2015/03/05
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2020 Shigehiro Kimura All Rights Reserved.