NAT7210を動かす②

投稿日 2010/07/22

「NAT7210を動かす①」のつづきです。

 

●クロック設定

 

NAT7210に与えるクロックは1MHzから、最高20MHzです。私の場合はPICのクロック出力をそのままつないでいます。PICを8MHzで動かしているので、その1/4 2MHzを与えています。10MHzの水晶発信器でも試しましたが、問題はありませんでした。基本的にCPUより遅くても、早くても問題は無いようです。

 

Hiddenレジスタ ICRのF3-0にクロックを示す数値を設定し、クロック周波数を教えてやらなければなりません。10,16,20MHzの場合は、Page-inレジスタ ICR2 のMICRビットをセットしなければなりません。クロック周波数を教えてやらなければならないのはT1ディレーの時間などの算出の必要があるからだと思います。

 

5.120MHzのような周波数の場合は、最も近い周波数として設定します。この場合5MHz。

 

ICR F3-0の値 ICR2 MICRビット  クロック周波数
   1           0            1
   2           0            2
   3           0            3
   4           0            4
   5           0            5
   6           0            6
   7           0            7
   8           0            8
   5           1            10
   8           1            16
   A           1            20

 

●アドレス・モード

 

NAT7210で扱えるアドレッシング・モードは下記のように多彩です。

 

 ・Automatic single or dual primary addressing detection
 ・Automatic single primary with single secondary address detection
 ・Single or dual primary with multiple secondary addressing
 ・Multiple primary addressing

 

しかしアマチュアが作る簡単な装置では、一番上のSingle Primary Addressingつまり、アドレス1つ(プライマリ・アドレスのみ使用。セカンダリ・アドレスは使わない)のモードでよく、最も扱いが容易です。

 

NAT7210は上記の多彩なアドレッシング・モードのためにADR0とADR2というアドレス・レジスタを2つ持っています。

 

Single Primary Addressingでよければ、ADR0にアドレス値(たとえはアドレスが3なら3そのまま)をセットします。ADR1には無効であることを示す値(E0h)をセットしておきます。

 

セットしたアドレスに40hを加えた値がトーカ・アドレス、20hを加えた値がリスナ・アドレスとなります。

 

WRITEレジスタのADR0,1は、アドレス6のADRレジスタをMSB(bit7)が0か1かで選択します。前述の値E0hは、Bit7がセットされるので、ADR1を指定したことになり、DT1、DL1がセットされているので、セカンダリ・アドレスは使わないことを示しています。

 

話は前後しますが、ADR0に設定するプライマリ・アドレスに、40+3=43hを設定すれば、DT0(ディセーブル・トーカ0)がセットされることになり、トーカにはならないことを意味します。(リスナとしてのみアドレス3を使用する)


 

●ハンドシェーク・モード

 

GPIBシステムは、低高速デバイス混在の場合に対応できるよう、データやコマンドのやり取りに3線ハンドシェーク(DAV, NRFD,NDACの3信号)という方法を採用しています。ハンドシェークについては、貴重なサイトここを参照してください。

 

それぞれの信号の意味は、
DAV(Data Valid): データが準備できました。バス上にあります。
NRFD(Noy Readu For Data): データを受け取る準備ができていません。
NDAC(Not Data Accepted): データ受信完了

 

トーカ(送信側)はNRFDが出ている間は、DAVを出せません。
リスナ(受信側)はデータを受け取る準備ができたらNRFDを下げます。オープンコレクタで接続されているので、複数のリスナが存在する場合、その全てがNRFDを下げないと、トーカはDAVを出せません。
リスナはデータを受け取ったらNDACを下げます。
トーカはNDACを見て、DAVを下げ、次のデータの送信にかかります。

 

NAT7210には4つのハンドシェーク・モードがあります。

 

HLDE HLDA  Data-Receiving Mode
 0    0    Normal Handshake Mode
 0    1    RFD Holdoff on All Data Mode
 1    0    RFD Holdoff on END Mode
 1    1    Continuous Mode

 

RFD Holdoff(Ready For Dataホールドオフ)とはデータの受け取りを延長するという意味です。
HLDEとHLDAはHiddenレジスタAUXRAのビットです。

 

○Normal Handshakeモードでは、個々のデータ受信毎にNAT7210が自動的にハンドシェークを行います。

 

○RFD Holdoff on All Dataモードは、個々のデータ受信毎にRFDホールドオフされ、明示的にホールドオフを解除しないと次のデータを受信しません。

 

○RFD Holdoff on ENDモードは、デリミタ(EOS)を検出したり、EOIを検出した場合、つまりデータの最後を検出した場合のみ、RFDホールドオフします。個々のデータ受信はNormal Handshakeモードと同じですが、最後のデータを受信したときだけ、明示的にホールドオフを解除しなければなりません。

 

○Continuousモードは、コントローラがトーカとリスナのデータのやり取りをモニタするような場合に使うモードで、少し特殊です。

 

通常はNormalモードでよいと思いますが、RFD Holdoff on All Dataモードは、リスナ側がデータ毎に何か処理しなければならないような場合、RFD Holdoff on ENDモードは、一連のデータを受け取ったら何か処理しなければならない場合に、トーカを待たせるために使うのではないかと思います。

 

明示的にRFDホールドオフを解除するには、AUXMRレジスタのFinish Handshake (rhdf)コマンドを実行します。


 

(つづく)



 

(JF1VRR)