02-15-2011 11:52 AM
I appear to be running into a problem with EOI signal generation under Vista and Windows 7, using a GPIB-USB-HS adapter.
When the number of characters sent from the PC is equal to (13 + ( x * 32)), where x >= 0, my instrument appears to receive the EOI signal one character too early, resulting in a corrupted final character in the string on the receiving side. I originally discovered this when sending the string from my application, but I am able to reproduce this just sending a string from the NI-488.2 Communicator app. I have tested this under the NI-488 drivers ver 2.5 and ver 2.8.
This problem did not occur under Window XP.
My instrument utilizes the NI NAT9914 chip on the receiving end, and results in communication failure when this problem occurs.
Has anyone else run into this problem? I figure that perhaps some subtle signal timing change has occurred somewhere under post-XP and I am at a bit of a loss as to what I can do in the NAT9914 configuration to compensate for this issue.
02-15-2011 04:36 PM
Problem solved.
After modifying my EOI signal handler on the instrument side, I was able to get rid of the problem. I guess Vista/Windows7 requires a better designed EOI signal handler than Windows XP required.
07-15-2011 01:16 PM
Hi,
What did you modify exactly to get this to work?
Thanks
07-15-2011 02:38 PM
In my original driver in my instrument, the code that read the NAT registers (BSR,ISR0,ISR2) and then checked the EOI bit in the BSR, were generally in the middle of my character processing routine. I instead moved the reading of the NAT registers to the top of the routine to be executed quicker after the interrupt was received, and moved the actual check of the BSR EOI bit to the bottom of the character processing routine. The state of the EOI bit had to be saved for examination on the next pass through the character processing routine.
07-18-2011 09:37 AM
I'm still a little confussed about your issue. To the best of my knowledge EIO is sent with the last character per IEEE488- are you saying that EIO is being set before the last char is placed on the data lines?