« Tiny用のソフトI2Cマスター | トップページ | Mega168のUART »

2008年8月24日 (日)

オプティマイズのロジアナ

ロジックアナライザを衝動買い(12/27/07)
 1万円程度で手に入るロジックアナライザ(ロジアナ)は今まで調べていたオプティマイズ社のカメレオンUSBを使ったものが一番良さそうなので、というよりこの破格の安さとそこそこの性能はこれしかないことがわかったので、とうとう事務所で注文してしまった。最近は銀行振り込みもオンラインであっという間に出来る。明日届く予定だ。

 キットはTQFPの半田付けに自信がないのと、不確定要素をなるべく減らしたいため(測定器動作の心配をデバッグ中にしたくない)、プラス\3500の製作代行を付ける。それでも全部で\13,000。これ以外のロジアナはPCを使ったやつでも5万、中古で10万、ハードの新品はいくら安くても20万近くするのだ。

ロジアナがあれば、UARTから始まる通信インタフェースの解析には無敵になる。USBにどうせこれから行くが、これがあるのとないのでは目が見えるか見えないかぐらいの差がある。次の目標はUSBよりEtherNetだ。ネットワークを使ったリモートスイッチを考えている。このときにも欠かせない。

温度ロガーの方は、今日、ケースの上蓋の穴あけを終わった。スイッチが少し奥になってしまったが、仕上げはまずまず。プラスチックなのでつい削りすぎてしまう。もう少し上等なやすりを手に入れる必要があるようだ。Ac290821

 昨日は、温度センサー(LM35D)が3V以下で動作を停止し青くなったが(9Vバッテリか、DCコンバータが必要)、発想の転換で、RTCに予定していたボタン電池(3V)をこれに切り替え、事なきを得た。RTCは20μAしか消費しないので、単三だけで何年も持つ。点けっ放しでも大丈夫だろう。最近は数ファラッドあるコンデンサーが安くで手に入るのでこれでバックアップする予定だ。
 10月以来、猛進してきた温度ロガーの道は、ここに来て最終ステージに辿りついた。あとは、RTCを組み込んで当初の計画は完了する。

ことしもあと2日(12/30/07)
 2007年もあと2日を残すばかりとなった。AVRプロジェクトは発足2ヶ月余りで当面の目標、RTC(リアルタイムクロック)付の温度ロガーが完成し、一段落した。実機が3Vバッテリーなのでスーパーキャパシタ(0.1F)がどれだけバックアップしてくれるか未知数だが、昨日のブレッドボード(4.5V)では4時間以上動いていた。電池の交換くらいの時間は大丈夫だろう。

 I2Cのテストルーチンをこれまでの温度ロガーに組み込む作業は簡単に終了した。RTCの組み込みが一番大変だった。計画的に位置を決めてあったのだが、やはり実際に配線してみると、たくさん不都合が出る。これを回避するレイアウトを考えるのが、電子工作のもうひとつの楽しみなのだが、少しスペースが小さすぎた。

 最後の不具合がスーパーキャパシタの背と上蓋との干渉である。これは発想の転換で、台座のビス位置のスペーサーを2ミリほど削って何とか納めた。A3041176

 いや、それにしても、このはまりようはどうしたことだろう。おとといからのロジアナが動いたときは本当に感動した。これまで雑誌や参考書で見せられてきたタイミングチャートが簡単に画面に表示される。しかも自分の作った機器のチャートだ。この手の測定器をいじるのは、大学の特別演習で大崎のソニーの工場で使ったテクトロニクスのシンクロスコープの時以来である。40年ぶりだろうか。

 UARTとI2C(TWI)のデータのやりとりを記録した。昨夜は寝るのも忘れて、送信側と受信側のデータを表示して悦にいっていた。これでイーサネットとMMCの組み込みに挑戦できる。

新春もAVRであける(1/3/08)
 温度ロガーのしつこいバグ(データが一巡すると化ける)の原因をとうとう発見した。これが2008年の最初の収穫である。Tiny861にしてEEPROMに余裕が出来、条件が揃わなかったのだが、このあいだ再現し、頭を抱えていた。見つかってしまえば何のことはない、至極当たり前の不具合なのだが、思い込みというのは恐ろしい。お正月休みを利用して、この前使ったテストプログラムのバッファサイズを縮め実際に温度を記録してバグを確認した。そう、接触不良でも電池の消耗でもなかった。リングバッファは外からは連続したデータエリアに見えるので、遇数で書いていけば偶数で取り出せるはずだと思い込んでいた。しかし、消されていくデータはデータサイズが奇数だとずれる。

 こう書けば何故これが今までわからなかったのか不思議なくらいだが、バグと言うのはこういうものである。これを直し(単にサイズを偶数にしただけ)、ついでに日付が温度にみなされないよう工夫してRTC付温度ロガーは、ほぼ完全となった。スイッチを入れるだけで測定開始の月日時分を記録し、5分間隔で連続20時間、温度を測定できる。Ws000001

 大晦日にテストしたLCDの電源をON/OFFするしかけ(これが久しぶりのトランジスタを使ったドライバーでとても簡単に動く)を組み込んだLCD表示プログラムは、箱根駅伝を見た後、着手し2日の夜に完成した。PCからのコマンドで、LCDが点いたり消えたり、キャラクタを表示したり出来る。子供だましのしかけ(もちろんこれはテストプログラム)だが、無性に嬉しい。この面白さは何なのだろう。

ロジアナは強力だが(1/5/08)
 くだらないことでつまづいている。退役したTiny26の余生をシリアルLCDのエンジンで有意義にしてやろうと、このあいだからやっているLCDプログラムだが、ビジーフラッグを見て高速表示する本格的なプログラムにしようとしてこれが動かない。

 こういうときこそ活躍するのがロジアナである。早速、手作り のプローブをブレッドボードに立て測定する。出た出た。あるところで無限ループに入っているのが一目瞭然である。待ち時間なども簡単に実測できる。素晴らしい。しかし、動かないのである。A3141230

 ループは抜けたが、肝腎の表示が出ない。ロジアナはピンの状況は正確に伝えるけれどデータの中身は見えない。結局、UARTを通してデータの中身を吐き出させて始めてバグの正体が見えた。これもここに書くのも恥ずかしいお馬鹿なミス。思い込みと言うのは本当に恐ろしい。ビットが一つしか立たないデータだから1だとばかり思い込み、1で比較していたというお粗末である(最上位ビットなので128)。

  これで直った(つまり待たなA3141228_2いで先に行っていたのを止めた)と思ったが、意外や意外これでも動かない。ロジアナではそれらしく、何回かビジーを調べて次に進んでいる様子が記録されているのにガンとしてLCDは文字を表示しない。

 まあ、表示そのものに数十msかかるLCDを高速化することなど無意味なのだが、やりだしたら、とことんやらないと気のすまない性格である。今までのenableの期間が短すぎるので少し待ちをいれたり(ロジアナで気になっていた)、ビジー待ちの場所を替えたりしたが、結局時間切れであきらめた。

 ロジアナは強力だが、これだけですべてが解決するわけではないことを学んだ。しかし、これがなければ、データはenableを上げたときにしか読めないということを知らずに悩んだことだろう。書き出しは向こうがそのときに読むわけだから、あとで良いわけである。

|

« Tiny用のソフトI2Cマスター | トップページ | Mega168のUART »

電子工作」カテゴリの記事

コメント

コメントを書く



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


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



トラックバック


この記事へのトラックバック一覧です: オプティマイズのロジアナ:

« Tiny用のソフトI2Cマスター | トップページ | Mega168のUART »