« 割込み制御ソフトUART | トップページ | Tiny用のソフトI2Cマスター »

2008年8月24日 (日)

標準入出力的EEPROM

仕事先の忘年会で機嫌よく帰宅。酔眼朦朧だが、いとしいTiny26のために地下のオーディオルーム(PCが置いてある)でISPインタフェースの調査をやっている。それにしても急に寒くなった。吐く息が白い。しかし地下は温度は21.8度(温度ロガーによる)で快適だ。EEPROMを標準入出力のような関数で使うプログラムの開発はあっけなく実現した。ただ、最初の不具合が色々なところを修正しているうちに直ってしまったのが少し心残りだ。たったの128バイトしかないEEPROMだけれど、メインプログラムでEEPROMの構造を全く知らなくても、データを自由にアクセスできる。リングバッファーにしてあるので、古いほうから消えていく。
ソースコードはこちらから
「eeprom_test.lzh」をダウンロード

 コードサイズは2K、2048バイトを残すところ8バイト、2040で納まった。LCDはとても入らない。この状況で、次は実装である。事務所が秋葉に近いので空き時間に行こうと狙っていたのだが、あれこれ雑用があって果たせなかった。ケースに入れたり、電池サイズを考えたり、これはこれで工夫の余地のある面白い作業なのだが、残念ながら少し先送りである(電車賃を払ってまで秋葉に行くほどでもない)。3ステートバッファーの仕様とか、AVRのミニカーネルとかWeb上には情報が満載だ。マイコンの次の目標はやはり2足歩行のロボットなのかもしれない。

みなさん御免なさい
 実装用のTiny26版のソフトの仕上げでまたつまづいた。最初の温度が記録されないのである。メモリサイズは数バイトを残すだけなのでテストステートメントが挿入できない。ADコンバーターの部分を色々調べても問題はない。こいつ立ち上がるのに時間がかかるのか、そういえば、前のときも最初の計測はデータが狂っていた。それともメモリサイズが満杯になって、コンパイラーがいんちきなコードを吐いたか、電池がいよいよなくなってきたからか、など考え、資料も調べたが、そんな情報はない。

 家内と久しぶりに高島屋へでかけメガネの更新のついでに秋葉原に寄り、スイッチなどの小物を手に入れ実装に向けては順調なのに、これではTiny861への換装も出来ない。問題点をメモに書き出し、結局、ADCのテストプログラムを別に書いてみることにした。

 これが何と、全く問題なくADCは温度データを最初から出力するではないか。そんな馬鹿な。さらにデータをとってみる。はい、悪いのは私でした。10回測って平均値を出しているのだが、これが11回測っていた。当然10回目はまだ平均値が出ておらず結果は0だ。何回かするとこれまでの計測値が合算されて正常(にみえる)な値が出力されていたというお粗末。ADCさん、コンパイラーさん、電池さん、みんなを疑って御免なさい。悪いのはみんな私でした。

 良い教訓ができた。四の五の考えないで、事実をつめていくことがデバッグの近道ということ。それに注意深く事実を調べること。現象をメモに書き出し、全体を見ることだ。
(12/8)

線路は続くよどこまでも
 昨夜、まるで小学生が出来上がった模型を枕元に置いて寝るように、名刺サイズの実装版を枕元に置いて寝た。いや私は寝室の温度を測るためである。5分おきに温度データを10回測り、EEPROMに記録していく。5分に一回LEDが暗闇で光るのが頼もしい。

 いやいや、これまで色々なことがあった。AVRをやってみようと思ったのが2ヶ月前。あれこれ考えたきた構想が実際に現物として目の前にある。俺もやれば出来るのだという自信がみなぎる。861への換装は思ったほど難しくなかった。何と言ってもメモリサイズは4倍である。余裕のプログラミングが可能だ。

しかも、1.7Vでも動く低電圧版だ。始めうんともすんとも言わないで真っ青になった実装版だが、スイッチの位置間違いか何かで、誤配線も無くすんなり動き始めた。ところが、温度がおかしい。調べてみたら温度センサーの電源電圧は何と4Vからになっている。3Vは規格外だ。電源電圧を上げる負電圧コンバーターなどの対策をWebで探すうち、ふとこれは前にもあった現象だと気がついた。そう、センサー入力ピンをプルアップしていたのだ。

Ac060748これを直して遂に名刺サイズの温度ロガーは95%完成した。残りは上蓋の穴あけを残すのみである。今日、6時間ほどの寝室のデータをターミナルに表示し、Copy&Pasteで、Excelに移してグラフまで描いてみた。「厨房ですよ」ではないが、これで「温度ロガーの出来上がりー」である。

しかし、ドラマはこれで終わらなかった。ブレッドボード上の開発機の具合がおかしいのである。UARTのデータが化ける。昨日の実装機に入れたチップは全く問題ないのに、もうひとつのチップがおかしい。しかし、このチップも実装機に入れると問題なく動く。???である。何もいじっていない。前のTiny26まで持ち出して調べたが原因がわからない。どうもデジタル的なトラブルでなAc140763 く、アナログ的な感じだ。このまえ内蔵CRクロックのTiny26がおかしかったときと現象が同じなのである。発振を疑ってブレッドボード上の不要な配線を取り除いてゆき、殆ど裸になったところで現象は止まった。

 対症療法だがこれで、次のステップに進める。いや線路はどこまでも続いているようである。
(12/13/07)

|

« 割込み制御ソフトUART | トップページ | Tiny用のソフトI2Cマスター »

AVR」カテゴリの記事

コメント

コメントを書く



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


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



トラックバック


この記事へのトラックバック一覧です: 標準入出力的EEPROM:

« 割込み制御ソフトUART | トップページ | Tiny用のソフトI2Cマスター »