« WinAVRを動かす | トップページ | 温度計測でのお粗末 »

2008年8月21日 (木)

みんなお前が悪い

 今度は割り込みルーチンが動かず弱った。ロジックがお粗末だったのは昨日の時点でわかっていて、真理値表を作ってきれいな形にした。要はスイッチの押し下げと、開放の2つしか状態は無いのだから、フラグを2つも使う必要が無いのだ。

 それでもプログラムは気まぐれな動きをする。時々と言うのが一番始末が悪い。ハードを疑って、というのもこのあいだは割り込みピンをプルアップしないで動かなかったこともあるので、Vccといわれる電池の電圧とか電流を調べたが問題ない。

 銀行とドンキの買い物につき合って珍しく時間をあけてAVRstudioを立ち上げる。昨夜は少しデバッガーを調べてgccのシンボルデバッグが出来るのに感心して「これなら割り込みさえシミュレートできれば相当できるな」と思っていたのだが、何のことはない、解決は別のところにあった。

 割り込みPINの入力を確認するために、ポートアドレスと入力PINのANDをかけているのだが、ポートアドレスの表記が勘違いであった。PB6とは右から7番目(0から始まるので)のビットのことで、2進表示なら 01000000だ。しかし、PB6そのものは、単なる0x06に置き換わる。つまり、00000110でこのピンに対して入力を聞いていたのだ。

 わかってしまえば、単純なミスだ。ビット演算は慣れていないのでこういうミスがでる。判明するまで、機械や電池を疑って申し訳ないことをした。全部俺が悪かった。負け惜しみになるが、時々動いたというのはどういうことなんだろう。
(11/1/2007)

|

« WinAVRを動かす | トップページ | 温度計測でのお粗末 »

AVR」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1089557/23143709

この記事へのトラックバック一覧です: みんなお前が悪い:

« WinAVRを動かす | トップページ | 温度計測でのお粗末 »