Darkside(リンクエラー修正しました)

2018年7月13日(金) 21:35

やらかした

 ソフトSPI接続で実績ある液晶に表示できるよう配線を急いで用意し、試す。だが、何も表示されない。そればかりか、データーもクロックも全く出力されない。ソフトで記述しているのに、ずっとLのままだ。いや、使用する3線のうち、RA1は出力されてている。RB8とRB9がLのままだ。
 出力されない2本は、I2Cで使用していた2線である。ここに至り、犯人はI2Cではない可能性が急浮上。

 SPIというよりソフトでしっかり出力制御しているのに、RB8とRB9が反応しない。まずはその理由を探ることにした。
 結論として、PWMが犯人だった。

 PWMの使用は、デバイス・コンフィギュレーション・レジスターで設定する。すなわち、_FPOR である。
 そのため、実行開始後に何もしなくても、PWMは有効になったままである。PWM出力は8本あって、そのうち6本しか使わない。だが、そのままだと残りの2本もPWM用に確保され、一般I/Oとしては使えない。その2本こそが、RB8とRB9である。I2C用の出力ピンでもある。
 そう、設定でRB8とRB9をPWMで「使用しない」ようにしておかねばならなかったのだ。

PWM2CON1bits.PEN1L = 0; // PWM2L1無効
PWM2CON1bits.PEN1H = 0; // PWM2H1無効

 これでRB8とRB9にも出力できるようになり、ソフトSPI液晶に表示成功!
 この手の設定干渉問題はMCCなら簡単に回避できるはずであり、MCC対応が遅れていることは大変なデメリットになっている。
 いずれにしろI2Cで苦労する必要なんか、なかったんだ・・・で済むかと思いきや、かなり不安定。表示更新はしばしば止まるし、dsPIC 自体も止まる。頻繁にリセットボタンが活躍する。
 エネループ4本では液晶電源の電圧不足になっている可能性があるが、それで dsPIC が不安定になるはずはない。電源を共用したせいで、ノイズが載って dsPIC と液晶側PIC の双方に影響しているのではないか?

 PIC16F88 を2つ動作させ、不安定になった経験がある。
 安易に電源ラインを引き回したのは、まずかったかもしれない。使い勝手が悪くなるが、液晶には別電源を用意する方がいい。そう考えて、エネループ6本を独立電源として液晶側に供給。基板にバッテリーケースをハンダ付けし、準備完了。まずは、液晶単体で動かしてみる。もちろん何も表示されないが・・・って表示されているぞ?

 シミのような意味不明なグラフィックが表示されて、アメーバのようにうごめいている。これは?
 パチンと小さな音が鳴って、かすかな煙。やっちまった!
 自作なので分かっていると油断し、キチンと確認せずにハンダ付けしてしまった。そう、極性を逆に取り付けてしまったのだ。かくして、自作SPI液晶は、死んでしまった。

 再びI2Cに戻るしかない。少なくとも、出力が常時Lだった原因は判明した。その問題に関しては解消できているはずだ。

written by higashino [ドリル戦車] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4