Hatena::Groupecrafts

Chuckの電子工作

趣味の電子工作を中心に書いています。音関係工作はg:emusic:id:Chuckどうぞ。


検索エンジンより飛んでこられたかたで、お探しのキーワードが見つからないかたは、↑の検索をご利用ください。

2009-03-02

こんどはLCDが動かない

こんなのばっかり。

I2Cがなんとか動いたので味をしめてI2CからLCD表示するスレーブを作ろうと思いました。おりしも秋月で扱うLCDのサイズ・バリエーションが増えたことだし、いろいろなサイズに対応しよう、と。ゆくゆくはI2Cバス上にこのLCDを置いてセマフォかなんかを設けてマルチマスタでも扱える(上の行はマスタ0、下はマスタ1とか)ようにしようとかPWMで表示の明るさを変えたりできるようにしようとか妄想竹も延びています。

これまでLCDのドライバは書き捨てることが多かったのですが、以前ARM(ADuC7026)にモディファイして使ったProcyonのAVRlibのほうを利用して、コントローラにはATtiny2313(内蔵RCで8MHz動作)を、ポートはPORTDで、とか考えて都合が良いように4bitインターフェース時にポートの下のニブルで使えるように変更してみました。Procyon AVRlibそのままにはLCDの初期化シーケンスがコーディングされていないので、0x30を打って4.1msec待つとか100μsec待つとかのおまじないを入れました(ただしかなり長めの時間を出すテキトーなタイマ)。基本動作はBusy Flagを見る設定で。

ブレッドボードに組み立てて実験。

だがしかし…

ときどきLCDの初期化に失敗します。成功するときちんと動き続けているのですが…

今のところ原因がつかめていません。電源投入後の待ちが足りないのかなぁ。時間を作る部分は自前で作りこむか…


どうしてこういう枯れているところでハマルのだろう…

ChuckChuck2009/03/02 08:56以前作って動いているADuC7026版と比較中。今回のAVR版ではI/Oポートを入力にしたときに同時にプルアップにしている。LCDモジュール側でプルアップしているから要らないんじゃないかな…