nobcha23の日記

PICマイコンやArduinoを使う電子回路遊びを紹介します

i2cスレーブLCD+CSMは両立無理か・・

先日作ったi2cスレーブLCD+キー駆動用のマスターにつなぎ、テストプログラムで組み合わ動作を確認します。・・・・あちゃちゃ、LCD表示が乱れます。アカン。  i2cマスターはストリナ互換LCDに表示し、i2cキーパッドスレーブからキーを読み取るという動作です。読み取ったキーを表示しています。もともとソフトは後閑先生のpicfunサイトにあったi2c接続実験でストリナLCDにテスト表示を出すプログラムです。

原因をつらつら考えるとですね。
I2c用のMSSPとCSMのTMR0,TMR1とで割り込みを使っており、3V電源にて4ビット接続LCDではLCD内蔵コントローラが応答遅いため、ポート上げ下げの周りでディレー関数を多用している。(LCDコントローラは内部クロックで動いているが、クロック発振回路はRC型で電源電圧依存性があるらしい)
カーソル移動処理が遅いし、4ビット2回送るときもタイミングが必要です。
ところが、LCD動作中は割り禁にしており、割り込み取りこぼしがあると思われる。
この件解決には8ビット接続にすることと、LCDコントローラのBUSYポーリングポートも使わないといけないのかなと思っています。

なので、今回実験としてはLCDとCSM両立はあきらめます。




ところで、この基板を使用した第一番目試作プロジェクトでは簡易周波数カウンタ、二番目が基板外側にrtcをつけ制御するRTC-8564NB使用のクロック時計機能試作実験です。三番目がDTMFキーを使うi2c接続テンキー実験でした。詳しくは次のホームページのWHAT'S NEWをご覧ください。三番目は未掲載。CSMはこれから。

http://chitose6thplant.web.fc2.com/

キャパシティブセンシングはトラ技6月号でも取り上げられています。プログラムについて振れられていないのは残念ですが。
http://jr1wfhbbs.at.webry.info/201112/article_1.html
と思ったら、ブログにありました。iCHIROさんの試作に使用されたPIC16F1938のキャパシティブセンシングモジュールとワタシが今回使ったPIC16F1827のキャパシティブセンシングモジュールはちょびっと違うようです。確かに1938の方ではFVRとかで変更でき、その結果として発振周波数が3桁ぐらい違う感じです。こちらだとミディアムで100カウント@5ms:20kHzぐらいなので。まあこういうチップ間での微妙な仕様違いはマイクロチップ社では良く遭遇する事象でありますが。・・・。