« 2008年10月5日 - 2008年10月11日 | トップページ | 2008年10月19日 - 2008年10月25日 »

2008年10月12日 - 2008年10月18日の1件の記事

2008年10月12日 (日)

リズムキャプチャー試作版完成

LCD表示をブレッドボードで(10/9/08)
 音響パルスの測定がほぼ満足できる成績になったので、今までUARTに出していた結果をLCDに表示するコードを追加する。このLCDライブラリはこのあいだビジーフラグを見るようにして高速化した最新版である。R/W線が増えるのがつらいが、早さには替えられない。今度はミリセカンドのオーダーでデータを表示するので、32文字で数msの高速表示が効いてくるはずだ。

 大したプログラムの変更はない。UARTに向けていたxatoiの出力先を追加したLCD関数の方へ切り替え、ヘッダーファイルのピンアサインを変えただけである。むしろ、16字×2行のせまい表示エリアにどうバランス良く、わかりやすく表示するかに頭を捻る。Rhythm_2

 コーディング中に、これまでLEDで表示していた、平均値からの誤差表示を図形的にLCD画面に表示することを思いつき、そのコードもついでに入れる。アスキーアートのようにoやピリオドを点滅させて現在の状態をリアルタイムで表示するようにした。 これでLEDをやめてノイズからも逃げられる。「うーむ、俺は天才ではないか」などと、うそぶきながらコーディングを楽しむ。

 できた。早速動かしてみる。と、またこれが動かない。そんな馬鹿な。このLCDライブラリはこのあいだ完動している。変えたところは何もない。xatoiが選り好みをしているのか。はい、はい。悪いのは私でした。ピンアサインを替えただけではこのLCDライブラリは動かないのだった。

 このあいだADCの入力ピンをノイズを避けてPA0から一番最後(PA7)に移し、LCDのデータラインをひとつづつずらした。 ヘッダーファイルで自由にピンを選べないことはわかっていたが、連続しているので大丈夫と思っていた。しかし、ソースを確認すると、それでも駄目で、きっちりLCD出力の4ビットデータピンはポートのbit4からbit7にないと動かないことがわかる。

 やれやれ、LCDライブラリも改修が必要なのだけど時間がない。ADCピンを戻す方が簡単なのでこちらを替え、とりあえずLCDのピンアサインを連続にして先を急ぐ。いずれこのLCDライブラリもヘッダーファイルの変更だけで動く移植性の高いコードにしてやる必要がある。754rhythm

 LCDに表示がされるようになった。ところが、ADCポートに頻々とノイズが入る。当然、測定は無茶苦茶になる。LCDを加えて起きていることは間違いない。LCDも立派なデジタルディバイスなので派手なノイズを出しているはずだ。これはやっかいなことになってきた。オシロで波形を見てみた。なんと、目一杯の電圧がピンにかかっている。ありゃ、これはノイズではない。ピンに何かのデジタル出力が出ている。LCDのポートADCのポートは同じでPORTAでピンが違うだけだ。

 LCDの処理で、ADCのピンをいじるようなことをしているのだろうか。目を皿のようにしてコードをチェックするがおかしなところはない。そのとき何気なく画面をスクロールした。あーっ、消したはずのLEDを点灯させる制御コードがまだ残っているところを見つけた。馬鹿な話である。現在のADCのピンは、前はLEDを制御していた出力ピンで、ステートメントは全部消したはずだったが、ひとつ残っていた。やれやれ、デバッグは外へ外へ目を向けなさいと、昔、後輩に良く言って聞かせていた教訓を思い出した。お恥ずかしい。

 ブレッドボード上だけれど、リズムキャプチャーの試作版が完成した。文字がブリンクして誤差を表す表示もちゃんと動く。ただ平均の回数を5回にしかとっていないので連続的に正しいところへ戻っていく様子を見せることは難しい。まあ、目安だからこんなものか。それより解決しなければならないことがある。LCDドライバーの位置指定コマンドがうまく動かないときがあり、表示がずれる。

 このコマンドもビジーフラグを見ているのだが、どうも連続してデータが来ると正しいポジションに移らない。このために文字が画面上に残って見苦しい。まだ公開できるレベルにない。こいつを退治したところでソースだけでも公開しよう。

ケースの加工にいそしむ(10/10/08)
 実装するケースは以前、AC電力ロガーにしようと買ってあった、タカチのSW-100(100×65×45)を使うことにしている。LCDを上面につける十分な高さがある。ただ、電源に単3三つを使うので基板が半分以下になり、オペアンプなどのアナログ部が全部はいるか少し心配である。

 このあいだ東急ハンズで買ってあった、「ピラニア糸鋸」でいよいよLCDの窓枠工作に入る。この糸鋸、実演販売で、「この糸鋸の刃は、こーんなに曲げても折れません!」と実演者が大見得を切った途端、「ポキッ」と見事に折れ、みんなが固唾を飲んでどう対応するか見ていたら、「いや、まあこういうこともハハハ」と見事にその場を納めたのが気に入って、つい買ってしまったのだが、刃の断面が円形でどの方向にでも切れるというのが売りである。

 ただ、糸鋸の取り付け金具が長さ1センチ以上あり(11×3mm)、それだけの穴を開けないと、LCD表示フレームのような中空の窓は開けられない。まあ、金属でなく合成樹脂なので気楽に電動ドリルで適当に穴を開けて刃を通し、所定の大きさに切っていく。ピラニアと名づけるだけあって気持ちよく切れる。このあと作る予定のFG(ファンクションジェネレーター)の方はアルミなのでこうはいかないだろうが、楽しみである。

 枠は大雑把に切り抜いてあとはやすりで整形する。LCDの固定ネジの穴あけは緊張する。しかし、ドリルスタンドのお陰で作業はとても楽だ。このドリルスタンドは最初穴あけだけでなく、丸鋸などの切削作業にも使おうと考えていたのだが、ドリルだけの用途でも十分価値がある。特にこういう化粧面での穴あけは失敗が許されないだけにその効果は絶大だ。

 ただ、やすりの整形は気を遣う。ケースの表面に張った養生テープの上に鉛筆で正確に枠を書いてそれを目安に削っていくのだがどうしても製図そのものと現物とは誤差が出ているので、現物が入ったときはだいたい大きく削りすぎてしまっている。今度のLCDのように本体にベゼルが固定されているとケースとの隙間が目立ってしまうが仕方がない。

 スイッチやマイクはまだだが、LCDの表示枠だけ完成した。ありあわせの2ミリの丸ねじ(本番は平底2.5ミリの予定)でLCDを固定し、とりあえず配線してブレッドボードにつけてみる。761rhythm おお、塩梅が良さそうだ。文字も大きく見やすい。スイッチなどの穴あけはLEDブラケットとお揃いの形にするため今度の買い物までおあずけである。

LCDライブラリとアートワーク(10/11/08)

 LCDライブラリを書き直そうと、PCの中を整理していたら、これまでダウンロードしてあったLCD表示ソースコードが4つも出てきた。Webに出回っているソースは、7年前にkusunokiさんが公開されたソースがどうもオリジナルらしく、そこから色々な派生コードが生まれている。

 AVR用でなかったので良く見ていなかったのだが、何と、すんさんのサイトで公開されているMSP430用のLCDライブラリは、ビジーフラグを見て表示をしており、しかもデータビットが不連続でも動くようになっている。それに公開されたのは2年近くも前だ(1/14/07)。AVR用でなかったのでうっかり見落としていた。

 今さらという感じもしないわけではないが、まあ、あれはAVR用ではないし、AVR用として公開しても悪くはないだろうとソースをダウンロードできるようにした。このソースはこのあいだのアドレス指定コマンド(lcd_gotopos())の直後、表示させるとアドレス指定が効かず、次のカーソルに表示してしまうバグは解消してある。どうもビジーフラグはRead/Write処理だけ有効で、ハングせず表示はされるが、正しいRAMアドレスがセットされないようだ。

 公開するソースのもうひとつの売りは、制御ピン、データピンが完全にヘッダーファイルの定義だけで、ポートに関係なく、自由に設定できることである。コード量は元のソースより100バイトほど増えるのが難点と言えば難点だが、ソースをいじる必要がない完全なライブラリとなっているので汎用性は高いと思う。

 さて、本題のリズムキャプチャーは、スイッチの買い物待ちでハード工作が一段落したので、基板のアートワークにとりかかった。懸念したとおり、アナログ回路はCR部品が多く、レイアウトに苦心する。LCDとマイク、スイッチなどは上蓋に固定し、そのあいだを14ピンのピンコネクターで接続する。Tiny861は、アナログ用のVccとGNDがあるので、デジタル部と完全に回路を分割できる。ただアートワークはそれだけ面倒になる。Rhythm

 分離できると言っても今度の電源はUM3×3の共通電源なので、まあ、気休め程度だが、一応、LCDを含めたデジタル部とアナログ部のVccとGNDは電池のコードのところまで分けてレイアウトすることに成功した。出来上がってみるとかなりな集積度だ。掲載した手書きのアートワークは少しインチキがあって、抵抗2つが正規の形をしていない。描き直すのが大変なので実体配線のとき補正する予定だ(こういうのが落とし穴になるのだが)。

ここに自由にポート、ピンを選べるLCDライブラリのソースとヘッダーファイルを置きます。

「New2_LCD.lzh」をダウンロード

| | コメント (2) | トラックバック (0)

« 2008年10月5日 - 2008年10月11日 | トップページ | 2008年10月19日 - 2008年10月25日 »