From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



何故、ひとつのポートを設定した際に、すべてのデジタル I/Oポートは、リセットされるのですか?



ハードウェア: Multifunction DAQ (MIO)

問題: ポートの構成を変更するために、”DIG_Prt_Config”を呼び出した際に、他のデジタルデジタルラインが、ゼロボルトに、リセットされてしまうのでしょうか?
LabVIEWや、LabWindows CVIでポートの設定を簡易I/Oデジタル関数を使用して行う際に、何故、他のポートのデジタルラインが、リセットされるのでしょうか?

解決策: 8266もしくは、82C55デジタルチップをもつすべてのナショナルインスツルメンツの製品は、この挙動をします。


8255のデジタルポートの構成を変更するとき、全てのポートのデジタルラインはリセットされます。
これは、8255チップの働きによるものです。8255は、3つのポートをもち、それぞれは、8ビット分もっています。(全部で24)
適切にチップを使用するためには、出力状態のラインを事前に、全ての構成にセッティングがおいて必要になります。

簡易I/O関数は、反復端子をもち、この反復端子の値が、ゼロにセットされたときにポート構成が実行されます。
つまり、全てのポート構成を行った後に、反復端子をゼロ以上に設定する必要があります。
しかしながら、もし、簡易I/O関数を使用して、1ポート以上を制御するとき、ひとつのライン上のラインをリセットしてしまうがちに、他のポートの状態をセットし用とした時になります。
これは、使用しようとするデータの方向に留意しません。
例えば、もし、ポート0を出力に構成した場合、それから、ライン状態をセットして、それから、ポート1を入力に構成し、ポート0のラインをリセットします。
簡易I/Oの反復端子を1にセットした場合、イニシャライズが、済んでいないシフトレジスターを使用しているので、複数ポートは、動作しません。

適切な複数レジスターを使用した場合の手法は、簡易I/Oをしないことです。
LabVIEWの中で、全ての最初に、それぞれ、1ポートずつ、”DIO Port Config”関数を呼び出し、それから、DIO Port Writeもしくは、DIO Port Read関数を実行します。

関連リンク:

添付:





報告日時: 07/14/2003
最終更新日: 06/29/2004
ドキュメントID: 2ZDECHR1