11-23-2005 06:10 PM
11-24-2005 11:43 AM
11-25-2005 11:53 AM
Hi DittoHead,
Thanks for the reply, here is the NI-Spy file for the test. The instrument 1 is used GPIB Address 6 which has old F/W (BAD), and the instrument 2 is used GPIB Address 8 with new F/W (GOOD) that discard the extra character when there is an unexpected interrupt. Actually, when the Output Buffer is empty, and user request a read, it sends message "NO DATA\r\n" to GPIB port, so when there is an unexpected interrupt only one character is sent. Therefore, the BAD one will have an extra character from the message "NO DATA\r\n".
The unexpected interrupt happened when viOpen is called with one instrument reused the other instrument viAddress. In the ISR handler function has flag to check either Write or Read, but 99% is the Read interrupt.
Please find 2 attachment files: Test_Visa.vi and BadInst6_GoodInst8.spy
The attachment for spy file extention is txt (spy does not on the list of valid extention), please rename the extention back to spy to view it.
11-25-2005 11:49 PM
11-28-2005 09:06 AM
Hi dittohead,
Thanks for the reply. When the unexpected interrupt ocurred, EITHER the bit BO is set (99%) for Read Interrupt or bit BI is set (1%) for Write interrupt when viOpen is called from OTHER instrument(s) AND when viAddress of OTHER instrument(s) reused THIS instrument viAddress previousely used and closed. This ONLY happended when we use VISA DRIVER and ONLY for FAST PC (P4 with 2.8 GHz and above). For IEEE-488.2 commands, no problem at all for any CPU speed.
Corect me if I'm wrong, the viClose maybe did not cleanup probably and the memory address mapping from PCI still pointing to BOTH instruments, if I instroduce viClear before viClose, the unexpected interrupt does NOT happend anymore, BUT with 3 or more instruments, this unexpected interrupt is still there !!!!!
11-28-2005 10:12 AM
Hello,
I'm still not following your problem. Is this "unexpected interrupt" you speak of the BO or BI bit being set on the instrument at PAD 8 when you do a viOpen on PAD 6? So, at your spy line 106, you see BO or BI set on PAD 8, which seems incorrect since you're only talking to PAD 6. Is that what you're seeing?
Scott B.
GPIB Software
National Instruments
11-28-2005 10:43 AM
11-28-2005 05:37 PM
Hi GPIB Guru,
Thank you very much for your help. The problem is gone.![]()
![]()
I only follow your step 1 and step 4. Do I still need Step 3?
But step 2 you suggest will not have viAddress reuse, unless I put the another while loop outside the viOpen and viClose. I rewrote my program to reproduce the viAddress recycle from other instrument for the test.
Loop
For i = 1 to 3 //(3 instruments)
viOpen(Res(i), &viAddress(i)
Until Error
Thanks again
11-28-2005 05:37 PM
Hi GPIB Guru,
Thank you very much for your help. The problem is gone.![]()
![]()
I only follow your step 1 and step 4. Do I still need Step 3?
But step 2 you suggest will not have viAddress reuse, unless I put the another while loop outside the viOpen and viClose. I rewrote my program to reproduce the viAddress recycle from other instrument for the test.
Loop
For i = 1 to 3 //(3 instruments)
viOpen(Res(i), &viAddress(i)
Until Error
Thanks again
11-28-2005 05:37 PM
Hi GPIB Guru,
Thank you very much for your help. The problem is gone.![]()
![]()
I only follow your step 1 and step 4. Do I still need Step 3?
But step 2 you suggest will not have viAddress reuse, unless I put the another while loop outside the viOpen and viClose. I rewrote my program to reproduce the viAddress recycle from other instrument for the test.
Loop
For i = 1 to 3 //(3 instruments)
viOpen(Res(i), &viAddress(i)
Until Error
Thanks again