ikkei blog

電子工作やパズルのブログです。主にLEDを使った電子工作をやっています。

組込みマイコンデバッグの小ワザ その2

2012年08月03日 02時42分00秒 | 組み込みソフト
組込みマイコンのデバッグには、もちろんデバッガを使用します。
でも、いつでもデバッガが使えるとは限りません。
個人の場合は、デバッガを用意することすら大変です。

そう言う場合、ちょっとした事でデバッグの助けになる小ワザを紹介します。

前回はマイコンの余っているポートにLEDと抵抗を付けておくだけと言うベタな小ワザを紹介しました。
しかし、基板がもう出来上がっていて、今さらLEDなんか付けられないよ。
とか、余ってるポートなんか無いんだよ。
と突っ込んだ人も多かったと思います。

そう言う場合は、スイッチを接続している端子を使います。
ここにオシロのプローブを当てる訳です。

スイッチまで配線が引き出されているので、空き端子より当て易いかも知れません。

え?
入力端子でしょ?
スイッチが付いてるんだぜ?

などと、疑問に思った方は次のコードを見て下さい。

つまり、スイッチの入力ポートにオープンドレインとして出力する訳です。

ポートの入力は常に行っている訳ではないので、入力していない時にデータ出力
してやれば、内部状態が分かると言う事です。

実際の例を見てみましょう。

これは、メインループをタイマで7分割してタイマ割り込み毎に"L"を出力しています。
黄色の信号はメインループ毎にパルスが出るように空き端子を利用して出しています。
最後のタイムスロットに重い処理があるので、その処理時間を見るために
処理の最初に"L"を出し、終わりに"H"を出しています。

さらに、他のタイムスロットにビットを割り当ててステータスを出しています。

このように、時分割で数ビット出力することもできます。

ただし、本当にスイッチの入力をするタイミングの前に
ポートを入力に設定しておくのを忘れないようにしなければいけません。
入力の直前では、スイッチの信号が安定していないので、少し前に行います。
上の例では重い処理の前にスイッチの入力をしています。

このやり方の処理自体は軽いので、そのまま量産しても大丈夫でしょう。
ただ、このやり方の欠点は、
スイッチをオンすると、デバッグ情報が見えなくなってしまうことです。

そう言う場合は、あらかじめ入力ポートに普段から直列に抵抗を入れるように
しておくと良いでしょう。

この場合は抵抗にプローブを当てれば良いですね。
プログラムもこのように簡単に、普通に出力すれば良いのです。


もし、この方法がうまく適用できないとしたら、
プログラムの構造に問題が有るかも知れません。
スイッチの判断のたびに入力ポートを読んでいませんか?

以前にも書きましたが、組込みソフトの基本は
「メインループの周期は一定とし、スイッチ入力は1ヶ所で行う」
です。
これを守っていればこの小ワザも容易に適用することが出来るのです。

組込みソフトの基本構造