● 実験テーマ54
「PIC32MX_簡易4CHロジアナの実験ソフト修正日記」
(トリガ開始点から、エッジ描画するようにソフトを修正してみました。)
■ 2014.7.16
・実験テーマ53の、アップが終わってから、次にやることを何にするか、いろいろと頭を巡らせて
いたが、その中に、本テーマ54からは横道に逸れるが、時間軸カーソルを出力して、それをキーで
動かし、トリガ点からの(あるいは、A-B間の)時間を液晶上に表示する実験をしてみよう・・
というのが、あった。
結局、実際に使えるようになるまでは時間が掛りそうなので、保留にしたが、その時のメモ
が残っているので、以下にアップしました。
※ この時、作成した簡単なテストプログラム例です。→ Move_Cursor_QVGA_TEST.c
■ 2014.7.17
・この前の実験テーマ53の、私の簡易プログラムでは、1回目のサンプルで、CH1のエッジセンス
を行い、センスしたら、Buffer[0]に、その時のデータを格納。
但し、ここでは未だ描画はしない。
(TRIG前のデータ収集を省略しているため、1回目から、ロジック状態を判断できず。)
2回目のサンプルでようやくロジック状態の判断が出来るので、そこから描画をスタート
させている。
よって、1回目サンプル時の、エッジ描画は飛ばしている形になっている。
また、時間軸線も、トリガ点から最初の目盛は、1dot分少なくして合うようにしてある。
■ 2014.7.18
・やはり、立上り或いは立下りエッジから表示した方が自然なので、何とかソフトを修正
してみようと思う。
それには、エッジ検知の前に数データサンプルしてデータ収集する必要がある。
この考えが何故か当初は浮かばなかった。
■ 2014.7.19〜 2014.7.20
・エッジ検知の前に50データサンプルするようにしてみた。
この間も、エッジ検知を行いながら、未検知の場合でも、バッファ格納はするようにした。
また、50サンプルしても検知できない場合は、ポインタを0に戻し、見付かるまでエッジセンス
を繰返すことにした。
動作検証には、同期性のある信号が発生できる方が良いと思い、PLD
MASTER基板を使用した。
検証結果は、毎回、エッジ検知描画位置がズレるが、50dot(1目盛)内に入っていることから
50サンプルリトライ動作は、うまく行っているようである。
この時の実験模様を以下にアップしました。
・トリガ点前の、サンプル数を最小の2サンプルにすれば、2dot分のズレに落ち着くのではと思い
そのように修正してみる。
確かに2dot分のズレに落ち着くが、トリガ点のエッジ描画をしない時がある。
描画されない時の動きをよく観察すると、1dot手前にズレて描画されているように見える。
つまり、最初のエッジ描画が、画面から追いやられて見えなくなっている感じだ。
■ 2014.7.23
・自分の頭の中では、毎回画面更新毎に、必ず、最左端ライン上に、トリガ点のエッジ描画がされる
ように記述されていると思っているのだが・・・・
ここで、もう一度、ソースを見直してみた。
見直したら、気が付いた点あり!!
現在、エッジセンスをするに当たっては、CH1の、そのポートビットのみを読込んで、テンポラリ
に記憶させている。
そして、エッジ検知判断ルーチン処理後、4CH分の入力データをバッファに格納している。
この間の時間差が問題と考えられる。
※ つまり、エッジセンスと、4CH入力データのバッファ格納は、同時(1ステップ)でないと
まずい。
そうでないと、エッジセンス時のロジック状態と、バッファ格納時のロジック状態が変化して
しまうことも有り得る(入力信号のエッジ付近で起こり得る)ので修正が必要と考えた。
これを修正したら、毎回画面更新毎に、必ず、最左端ライン上に、トリガ点のエッジ描画が
されるようになった。
ここまで悩んでいたことが解消したので、少しは気が晴れた気分だ。
<最終ソース>
・こちらから、どうぞ→ Easy_4CH_LogAna_TEST.c (修正ソースですが、ファイル名は変えていません)
← 実験テーマ1に戻る TOP PAGEに戻る 実験テーマ55へ →