Aitendo M6959 + 秋月I2C LCD その5
昨夜出張から戻りましたので、少し改良しました。
まずハードの方で、電池が減ってくるとADCの読み取り値が変動してしまう現象が有り、それに対処しました。この現象はお恥ずかしい話で、PIC内蔵ADCのリファレンス電圧をVCCにしていたのが原因で、電池駆動なんだから変動してあたりまえでした。
対応として、M6959モジュールのVREF−PをPICのVREFに入れるようにしました。しかしVREFはTUNE電圧観測用にAN1として使っていたので、そちらをAN2にシフト。さらにAN2のピンをTUNED信号の観測用にGP2としてに使っていたので。。。もう入力の空きがなかったのでTUNED信号は抵抗を介してSDAに使っているGP4に入れてしまいました。
修正した回路図は以下の通りです。
(2014/01/19PM6 :回路図間違いを修正しました。)
上のIOシフト以外に、LED−KをGNDに繋いでいます。最初はここを繋がないでLED−AをPICに繋いでいたのですが、なぜかそれだとVRによるTUNEが効かなくなり、ここを繋ぐとそれが解消することが分かったのでこうしています。理由はわかっていません。
GP4については、通常は出力モードにしてSDAとして使っていますが、TUNED信号状態を読むときに入力とします。
SDAはI2CプロトコルのACKタイミングでも入力としてM6959が応答を返しますので、そこでTUNED信号とかちあってしまいますが、元々ACK応答を見ていないので、まあいいや、ということにしてしまいました。
なお、もうひとつあいている入力専用ピンGP2をTUNED観測に使おうかとも思ったのですが、ここはリセットと兼ねていて、リセット使用をオフにしてもPICKITとかち合うためプログラム時用の切り替えスイッチをつける方法しか思い浮かばずに断念しました。
長くなりますのでこの改修に対応したソフトは記事を分けます。
それではまたです。
コメント