みんなお前が悪い
今度は割り込みルーチンが動かず弱った。ロジックがお粗末だったのは昨日の時点でわかっていて、真理値表を作ってきれいな形にした。要はスイッチの押し下げと、開放の2つしか状態は無いのだから、フラグを2つも使う必要が無いのだ。
それでもプログラムは気まぐれな動きをする。時々と言うのが一番始末が悪い。ハードを疑って、というのもこのあいだは割り込みピンをプルアップしないで動かなかったこともあるので、Vccといわれる電池の電圧とか電流を調べたが問題ない。
銀行とドンキの買い物につき合って珍しく時間をあけてAVRstudioを立ち上げる。昨夜は少しデバッガーを調べてgccのシンボルデバッグが出来るのに感心して「これなら割り込みさえシミュレートできれば相当できるな」と思っていたのだが、何のことはない、解決は別のところにあった。
割り込みPINの入力を確認するために、ポートアドレスと入力PINのANDをかけているのだが、ポートアドレスの表記が勘違いであった。PB6とは右から7番目(0から始まるので)のビットのことで、2進表示なら 01000000だ。しかし、PB6そのものは、単なる0x06に置き換わる。つまり、00000110でこのピンに対して入力を聞いていたのだ。
わかってしまえば、単純なミスだ。ビット演算は慣れていないのでこういうミスがでる。判明するまで、機械や電池を疑って申し訳ないことをした。全部俺が悪かった。負け惜しみになるが、時々動いたというのはどういうことなんだろう。
(11/1/2007)
| 固定リンク
「AVR」カテゴリの記事
- ソフトI2Cはクロックストレッチまで手を出してあえなく沈没(2017.09.02)
- オシロのテストどころかソフト開発で大はまり(2017.07.26)
- 超音波方式の人感センサーI2C化と新しいオシロ(2017.06.29)
- motionの動体検知はRaspi3の電源が安定しない(2017.04.16)
- 赤外線学習リモコンはデータ再現で挫折したまま進まず(2016.07.21)
コメント