Instrument Control (GPIB, Serial, VISA, IVI)

cancel
Showing results for 
Search instead for 
Did you mean: 

assert EOI

I am having a problem with EOI causing a checksum error when the last byte of data is writing. When the device I am writing to sees the EOI line asserted it knows that the last byte of data should have been written and performs a checksum. The problem is that it recognizes the EOI assertion before the last byte is on the data line thus I always get the error. Is there any way to mitigate this occurrence by delaying the EOI when the last byte is written or assertting the EOI line apart from writing data? Any help would be appreciated.
 
Thanks,
0 Kudos
Message 1 of 2
(3,406 Views)
I don't know of any way to delay the assertion of EOI relative to the last byte. I can tell you that the state of EOI and the DIO lines is not deterministic when DAV is not asserted. The way GPIB works is that the talker starts driving DIO and EOI, waits a while to let them settle, and then asserts DAV to indicate that they are stable. Depending on the GPIB chip being used EOI may assert before the last data byte is driven on to EOI. This is because the chip "knows" it is going to drive the last byte of a transfer, but not yet know what that byte is. In that case it will assert EOI while the previous byte is still on the bus. This is valid to do because DAV is not asserted, meaning DIO and EOI should not be sampled.

Where are you getting the data to calculate the checksum? Are you probing the DIO/EOI lines directly or reading them from a FIFO/register? Probing directly might not be good as GPIB uses special transceivers. If you must probe the bus directly you could use discrete GPIB transceivers. TTL level transceivers would probably work. Also, if you are probing the GPIB signals directly you should only sample them when DAV is asserted.
0 Kudos
Message 2 of 2
(3,396 Views)