MPLABXと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]をクリックします。
 下記のプロジェクトプロパティ画面が表示されます。

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

ProjectProperties画面2
"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]をクリック、あるいは
  シミュレータ起動3aの赤枠ツールアイコンをクリックします。

CPICにプログラムが書きこまれた後にPICが動作を開始します。
  ブレークポイントを設置していればそこで停止しますが、なければRUN状態です、
  一時停止の[Pause]ボタンをクリックすれば一旦止まるでしょう。

D後は[シミュレータ基本編]と操作は同じです、バグを潰しましょう。

《ブレークポイントについて》

デバッグ(MPLAB1)  左図は、MPLAB Xの左側パネルの[Dashboard]タブ内の
 表示です。
 "Debug Resources"の所で"Free:3"と有りますが
 これはブレークポイントをMAX3個まで設置可能と言う事です。
 (因みに、PICにより個数は変わりますよ)
 (この個数が0でないならデバッグ可能と言う事ですね)

 [Dashboard]タブの表示方法はここを見ましょう。

デバッグ(MPLAB1)  この様に実際にデバッグを行うとブレークポイントと
 停止した場所がズレる事が有ります。
 99行でなく100行目で停止していて、
 99行も実行されている様です。 *1)




日本語マニュアル
MPLABR X IDE(V1.50) ユーザガイド
PICkit? 3 MPLABR X IDE 用インサーキット デバッガ/プログラマ ユーザガイド



記事一部追記(*2) 2016/12/28
追記(*1) 2015/03/05


【きむ茶工房ガレージハウス】
Copyright (C) 2006-2016 Shigehiro Kimura All Rights Reserved.