You're correct that when using the immediate mode, there is no clocking required. As soon as the software finishes the function call you should have your results. Also, I don't think the pullup/pulldown resistors should affect you either.
I did want to ask you about something though...
I don't know if this makes a difference or not... but I am always writing a 1 to my output lines, but all of my input ports always read logic levels of 0. For some reason, I was able to correctly read 1's off of only one of my input lines twice... and I haven't been able to do it since. I'm not sure why, because the wiring should all be the same.
What happens if you write all 0's to the output port? I'm wondering if the input port would re
ad all 1's in this case. If this is true, you might be getting these values inverted somewhere. I know that when you create a virtual channel you have the option to have the lines inverted or not. Are you using virtual channels. If so, perhaps this is something to check in it's properties settings. By the way, have you been using Traditional NI-DAQ or the new DAQmx API?
If after writing all 0's you instead still get all 0's on the input, then I would be very suspicious of the cable. If possible, you might get a terminal block and try wiring 5V to this input port to verify (just for sanity) that you can indeed read an externally applied voltage status on that port. If this works AND the cable turns out to be wired correctly, the cable still could be the problem if it is dividing down the voltage levels below the TTL threshold for a logic 1. Eventually, you may need to chase this down with a multimeter. (ie find out where 5V is and isn't.)
Don't worry, we'll get to the bot
tom of this. Let me know what you find out.
-Russell