オシロだけで挑む!ダメ出し マイコン基板の間違い探し

先輩に怒られ寸前?新人救済企画
迷宮入りし
た君…
答えが見つ
かるかも
電子回路に罪はありません…
悪いのは 100 %あなたです
オシロだけで挑む!ダメ出し
マイコン基板の間違い探し
後編 割り込みのデバッグや内部状態のモニタ
割り込み 1 の要因
石井 聡
Satoru Ishii
割り込み 2 の要因
XOR 1
割り込み 1 のフラグに使うI /Oポート
(出力)
最初と最後に1回
ずつポートをXOR
するコードを追加
割り込み 1
のハンドラ
オシロスコープ
のトリガ
XOR 2
XOR 1
割り込み 2
のハンドラ
割り込み 1 の処理終了
割り込み 1 処理中に割り込み 2の
処理に入ったとき“H”になる
割り込み 2 のフラグに使うI /Oポート
(出力)
それぞれ
Lレベルで初期化
しておくニャ!
XOR 2
割り込み 2 の処理終了
図 1 多重割り込みの発生はオシロスコープで確認できる
プログラムでそれぞれの割り込み処理中のフラグをポートに出力させておく.両方のフラグが立ったら多重処理中だと分かる
組み込みマイコン・システムのソフトウェアも,オ
シロスコープなどの測定器をうまく併用すると,非常
に効率よく開発やデバッグできます.
開発環境リソースが乏しくなりがちな,ICE なしで
行う小規模のワンチップ・マイコンのデバッグなどに
威力を発揮するでしょう.
プログラム・ソースやデバッガの画面ばかりを注視
するのではなく,柔軟な思考で測定器を開発/デバッ
グに活用してみてください.
割り込み動作のデバッグ術
● 意外と悩む割り込みのデバッグ手法
「割り込み」はマイコン・システムで多用されます.
しかしデバッグが難しく,さらに ICE などを使っても
「クリアに簡単にデバッグできる」というものでもな
く,便利だけど取り扱いが注意な機能です.特にここ
で示す「多重割り込み」や「割り込み応答時間」,「割
2015 年 1 月号
り込み処理時間」などは,実時間システムとして考え
てみても,評価も難しいものです.
● 想定外の多重割り込みの発生を見つける
割り込みにより動作がおかしくなるバグは,結構発
生します.割り込みが想定外に多重に発生し,より動
作が複雑になることで,デバッグを困難にしているこ
ともあるかと思います.
前回にも示した「I/O ポート XOR 技」を使えば,
多重割り込みの発生状態も観測できます.
▶プログラムでごく短時間のパルスを出力させてオシ
ロスコープで確認する技「I/O ポート XOR」
空いている I/O ポートをフラグ的に利用し,プログ
ラムの該当部分がきちんと実行されているかを確認す
るのが I/O ポート XOR 技です.
たとえば PORT_A というアドレスのビット 0 を出
力にして,これをフラグ端子として活用します.割り
込みルーチンには次のようなコードを書きます
(ビッ
145