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