blochの日記

自虐ネタ以外のぐちは書かないようにしましょう

埋蔵金で買ったオシロ2

とりあえず、Average完了を待つことは出来た。以下、分かったこと。

  1. テクトロと違って、現時点でのアベレージ済回数を知るコマンド(正確にはクエリ)は無い
  2. Digitizeコマンドを送ると、アベレージ完了までだんまりになる
  3. Digitizeコマンドの直後に、*OPCを送ると、 *ESRレジスタ(Standard Event StatusRegister)のビット1(operation complete bit)をセットしてくれる。
  4. プログラミングガイドのmyScope.IO.ReadSTBは、VISAの「viReadSTB」と言うコマンドに相当(インプリメントしておくこと)
  5. STB(ステータスバイト)を読む専用コマンドviReadSTBは、Digitizing中でも有効(と言うかこれしかない)
  6. STBのビット5(=$20=32)は、*ESRレジスタの異常を検知して1に変化する
  7. *ESRレジスタのビット0(=$01)は、operation completeを検知(ビット1〜7は他のエラー等を検知)
  8. *ESRレジスタは読み取り専用。ビット0をイネーブルにするには、専用コマンド*opcが必須。
    • 他のビット(1〜7)をイネーブルにすることはないようだ。
  9. *ESEレジスタの各ビットを0にすると、上の*ESRレジスタの反応をマスクしてくれる。
    • 逆に、operation completeだけを検知したければ、「*ESE 1」を打っておけばよい。これが名前(Standard Event Status Enable)の由来

まとめると、
「*eseの値をセーブ、*eseに1をセット、digitizeを打つ、*opcを打つ、stbのビット5を監視、ビットが立ったら*eseの値を戻して終了」
と言うことになる。
(参考文献 Keysight InfiniiVision 2000 X-Series Oscilloscopes Programmer's Guide)
次は、データの転送。