Digital I/O

cancel
Showing results for 
Search instead for 
Did you mean: 

PCIe-6509 Pull Up / Pull Down?

Solved!
Go to solution

I have a PCI-6509 measuring 96 digital signals.  The signals I'm reading are supplied by device that outputs HIGH by pulling to a 3.3V rail through a 10K and a LOW by a transistor pulling it to ground.  The system is not reliably detecting the HIGH/LOW state.  It measures most of the channels correctly most of the time but there are occasional glitches.  

 

I still have some work to do in verifying the signal integrity of the test fixture (especially the grounding on the DUT PCBs) as the system was designed and wired by a Mechanical Engineer Smiley Tongue but I have also ordered a PCIe version of the 6509 card due to its programmable Pull-Up / Pull-Down option in case it is needed.

 

I'm working to modify the LabVIEW software to add the Pull-Down feature on the lines I'm reading but I cannot find any documentation on it.  The feature is mentioned in the 6509 manual but it simply says:  " Refer to the software documentation for information about how to program the pull setting using NI-DAQmx with LabVIEW ".  What software documentation does that refer to?

 

Does anyone have any advice on reading 3.3V digital logic with the TTL-based 6509 cards and/or information on who to set the pull option?

 

Thanks & Regards,

NQ

 

LabVIEW Pro Dev & Measurement Studio Pro (VS Pro) 2019
0 Kudos
Message 1 of 8
(9,576 Views)

@NIquist wrote:

Does anyone have any advice on reading 3.3V digital logic with the TTL-based 6509 cards


I have used SN74LVCC4245A to convert from 3.3V to 5V and visa versa.  Worked pretty well.  Also works well to provide a little isolation between the UUT and the DIO card.


GCentral
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
"Not that we are sufficient in ourselves to claim anything as coming from us, but our sufficiency is from God" - 2 Corinthians 3:5
Message 2 of 8
(9,572 Views)

Thanks for the reply crossrulz.  

 

I was hoping to avoid the necessity of external conversion hardware as the DUTs are individual PCBs and they're already wired meaning a lot of work to tap into the lines with a level shifter circuit.  I'm hoping that since I'm only reading the 3.3V output of the DUTs with the 6509 that the 3.3V will provide a reliable HIGH.  Pulling the line LOW with the PCIe-6509 would then provide a solid LOW.  I've done this before with the Raspberry Pi GPIO lines and it seems to work fine.  

 

I just can't figure out how to program the PCIe-6509 pull setting.  Hopefully there will be additional documentation with the new card but I figured there would be something in the manuals on-line.  Nothing so far... Smiley Sad

LabVIEW Pro Dev & Measurement Studio Pro (VS Pro) 2019
0 Kudos
Message 3 of 8
(9,558 Views)

I found another note about the pull settings in the 6509 spec sheet:

 

Software-Configurable Pull-Up/Pull-Down Resistors (NI PCIe-6509 only) The NI PCIe-6509 includes an option in software to program whether the digital inputs have a value of high or low when not connected externally. You accomplish this using resistors that either pull up the line to +5 V or pull down the line to ground. You can configure this in NI Measurement & Automation Explorer (MAX) or programmatically via the NI-DAQmx driver.

 

 

I added a simulated PCIe-6509 to my system through NI-MAX and sure enough there is an extra Input Biasing tab in the configuration options so at least I can set them through MAX:

6509config.jpg

 

I still can't find any property node that does the equivalent through the DAQmx drivers though so if anyone knows the trick or has additional documentation please pass it along...  Thanks!

 

LabVIEW Pro Dev & Measurement Studio Pro (VS Pro) 2019
0 Kudos
Message 4 of 8
(9,552 Views)

I can see how it would be confusing to find the documentation. The documentation that the manual is probably referring to is the LabVIEW help. In LabVIEW help, when I search for “pull-down resistor” I found that there is a VI called “DAQmx Set Power Up States” that seems like it has functionality that you would like.

 

However, I would recommend changing the settings for it in NI MAX, as changing the pull-down/pull-up resistor settings rapidly and programmatically is not really encouraged. If you set the changes in NI MAX by using the configure menu for the PCIe-6509, the settings will be saved on the hardware’s memory when you next reset the device. I would encourage testing it in NI MAX and verifying the results to see how it works.

 

What Is the State of the Digital I/O Channels of My Device When My Computer Powers On?

http://www.ni.com/white-paper/5034/en/

 

DAQmx Set Power Up States (VI)

http://zone.ni.com/reference/en-XX/help/370469AC-01/lvdaqmx/mxsetpwrupstates/

Message 5 of 8
(9,547 Views)

Thanks ShamWOW!,

 

You lead me to some useful features and docs.  I didn't even realize that setting the channels to other than 5V TTL was an option.  My signals are 3.3V so now I can set the logic family to that instead of trusting that it will work in TTL mode.

 

I'll still have to do some physical testing as the "pull-up/pull-down" attribute seems to be specifically for the tristated mode.  I'm not entirely clear on that one.  What difference would the pull-up/down condition make if the channel(s) are in a high impedance tristate mode anyway.  My understanding of tristate is that the channel goes so high impedance that it essentially disappears in order to allow other circuits connected to the same digital lines to take over a common bus.  The tristated lines shouldn't be pulling high OR low at that point, they should be "floating".

 

Thanks for the warning on the limited number of times you can change these flash memory based states.  I read in the docs that fortunately the devices are smart enough NOT to burn a write-cycle if the condition is already set to what you are currently writing.  

 

LabVIEW Pro Dev & Measurement Studio Pro (VS Pro) 2019
0 Kudos
Message 6 of 8
(9,498 Views)
Solution
Accepted by topic author NIquist

NIquist,

 

Actually, the pull-up/pull-down resistors are specifically for not the tristate mode. When setting up the power up configuration for the PCIe-6509, you have the option to choose between pull-up, pull-down, and tristate. The nature of the pull resistors is to ensure that there are no floating lines at any time, and instead always go to either the logical 0 or 1.

 

When in tristate mode, however, signals can then have a high impedance so that the voltage values aren’t read. This creates that floating signal that you are talking about. This allows for multiple lines to connect to each bus, and creates an OR gate of sorts.

 

To answer your questions if you have high impedance channels coming in, then the pull down and pull up state will set the default value that will be read whenever in this ‘floating’ high impedance line.

Message 7 of 8
(9,475 Views)

Thanks ShamWOW!!  download.jpg 

 

For helping me "clean up" my dirty digital signal chain.  I think I've got it all figured out now and I have received my PCIe-6509 in case the PCI version isn't up to the task.  Best Regards and Happy.. uh, Wiping???

 

 

LabVIEW Pro Dev & Measurement Studio Pro (VS Pro) 2019
0 Kudos
Message 8 of 8
(9,460 Views)