PICマイコンでデバッグしてみる
前回の「PICマイコンでシリアル出力」でも予告したどおり、ようやくデバッグまでたどりつく。とは言っても、基本のみ。でもこれが大事。
環境
初めてのPICマイコンで用いたPIC18F57Q43 Curiosity Nanoボードおよびソフトウェア開発環境MPLAB X IDE。
ソースコード
ボード内にあるボタンが押されると、押された回数(count)だけ、ボード内のLEDの点滅を繰り返すもの。ボタン及びLEDのピンアサインについては、初めてのPICマイコンを参照されたし。また、それぞれのPINのに関するマクロがあったため、今回はそれらを使って、ON/OFFのセットや状態取得を行っている。下記コードを見れば、自明であろう。
#include "mcc_generated_files/mcc.h"
void main(void)
{
int count = 0, gauge = 0;
SYSTEM_Initialize();
IO_RF3_SetHigh(); // off
while (1)
{
while (!IO_RB4_GetValue()) {
gauge++;
}
if (gauge > 1000) { // To avoid button chattering
count++;
printf("Pushed Count = %d\r\n", count);
for (int i = 0; i < count; i++) {
IO_RF3_SetLow(); // on
__delay_ms(200);
IO_RF3_SetHigh(); // off
__delay_ms(200);
}
}
gauge = 0;
__delay_ms(10);
}
}
デバッグ
MPLAB X IDEでの設定およびデバッグ実行の説明である。
ブレークポインタ設定
ソースコード上でブレークポインタを設定したいところ(ここでは17行目)の行の数値「17」をクリックする。下記はクリック前。
クリック後には、下記のように変わり、ブレークポインタが設定されていることがわかる。
デバッグ実行
Debugメニューから、「Debug Main Project」を選択して、デバッグ開始。
ブレークポインタで止まる
ボタン(後述Continueなど)を押して、ブレークポインタで止まると、その行が緑色に変わる。また、Teratermを用いて、シリアル出力した結果も表示する。変数「count」はボタンを押した回数。期待どおり。なお、赤枠内の「Variables」をクリックすると、変数の状態(値)を表示する。
再度動作させるには、Debugメニューの下記赤枠内を選択する。
ここでは、ほとんど「Continue」を使った。
ブレークポインタで2回止まった後、動作(Continue)中。
再度ボタンを押す。
動作中、ブレークポインタ設定行は赤となる。
ブレークポインタで止まる(3回目)
また、ボタンを押す。3回目である。ここで、変数「count」の値をわざと変更する(赤枠をクリックする)。
すると、下記のような編集可能なボックスが表示されるので、ここでは「count」の値を「7」に変更する。
OKをクリックすると、
となる。青枠内の上記数値が「7」になっている。ここで、Debug Menuで「Continue」すると、
シリアル出力でも、「count」が「7」に変更されていることがわかる。(結果として、LEDの点滅が7回行われる。)
ブレークポインタで止まる(4回目)
再度、ボタンを押す。4回目であるが、さきほど「Count」の値を「7」に変更したので、インクリメントされ、今回は「8」となる。
ブレークポインタの状態
ブレークポインタが設定されている行で右クリックすると、下記が表示される。
ブレークポインタの有効化や無効化などが可能である。
終わりに
とりあえず、初めてのPIC利用の初期の目的は達成。