「ドット液晶 PC-PZ60D を使ってみる」 テストプログラム   2006.09.20 Jaku.

 これは http://www.eonet.ne.jp/~jaku/Drawer/ の「ドット液晶を使ってみる」で
 作成したプログラムです。

 2006.09.16 現在のものです。
 初版(2006.09.09)から、高速サンプリング時の水平ノイズを消したものです。
 7月頃よりなんだか空き時間がほとんど無い毎日が続いていて、なかなか作業が
 進まず、まだBUGが残っていると思われる状態での公開です。 m(_ _)m
 不具合点が発覚した場合、お知らせいただければ可能な限り修正しますので・・・。

 以下、簡単な説明です。(手抜きの説明で申し訳ありません)

1.ソースファイルなど

  この圧縮ファイル(LZH)に含まれているファイルです。

  3694BIT  H    内臓レジスタ(含むI/Oポート)のビット定義です。
  3694MMAP INC  内臓レジスタのアドレス定義です。(アセンブラ用)
  3694MONI INC  簡易モニタのヘッダファイルです。(アセンブラ用)
  3694FORM SRC  型変換の関数です。(アセンブラ)
  3694MONI SRC  簡易モニタです。(アセンブラ)
  3694SIO  SRC  シリアル通信関数です。(アセンブラ)
  3694SUP  SRC  割込ベクタとリセットベクタからの処理です。(アセンブラ)
            最近のコンパイラだとCで書いた方がいいかも?
  3694WAIT SRC  単なる時間待ち:ソフトウェイトです。(アセンブラ)
            ほとんど使っていません。waitmS()だけが欲しかったので。
  ANK8HL   SRC  半角Asciiフォントデータです。(アセンブラ用)
            Cで書いた方がずっとスマートなのですが・・・
  PCPZ60D  SRC  液晶PC-PZ60D用のアセンブラ関数です。(含む割込処理)
  3694CNST INC  アセンブラ用の定数(等)ヘッダです。
  3694CNST H    定数などのヘッダです。
  3694TIM  C    タイマ割込関連の関数です。
  3694TIM  H    タイマ関連のヘッダです。
  3694WAIT H    ソフトタイマ(単なる時間待ち)のヘッダです。
  IODEFINE H    日立製(Hewが作成する)内臓レジスタのアドレス定義です。
  MORSE1   C    モールス出力関数です。
  PCPZ60   C    液晶PC-PZ60D用の関数です。
  PCPZ60sch.pdf  回路図です。(必要最小限の部分のみですが…)
  TEST3694 MOT  コンパイルしたオブジェクトです。
  README   TXT  本ファイルです。

2.リンク

  セクション(CはHewのデフォルト)の割り当ては以下の通りです。
  (割込みベクタは絶対アドレス指定なので割当不要です)

    0x0100  から  D, P, C, MAIN, SCI3, WAIT, FORM, MONI
    0xF780  から  RAM16, B
    0xFD00  から  SIOBUF
    0xFF00  から  RAM8

  あと、VRAMエリア _Vram が 0xF800 から
     ADサンプルデータ用のバッファ _AdBuf0,1 が 0xFC00 から
     の絶対番地に割付けてあります。(リンカへの割当は不要です)

3.アナログ入力

  CH0 を PB0 へ、CH1 を PB1 へ割当てています。
  電圧入力範囲は 0 〜 +5V になっています。(正確には 0V 〜 Vcc ですが…)

  現在のプログラムでは、各チャネル毎の波形表示の制御(表示する/しない)は
  できません。表示が不要なチャネルは「ゼロボルトを入力」することで、結果と
  して「表示されない(ように見える)状態」にすることが可能です。
  (波形の表示が画面の最下ドットのスケール表示と重なって・・・)

  注意としては「トリガ動作は CH0 に固定」という事でしょうか。
  現在のプログラムでは「トリガチャネルの変更」はできません!

4.操作スイッチ

  6ヶの操作スイッチ(押ボタン型)が PB2 - PB7 へ接続されているものとして
  動作します。SW番号名の割当は、PB2 が SW0 で、PB7 が SW5 になります。

  スイッチが6ヶしか無いため、スイッチの「短押し」と「長押し」で動作を
  分けています。

  最低限?の設定でも「6ヶのスイッチでは足りない」ため、「設定モード」を
  2種類(設定モード '0' と '1')用意して切り替えています。

  設定モードは起動直後 '0' になります。SW5 の「長押し」で '1' へ変更します。
  再度の SW5 「長押し」で '0' へ戻ります。
  '1' の状態で4秒間SW未操作なら '0' へ戻ります。(基本はモード '0')

  設定モード0へ割当てたスイッチ「長押し」の操作は以下の通りです。

   SW0  
   SW1  
   SW2  トリガ電圧変更(高電圧へ)
   SW3  トリガ電圧変更(低電圧へ)
   SW4  トリガモード変更  Auto / Normal
   SW5  設定モード変更 ( '0' と '1' のトグル)

  スイッチへ割当てた「短押し」の操作は以下の通りです。

        設定モード0          設定モード1
   ------------------------------------------------------------
   SW0  時間軸変更(短時間へ)    
   SW1  時間軸変更(長時間へ)    
   SW2  トリガ電圧変更(高電圧へ)  トリガ点移動(画面左へ)
   SW3  トリガ電圧変更(低電圧へ)  トリガ点移動(画面右へ)
   SW4  計測動作  Start/Stop         ←同左
   SW5  トリガモード変更  Single/他      ←同左

5.画面表示

  画面の右端へ、現在の動作状態を表示します。

   最下行     時間軸の単位  "uS" or "mS"
   下から2行目  時間軸の数値
   下から3行目  設定モード( '1' の時のみ表示)
   下から4行目  トリガモード  'N' or 'A' or 'S'
   最上行     計測動作  "Stop"

   画面の右上の端 トリガ検出マーク(ドット表示)

6.仕様(という程のものじゃないけど…)

  1) 入力チャネル数    2チャネル固定
  2) 入力電圧範囲     0 〜 +5V(Vcc) 固定
  3) 時間軸        250uS/div 〜 100mS/div
  4) トリガモード     Normal, Auto, Single
  5) トリガチャネル    CH0 固定
  6) トリガ極性      H → L 固定
  7) トリガレベル     0 〜 +5V
  8) トリガ点の表示位置  可(画面の左端から右端まで)
  9) ディレートリガ    未実装

  備考 トリガチャネルの変更、トリガ極性の変更、ディレートリガ、および
     Auto トリガモードの同期などは(ソースの変更で)比較的簡単に機能の
     追加ができそうです。(…と書いていて…未だに出来てませんが…)

7.その他

  2006.09.16現在、Auto トリガモードの同期検出処理が実装されていません。
       (現在、 Auto トリガモードでは同期がかかりません)

履歴
2006.09.09 初版作成
2006.09.16 高速サンプリング時の水平ノイズを低減
           SW1〜SW6 を SW0〜SW5 へ変更
///