ソフトウェアのデバッグ方法はいろいろあると思いますが、今回私が行った方法を以下に記載します。 今回のソフトデバッグではステップ動作による方法とブレークポイントによる方法で行いました。 デバッグはMPLABを使って行います。画面には以下のウインドウを表示しておきます。
SFR ( Special Function Register ) File Registers EEPROM Window
画面が広い場合は全てのウインドウを表示しておいても良いのですが、そうでない場合には必要な画面のみを表示します。各ウインドウの表示内容は閉じていても更新されています。特に内容が変化した部分は赤字で表示されますが、その内容はウインドウを閉じていても更新されているので、必要なときにウインドウを開けば更新内容を確認することができます。 でも、最低限アッセンブルリストは常時表示しておいた方が良いです。 初期化処理のデバッグ リセット
アッセンブルリストのPC=0000の行に黒いバーが付きます。 ステップ動作による確認
以上で初期化処理のデバッグが終了しました。 LEDスクリーン処理のデバッグ 初期化処理の終了後、プログラムカウンタは0014hになります。ここからLEDへの表示制御処理になります。 ステップ動作による確認
通常は上記の確認の最中にタイマー割り込みが発生することはないと思いますが、処理が長いと途中で割り込みが発生するかもしれません。 その場合、プログラムの実行番地が0004hになります。 タイマー割り込み処理のデバッグ
ブレークポイントの設定
以上の操作でブレークポイントが設定されました。 ブレークポイントまで処理進めるのには ボタンをクリックします。 Debug → Run → Run でもできます。
表示される戻り番地は割り込みが発生するタイミングで変わります。ですから、同じ番地になるとは限りません。 通常は毎回違う番地になります。 STACKウインドウは Window → Stack で表示させることができます。
LEDスクリーンデータ変更処理のデバッグ
他にブレークポイントを設定してある場合には、それらを解除しておきます。そうしないと、あちこちで処理が止まり、チェックしづらいです。 今回の場合にはブレークポイントは0037hです。以下、プログラムカウンターが0037hになった条件です。 ステップ動作による確認
ブレークポイントの設定
ブレークポイントまで処理進めるのには ボタンをクリックします。 Debug → Run → Run でもできます。 ステップ動作による確認
以上でLEDスクリーンテーブルの基本動作の確認がされました。 EEPROMデータの終了確認を行う前に、LEDスクリーンテーブルが割り込み周期毎に変化するかどうかを確認します。 ブレークポイントの設定
ボタンをクリックする度に内容が 1Fh側から 10h側へと変化することを確認します。
最後にEEPROMのデータが末尾になったときの動作を確認します。 ブレークポイントの設定
ブレークポイントまで処理進めるのには ボタンをクリックします。 Debug → Run → Run でもできます。 EEPROMに書き込まれているデータが多い場合にはブレークポイントに達するまで多少時間がかかります。 ステップ動作による確認
以上でデバッグが終了しました。
|