Instrument Control (GPIB, Serial, VISA, IVI)

cancel
Showing results for 
Search instead for 
Did you mean: 

How to change state of GPIB control lines when not CIC, problem with iblines

Hello,

 

I added iblines() to my code, so I loop iblines() until my code sees that NRFD control line has gone low. It stays high for 1+ second and once it has gone low, I am able to set SRQ and send START and read REPLY quickly.  It is still unknown why this control line is high.

 

if I call ibonl() before asserting SRQ, this caused IO errors when trying to ibwrt()

 

If I cannot do this in software, is it feasible that I can tie this line low on the bus with a jumper? 

 

Thanks

Phil

0 Kudos
Message 11 of 14
(1,221 Views)

The short answer is no, this is not a recommended practice and is an unsupported use case, Also, doing this may have unintended consequences you are not aware of. In general, the function calls you are making are causing this line to stay high for a reason unknown to us but is likely required. I would recommend trying to find an alternative method to do what you are trying to do.

CH
Applications Engineering
National Instruments
http://www.ni.com/en-us/support.html
0 Kudos
Message 12 of 14
(1,210 Views)

Hello,

 

My code calls the following sequence to the CIC. There is approx 140 ms between each sequence while waiting on the hardware connected to GPIB0 to complete. Which one of these calls is causing the control line to be high?

 

3. ibconfig(GPIB1, IbcRsv (0x0021), 64 (0x40))
Process ID: 0x00000708 Thread ID: 0x0000021C
Start Time: 17:20:13.9080 Call Duration 00:00:00.0000
ibsta: 0x150 iberr: 64 ibcntl: 4(0x4)
7. ibwait(GPIB1, 0x0000)
Process ID: 0x00000708 Thread ID: 0x0000021C
Start Time: 17:20:13.9230 Call Duration 00:00:00.0020
ibsta: 0x148 iberr: 0 ibcntl: 4(0x4)
12. ibwrt(GPIB1, "TSX1Y1", 6 (0x6))
Process ID: 0x00000708 Thread ID: 0x0000021C
Start Time: 17:20:13.9620 Call Duration 00:00:00.0020
ibsta: 0x148 iberr: 0 ibcntl: 6(0x6)
92. ibwait(GPIB1, 0x0000)
Process ID: 0x00000708 Thread ID: 0x0000021C
Start Time: 17:20:14.2770 Call Duration 00:00:00.0020
ibsta: 0x144 iberr: 0 ibcntl: 6(0x6)
97. ibrd(GPIB1, "TC0", 1027 (0x403))
Process ID: 0x00000708 Thread ID: 0x0000021C
Start Time: 17:20:14.2970 Call Duration 00:00:00.0020
ibsta: 0x2144 iberr: 0 ibcntl: 3(0x3)
 

At this point the CIC is looping waiting on the NRFD line to go low before it reads the SRQ at the start of my sequence.

 

Thanks

Phil

0 Kudos
Message 13 of 14
(1,206 Views)

Hello,

 

I still have no solution for this problem. Can someone please explain why the NRFD is staying asserted? My last call with my app being the non-cic, is ibrd() as I am able to read the response from the CIC. My understand of the NRFD is that it is asserted why the byte is being read. So I don't understand why it still asserted after ibrd() has returned. The CIC is looping with iblines() after it sent the last response, and that shows the NRFD is still asserted.

 

Is there something in the config of my non-cic that is not "functional" with what the CIC is expecting? The REM is also active when iblines() is called on the CIC. Is there something the non-cic needs to do when remote enable is being used?

 

Thanks

Phil

0 Kudos
Message 14 of 14
(1,151 Views)