QY20の換装用液晶の開発。前回で、QY20からのデータ取得と、交換液晶の表示ロジックが出来上がったので、あとは合体させて、細かな調整のフェーズに入るはずでした。
ほとんど一日費やして、分かったことは、2つ。
- QY20からの制御信号とデータ信号の同期がとてもシビアなこと。
- PICOのCコンパイラが信用できないこと。
1.の同期とは、FLMのフレーム信号(垂直同期)は15msごと、CP1のライン信号(水平同期)は、約220μsごと。そして、CP2のピクセル同期信号は、410ns(2.4MHz)の周期で信号が来ます。FLM信号をC割り込み、CP1信号をPIO割り込み、CP2信号と同期しつつ、ビットシフトしつつ、データ取得します。どこの同期が合っていないのか、プログラム処理で、ズレてしまっていします。
取得したデータをビットマップ化するとこんな感じ。
元画像は、こんな感じ(この液晶も1ライン切れている)そもそも、1ラインは128dotsデータなのに、384dots分のデータが来ているので、元データの画像化構成を間違えている可能性もあります。
2.のコンパイラの問題とは、条件ループ処理での条件パラメータを、外部割込みで変更させるのですが、割込みでパラメータが変更しても、条件判断が変わらない、すなわち、条件判断部ではデータをコピーしているかも。また、変数に代入直後に、その変数にアクセスしても代入値を見ていない可能性、間にprintfを入れると、正常に動くという、不思議な現象。
この段階にきて、道のりは長そうです。