- 運営しているクリエイター
2020年4月の記事一覧
micro:bit中級者編〜I2CでLCDを制御する(19)
前回は、2行表示モードにして、1行目に"0123"と表示させました。これからこのLCDではどんなことができるのかを確認して行きます。
まず初めに試したのが、2行を使って1文字を縦長に表示させるモード。
もう一つはカーソル表示(2行モードで、"0123"の右の"_"がそれ)
これらは序の口として、スクロール表示とか2行にわたる表示などがどうしたらできるのかがまだわかっていません。内部メモリと表
micro:bit中級者編〜I2CでLCDを制御する(17)
ようやく光明が見えてきました。しかしこの説明書わかりにくいですな。
===
Instruction Descriptionの説明にあるRS, R/Wについてわかったこと。
・R/WはWrite固定。Readはできない。
・RSはI2C I/Fのcontrol byteにて指定する。コマンドはRS=0、データはRS=1
※ついでにcontrol byteのMSBであるCoについて、Co=1は次
micro:bit中級者編〜I2CでLCDを制御する(16)
前回の続きです。せっかくconstantが実例として書かれているのでまずはこれを前提にします。
===
function set #38H ; 8bit, N=1, 5*7dotとあるが、function setの説明を見るに最後は5*8dotのようである。こういうちょっとした間違いが信頼性を落とすのよね。
function set #39H ; ここでIS=1,つまりextension inst
micro:bit中級者編〜I2CでLCDを制御する(15)
さすがに三日連続で休むわけにはいかないので頑張って書きます。
==
Instruction tableは"Extension mode"を見ればいいことがわかったところで、初期化のフローを見直してみます。
出てくるinstructionは
Function set
Internal OSC frequency
Contrast set
Power/ICON/Contrast control
micro:bit中級者編〜I2CでLCDを制御する(14)
昨日の間違いの訂正。"EXT"はVSS(つまり"0")に接続され、Instruction tableは"Extension mode"で動いていると見るべきだ、との結論に至りました。
下の3つの表で、下2つを使うのが"Extension mode"、使わないのが"Normal mode"と言うことらしいです。Normal modeだと初期化のフローチャートに書かれているinstructionがな
micro:bit中級者編〜I2CでLCDを制御する(13)
プログラミング始めようとST7032のデータシートを読み込んでいるのですが、例によって不明瞭な点が多くて困っています。
メーカの技術者だった頃はメーカかその代理店を呼んで(もしくは訪問して)詳しく聞けばいいわけですが、今の状況、立場で大量購入することなど夢のまた夢、問い合わせてまともな回答が得られるとは到底考えられない以上、ある程度推測で仕事を進めねばなりません。
今困っているのは、ST703
micro:bit中級者編〜I2CでLCDを制御する(12)
前回のフローの中で、アクション毎に待ち時間を入れる必要があるのに気づかれましたか?26.3usとか200msとか書かれてますよね。
経験上、こういうタイミング規定が一番トラブルの元なのですよ。得てして組み込みソフト以外のプログラマーって実時間の感覚ないですから。自分の書いたプログラムの1ステップがどのくらいの時間かかるか意識しながら書いている人はほとんどいないと思います。
その点、組み込みソフ
micro:bit中級者編〜I2CでLCDを制御する(11)
前回RESET問題は解決したので回路について後顧の憂いは無くなりました。動かなかったらソフトウェアのせい、と断言できます(のはず)。
地味ですが、こうやって一個一個自信を持って進めないと、思ったように動かなかった時にどこまで遡ればいいのかわからないので効率が悪いと言うかストレスなんですよね。
さて、一歩進めます。例によってデータシートが読みにくいですが、経験上、この手のデバイスは「初期化」と「
micro:bit中級者編〜I2CでLCDを制御する(10)
RESET信号の件。あっさり解決しました。データシートによれば
===
Only if the power on reset used, the XRESET pin must be fixed to VDD.
===
とあります。よって電源に接続して終了。
ここまで
micro:bit中級者編〜I2CでLCDを制御する(9)
当初から気になっていることがあるので書き留めておきます。
VDD,GND,SDA,SCLはそれぞれI2Cインタフェースそのものですが、RESETってどう処理したらいいんですかね??
今のところは開放したままにしてますが、データシートを読み込まないと正しくはどうしたらいいんだか。
micro:bitにはこう繋げ、みたいにバッチリ書いてない汎用部品を使うときはこう言うところが厄介なんですよ。
micro:bit中級者編〜I2CでLCDを制御する(8)
なんですぐ動かさないんだ?と思う方は多いと思います。本人が一番動かしたいと思っています。でもそう簡単じゃないんですよ。まずこの分かりにくいデータシートを読み解くところからやらないと。運よくたまたま動いても、何らかの条件のとき動かなくなったらお手上げになるんですよ。
===
まずは先日アップしたデータシートをざっと眺めてみます。
これは発注したLCDモジュールと基板のセットの秋月電子オリジナル
micro:bit中級者編〜I2CでLCDを制御する(7)
資料を読み始めました。
手強いですな。こういう資料をわかりやすく書く、というところに需要がありそうな。動くまで少々お時間をいただきます。
ここまで