LCDグラフィック・ディスプレイモジュール(液晶表示器)TG12864B-02WWBVでリード・モディファイ・ライトをするとドットがずれた位置に表示されてしまう問題の解決方法です。
それは、、、
ダミーリードを噛ます、です。
LCD driver LSIであるS6B0108のデータシートにはこの事が確りと書かれている。
秋月電子通商からダウンロードした資料(TG12864B-02WWBVEN_V1.1.pdf)には結構間違いが多いのが原因で手間取った。
資料そのものは「Vatronix Holdings Limited」が作成したもののようだが、S6B0108をほぼ丸写しでありながら肝心なところを端折った上にRSとR/Wを取り違えていたりする。
当初は、Set Address (Y Address) の設定が反映されないと思い、PICのポート設定ばかりをいじくりまわしていた。
と言うのも、R/WとRESETを割り当てたPINが無反応に悩まされていたから。
原因は、「MPLAB X IDE」の「MPLAB® Code Configurator」に与えられた設定データにミスがあるようで、「Use OSCO/CLKO as CLKO(FOSC/2)」のチェックを外すとCLOCKが出力されてしまい、さらに力セカンダリ オシレータが有効化されて入力に固定化されたPINに、R/WとRESETを割り当てていた所為だった。
ピン配置図とは対応が取れているが、実機とは真偽が逆になっているようで、今回は入力に固定だからよかったが、出力だったらデバイスの損傷に繋がるので早く修正してもらいたいものだ。
バージョンアップすれば改善されるかと思ったが、まだ改善されていないようである。
しかも今回の「MPLAB® Code Configurator v3」は設定を引き継がないようで、最初から設定し直すことになったので注意を!
PIC24FV32KA302
MPLAB(c) Code Configurator – v3.0.5
XC16 1.26
MPLAB X 3.26
斜線は、x座標とy座標を取り違えていないかの確認用。
円は、自作の平方根を求めるルーチンの確認用。
紫は、照明の映り込みを防ぐために角度を付けた所為で、実際には綺麗なブルーです。
中央の色むらは、保護フィルムを剥がしていないから。
平方ルーチンを強制的に0にしてみた。
水平に1本線が入るだけのはずだが、明らかにおかしい!
策を講じて、めでたく完了。
結論:
資料はしっかり集めましょう!