Retriggera​ble AO waveform/p​ulse generation

Dear all,
I'm trying to generate an output pulse from my card (NI 6014) after the detection of an external trigger (10Hz TTL).
I've uploaded my best attempt vi which currently only detects the trigger once and then starts a free-running pulse train. I've tried to set the DAXmx trigger property node to retriggerable by simple inserting this after the trigger vi but this stops the vi from working. I may not be wiring it correctly or is it possible that my card is not able to retrigger?
I would greatly appreciate any help anyone may have.
Thanks!
Attachments:
1 channel out.vi ‏38 KB

I attached a version saved for 8.2.
Don't forget to customize it to your needs!
Daniel
Attachments:
Acq&Graph Voltage-Int Clk-Dig Ref&SWRetrig LV82.vi ‏40 KB

Similar Messages

  • Can I have retriggera​ble analog out with a single intializat​ion with PC-6711 or PCI-MIO-16​XE-10 boards? step triggering available?

    i know i can use the counters to make retrigerable pulses, but i want to know if analog output can do this as well.

    Jay,
    It sounds like you want to update your analog output channels with a new value or an entire waveform every time you get a trigger signal. It's great that you're already familiar with counters creating retriggerable pulses, because you can use them for the analog output operation.
    The analog output channels get updated based on the edges of the update clock. You can use the counters to supply an external update clock. So, if you set up a counter for retriggerable pulse generation, it waits for a trigger signal. When it receives it, it generates a pulse, which you have wired to the analog output update clock. When the analog circuitry sees that edge, the data will be output to the channels.
    I answered a similar question regarding this for the posting
    "About trigger config". However, I realize that the user had originally posted in the LabVIEW General category, so it doesn't show here. Search the Developer Exchange for "retrigger analog", and you will find it. It discusses this idea as well as attaches a few examples that are currently going through a process of review to eventually be available on the web. There might be some other helpful postings as well.
    Another good resource for triggering in general is the NI Developer Zone "Tips and Techniques in DAQ Triggering" document. You can find it by going to the http://www.ni.com/support pages and searching for "daq triggering".
    Regards,
    Geneva L.
    Applications Engineer
    National Instruments
    http://www.ni.com/ask

  • Need help incorporat​ing the second counter into a current data acquisitio​n routine (continuou​s retriggera​ble AI).

    My current application acquires data when it sees a TTL trigger line.  Then it wait until the next TTL pulse and continues taking data until the user stop the data acquisition process.  I use "counter 0" as counter source.  The program works well.  However I need to read digital data everytime I take AI data.  I plan to use "counter 1" to read the digital data.  The trick is that I need to synchronize both AI and counter 1 readings. Therefore the counter 2 will acquire data when AI acquires data.
    Here is the code I implemented and would like to know if it is correct.  The new code (implementation of second counter) is in the bottom part of the code.  I will really appreciate your help. 
    Yajai
    Attachments:
    code.txt ‏6 KB

    Hi DrObb,
    What is sounds like you want to do is to specify an external sample clock for your analog acquisition and a digital acquisition. Is there a reason in particular that you're using a counter? What hardware are you using? If you simply want to sample a digital and analog channel on the same clock edge, this won't be very difficult (provided your hardware supports hardware-timed digital IO). You can find an example of this being done in C by going to: 
    Start » All Programs » National Instruments » NI-DAQ » Text-Based Code Support » ANSI C Examples and then navigating to  Synchronization\Multi-Function\ContAI-Read Dig Chan
    Regards,
    Sean
    Sean Ferguson
    Application Engineering Specialist | RF and Reconfigurable Test

  • Delayed retriggera​ble finite pulse train

    Hi there,
    I'm trying to create a delayed retriggerable finite pulse train on a USB-6251 (2 counters). I just read an old thread on this problem and I got it to work.
    However, I'm having this one small annoying issue:
    I want to send a finite pulse train (3 pulses) at 1Hz
    The trigger has a period of 3seconds (0.333333Hz)
    My initial delay is 0.1s
    This results in the following :
    first 3 seconds : perfect 0.1s delay, 3 pulses at 1Hz
    second 3 sec   : nothing
    third 3 sec        : perfect 0.1s delay, 3 pulses at 1Hz
    and so on
    I reckon this is because the counter that is gating the continuous pulses is not finished yet with his pulse and therefore does not "see" the new rising edge of the trigger.
    Is there a way I could solve this?
    I know I could just use the first trigger and send 150 pulses or so at 1Hz. That's what I would do if I was very confident in the accuracy of the 3s period of the trigger, but I'm not. And since it is very important the timing is accurate after that trigger, I think I will induce to much error in the timing that way.
    Any ideas?
    Cheers,
    Tom

    Sorry for boosting this thread, but I just noticed something in the program Alan suggested : Delayed_Retriggerable_Finite_Pulse_Train.vi while checking its output on a scope:
    If you set an initial delay, the pulse train actually starts after 2 times that delay time after the initial trigger. I can't seem to find where this factor 2 is coming from.

  • How to alternate data storage into 2 arrays with an analog square wave input? (seems that the retriggera​ble function is not supported by my PXI card)

    Hi!  
    I'm trying to have an analog square wave input determine where data gathered from a second analog input channel is stored.  I want data to be stored to one array during the high signal period of the square wave and data to be store to another array during the low signal period of the square wave.  The square wave I'm using is of constant frequency (8.3 Hz).  I believe I need to use an analog input wave as opposed to a onboard clock or other timing mechanism because my square wave is also being used to modify the input going into my experimental setup.  Thus the data storage needs to be correlated to the timing of the data modification in the experiment.  I tried to use the retriggerable property node function, but receive error 200452, which I think means that my PXI card (6115) can't support this retriggerable function.  So I'm looking for other ways to accomplish alternating data storage in response to an incoming analog square wave.  Any help would be GREATLY appreciated... Thanks!  (I'm also quite new with LabView so toddler-type explanations would probably be most useful  )
    -Shari
    (LabView version 8.6)
    Attachments:
    Pulsed_Acq_Switch_Simplified.vi ‏47 KB

    Hello Shari,
          I am looking at your situation and it seems very intriguing.  after downloading your file I have a couple questions to ask if you don't mind answering.
          Currently in your program you are only taking one sample of data at a time,  this could lead to uneven sampling.  Would you like to sample at a consistent rate  (say 10 Kilosamples of data a second?)  if so what type of card are you using?
          Also,  Do you want your data to be in a 2-D array of data?
    Best Wishes,
    Daniel

  • Error with "on-the-fly" controls in waveform generation

    I am trying to output a waveform in which I can change amplitude while the VI is running. When trying to do so, however, I am allowed to change the amplitude only once, and then I get error #-10880. What does this mean? I am using AO Write, and placing the waveform calculation and generation inside a sequence structure, with a wait statement, in the hopes of giving "changes enough time to take place".
    Thank you.

    jmarotta wrote in message news:<[email protected]>...
    > I am trying to output a waveform in which I can change amplitude while
    > the VI is running. When trying to do so, however, I am allowed to
    > change the amplitude only once, and then I get error #-10880. What
    > does this mean? I am using AO Write, and placing the waveform
    > calculation and generation inside a sequence structure, with a wait
    > statement, in the hopes of giving "changes enough time to take place".
    > Thank you.
    Hi, Jmarotta,
    I am not very sure how to solve your problem, but the error #-10880 is
    "updateRateChangeError A change to the update rate is not possible at
    this time because when waveform generation is in progress, you cannot
    change th
    e interval timebase, or when you make several changes in a
    row, you must give each change enough time to take effect before
    requesting further changes."
    You can find this in the help/error code/Data Acquisition Vis... Hope
    this would help. ^_^
    Regards,
    celery

  • Generating continuous waveform while preserving properties

    Hello,
    Thanks to all the past
    posters for being so helpful.
    I was unable to answer two questions:
    The first concerns the maximum
    triggering rate in LabVIEW. My goal is to have two trigger / gate blocks set up
    working at approximately 25 Hz and 7800Hz, respectively. Is it reasonable to
    expect proper trigger/gating even at the higher rate?
    Secondly, how can the frequency
    and duty cycle of a simulated square wave be preserved for smaller samples? I'm
    trying to simulate a 25Hz square wave with 50% duty cycle at 1MHz sampling
    frequency, but in 129 – sample increments. Currently, only the first 129 samples are
    displayed, even on both “reset phase, seed and time stamps” and “use continuous
    generation” modes. In other words, my goal is to have a waveform that is
    displayed in ‘pieces’ or in ‘frames’ of the total waveform without resetting
    generation.  
    Your help is always
    appreciated,
    BME_guy

    Hello,
    One way to implement this would be to simply create 1 period of your desired waveform and hold it in an array.  Then, on each iteration of your loop, you simply take out the next 129 points.  The only catch would be that you will have to account for the rollover case.  Well, I decided to just implement this for fun, so I have attached a VI which will take the next N points from a buffer, as well as an example which illustrates how to use it.  The subVI is used like a functional global - basically it has an initialization state where you need to specify the buffer (your array of data) and the start index.  Then you can call it with the Get Next N Points state and it will get the next N points from the array - accounting for the rollover when necessary.  In fact, you can specify getting a different N on different executions of the Get Next N Points state (which is why this must be wired inside the while loop of the example VI which uses the subVI).  If you're not familiar with the functional global concept, it's the idea that you can have an uninitialized shift register hold data across executions of a subVI.  Save both attached VIs to the same location on your machine, and run the example to see how it works.  You can then use my previously attached code to generate 1 period (40000 points for your case) of your square wave, and use that array instead of the example's.  Then make N=129 and you're golden.
    I hope this helps!  Admittedly the code isn't cleaned up - I literally just wrote this a few minutes ago.  But it should do the job!
    Best Regards,
    JLS
    PS - Just to be clear, the "subVI" referred to as a functional global above is named "Circular Read Buffer Functional Global.vi" and the example which shows how to use it is named "Example Using Circular Read Buffer Functional Global.vi".
    Best,
    JLS
    Sixclear
    Attachments:
    Example Using Circular Read Buffer Functional Global.vi ‏38 KB
    Circular Read Buffer Functional Global.vi ‏47 KB

  • RFSG 5673 streaming with script

    Hi All,
    I'm trying to build ARB baseband data on my PC, a rack mount controller in this case, then transmit as quickly as possible with the 5673 (VSG) for real time transmission in a TDD.  The best solution I've found is the following, but it doesn't seem to work properly. ... and I'm not sure why.  Shouldn't it work? 
    I don't really understand the interaction between the script and streaming waveform. 
    Put generation mode into script;
    Set the data transfer property to streaming;
    Allocate and initialize VSG memory for the corresponding number of samples in my waveform;
    Program a script like the following:  ( I put comments after the '//' )
    script myScript1
       Generate wf0  // play waveform once to open up stream buffer
       Repeat forever
         Clear scriptTrigger0
         Wait until scriptTrigger0   // (*) download next waveform, then use scriptTrigger0 to transmit
         Generate wf0
       end repeat
    end script
    FYI: Sample rate is in the 10's of MHz.  (I've been using 80 MHz)
    After initiating I can't do anything.  I can't even query the device to check 'SpaceAvailableInStreamingWaveform'.  Any subsequenct command gives the following error:
    The data being written to the streaming waveform cannot keep up with the output.<LF/>Decrease the sample rate or write data to the streaming waveform more frequently.
    Waveform Name: wf0
    Status Code: -219106
    So then I have to reset / reconnect.  This seems faulty in that my streaming data is keeping up with the output since the VSG should be waiting.
    Interestingly enough I can do the following and things actually work. It seems that an error is only produced when the VSG buffer is "mostly" empty.  So if I pad enough zeros on my waveform, then play 3/4 of the entire buffer per trigger, things seem to work well.  It's just a pain in the butt and I'm intruducing more latency then I'd like.  The following script works:
    script myScript1
      Generate wf0 subset (0, 750000)  // empty 3/4 of buffer
            Repeat forever
                Clear scriptTrigger0           
                Wait until scriptTrigger0         // download new data prior to trigger and play a 3/4 cyclic piece of the buffer
                  Generate wf0 subset (750000, 250000)     
                  Generate wf0 subset (0, 500000)
                Clear scriptTrigger0
                Wait until scriptTrigger0
                  Generate wf0 subset (500000, 500000)
                  Generate wf0 subset (0, 250000)
                Clear scriptTrigger0
                Wait until scriptTrigger0
                  Generate wf0 subset (250000, 750000)
                Clear scriptTrigger0
                Wait until scriptTrigger0
                  Generate wf0 subset (0, 750000)
            end repeat
    end script
    There has to be a better way to do this... 
    Any thoughts are apreciated. 
    Thanks in advance.
    Clayton_A

    So...  after more thought about my application, I'm really not so concerned with small latency involved with additional buffer space. 
    I'm going to define a buffer that's twice the length of my waveform and simply ping-pong between to subsets.  Like this:
    script myScript1
       Repeat forever
         Clear scriptTrigger0
         Wait until scriptTrigger0  
         Generate wf0 subset (0, waveform_length)
         Clear scriptTrigger0
         Wait until scriptTrigger0  
         Generate wf0 subset (waveform_length, waveform_length)
       end repeat
    end script
    Then I'll just write to one subset while transmitting from the other.
    I'm still interested in hearing any thoughts on the matter.
    I'm also interested in why errors are produced when the VSG hasn't read all data in the stream buffer.  Or 'at what point' are errors produced.  Is there a non-zero difference between read and write pointers that is too close?
    For example, the following gives an error prior to the first trigger:
    script myScript1
       Generate wf0 subset (0, (waveform_length - 100) )  
       Repeat forever
         Clear scriptTrigger0
         Wait until scriptTrigger0   // Any device query or command gives an error while waiting for this trigger.
         Generate wf0 subset ((waveform_length - 100), 100)
         Generate wf0 subset (0, (waveform_length - 100))
       end repeat
    end script

  • Arbitrary waveform generation from large text file

    Hello,
    I'm trying to use a PXI 6733 card hooked up to a BNC 2110 in a PXI 1031-DC chassis to output arbitrary waveforms at a sample rate of 100kS/s.  The types of waveforms I want to generate are generally going to be sine waves of frequencies less than 10 kHz, but they need to be very high quality signals, hence the high sample rate.  Eventually, we would like to go up to as high as 200 kS/s, but for right now we just want to get it to work at the lower rate. 
    Someone in the department has already created for me large text files > 1GB  with (9) columns of numbers representing the output voltages for the channels(there will be 6 channels outputting sine waves, 3 other channels with a periodic DC voltage.   The reason for the large file is that we want a continuous signal for around 30 minutes to allow for equipment testing and configuration while the signals are being generated. 
    I'm supposed to use this file to generate the output voltages on the 6733 card, but I keep getting numerous errors and I've been unable to get something that works. The code, as written, currently generates an error code 200290 immediately after the buffered data is output from the card.  Nothing ever seems to get enqued or dequed, and although I've read the Labview help on buffers, I'm still very confused about their operation so I'm not even sure if the buffer is working properly.  I was hoping some of you could look at my code, and give me some suggestions(or sample code too!) for the best way to achieve this goal.
    Thanks a lot,
    Chris(new Labview user)

    Chris:
    For context, I've pasted in the "explain error" output from LabVIEW to refer to while we work on this. More after the code...
    Error -200290 occurred at an unidentified location
    Possible reason(s):
    The generation has stopped to prevent the regeneration of old samples. Your application was unable to write samples to the background buffer fast enough to prevent old samples from being regenerated.
    To avoid this error, you can do any of the following:
    1. Increase the size of the background buffer by configuring the buffer.
    2. Increase the number of samples you write each time you invoke a write operation.
    3. Write samples more often.
    4. Reduce the sample rate.
    5. Change the data transfer mechanism from interrupts to DMA if your device supports DMA.
    6. Reduce the number of applications your computer is executing concurrently.
    In addition, if you do not need to write every sample that is generated, you can configure the regeneration mode to allow regeneration, and then use the Position and Offset attributes to write the desired samples.
    By default, the analog output on the device does what is called regeneration. Basically, if we're outputting a repeating waveform, we can simply fill the buffer once and the DAQ device will reuse the samples, reducing load on the system. What appears to be happening is that the VI can't read samples out from the file fast enough to keep up with the DAQ card. The DAQ card is set to NOT allow regeneration, so once it empties the buffer, it stops the task since there aren't any new samples available yet.
    If we go through the options, we have a few things we can try:
    1. Increase background buffer size.
    I don't think this is the best option. Our issue is with filling the buffer, and this requires more advanced configuration.
    2. Increase the number of samples written.
    This may be a better option. If we increase how many samples we commit to the buffer, we can increase the minimum time between writes in the consumer loop.
    3. Write samples more often.
    This probably isn't as feasible. If anything, you should probably have a short "Wait" function in the consumer loop where the DAQmx write is occurring, just to regulate loop timing and give the CPU some breathing space.
    4. Reduce the sample rate.
    Definitely not a feasible option for your application, so we'll just skip that one.
    5. Use DMA instead of interrupts.
    I'm 99.99999999% sure you're already using DMA, so we'll skip this one also.
    6. Reduce the number of concurrent apps on the PC.
    This is to make sure that the CPU time required to maintain good loop rates isn't being taken by, say, an antivirus scanner or something. Generally, if you don't have anything major running other than LabVIEW, you should be fine.
    I think our best bet is to increase the "Samples to Write" quantity (to increase the minimum loop period), and possibly to delay the DAQmx Start Task and consumer loop until the producer loop has had a chance to build the queue up a little. That should reduce the chance that the DAQmx task will empty the system buffer and ensure that we can prime the queue with a large quantity of samples. The consumer loop will wait for elements to become available in the queue, so I have a feeling that the file read may be what is slowing the program down. Once the queue empties, we'll see the DAQmx error surface again. The only real solution is to load the file to memory farther ahead of time.
    Hope that helps!
    Caleb Harris
    National Instruments | Mechanical Engineer | http://www.ni.com/support

  • How does buffer size affect double buffered waveform generation?

    I had originally posted the following question:
    "Why does the double buffered waveform generation pause after the first buffer before continuing?"
    "I am using an AT-AO-10 board to generate a multiple channel waveform in double buffered mode. The board's DAC's are updated by an external clock signal. While the waveform generation performs well, I notice that after the first buffer has been generated there is a time delay before the next buffer is output. However the second buffer and thereafter perform well without any time delays. If anyone can provide me an explanation on why this happens I would appreciate it. I am using NI-DAQ API functions to generate the waveforms and my settings for the WFM_DB_Config function are 1 for oldDataStop to disallow regeneration of data and 0 for partialTransferStop to not stop when a half buffer is partially transferred."
    -posted by Vadi on 6/7/2001
    I received a response from Geneva as follows:
    Geneva L. on 6/11/2001 says:
    "Vadi,
    The first thing is to make sure that you have the latest version of NI-DAQ installed, NI-DAQ 6.9.1. If you need to install it, make sure you completely uninstall any prior versions. Then, you will have examples installed in either the NI-DAQ or the CVI directory. In the AO directory, you should find the WFMdoubleBuf example.
    Start with that to make sure the output appears as you expect. Then, you can modify it to apply your external update clock, following the idea presented in the WFMsingleBufExtUpdate example. You might even want to double-check that your external clock acts as you expect using an oscilloscope.
    Finally, modify the example such that you can update on multiple channels, remembering that you interleave each channels buffer into one buffer for WFM_DB_Transfer. Whatever data is in the buffer will be updated on the output channels.
    Regards,
    Geneva L.
    Applications Engineer
    National Instruments"
    I have checked my version of NI-DAQ and it is 6.9.1. I am generating the double buffered waveform according to the format shown in WFMdoubleBuf and with some modifications from WFMsingleBufExtUpdate to allow me to use my external update clock. However I continue to notice the same phenomena again and again. For a buffer size of 7500 or 10000 points there is a time lag meaning after the first buffer has been output there is a noticeable time delay before the second buffer and buffers there after is output. This time lag doesn't exist for the buffers that are output after the first buffer but it does exist for the first buffer. When I decrease the buffer size down to 5000 points the time lag disappears (Note: this phenomena also occurs when I use an internal time base as opposed to my external clock). Is there a reason for this? I am using a AT-AO-10 board and I know the on board FIFO is 1024 points deep. However from the documentation provided it doesn't indicate that double buffered mode uses the on board FIFO at all. In fact, the functions require that the FIFO mode be turned off (in WFM_Load) for double buffered waveform generation. Is there a reason why when the buffer size is increased that there is a time lag after the first buffer? Is this because of the functions themselves or is this because of the AT-AO-10 board?

    Vadi,
    Make sure that your buffer size is set to the same number of points that you're actually writing to the buffer initially. For instance, if you run the example as-is, the NIDAQMakeBuffer puts exactly the ulCount amount of data into the buffer. Then, it continuously writes out half buffers. Thus, if you are not writing enough data to fill up the buffer the first time, there will be that lag until the section where half buffers are output.
    Regards,
    Geneva L.
    Applications Engineer
    National Instruments
    http://www.ni.com/ask

  • How do I show a Waveform using the Labview Report Generation Toolkit?

    I am using LV 6.0.2 & have charts that consist of Waveform array type data - how do I break this down properly to using in Easy Graph.vi for the report generation tool kit which accepts on 2D arrays ?

    It looks to me like you want to use the Get Waveform Components VI in the Waveform Subpalette on the Functions Palette. The Waveform data type is a cluster of three elements, one of which is the data array. Because you have an array of Waveforms you will want to extract the data from each waveform in the array and build a 2D array of data for the Report Generation VI. The easiest way to do this would be auto-indexing into a for loop. The for loop should have the Get Waveform Components VI in it and then each data array (1D array) will be added to a 2D array using auto-indexing on the way out of the for loop as well.
    Hopefully my description was able to help out. I am including a bit of code which isn't really useful other than illustrating the code I des
    cribed above. It simply takes an array of waveforms, extracts the data and creates a 2D array of data.
    As a side note, I find the Context Help Window extremely useful when using new data types. This is especially true when using Graph and Charts
    Good luck!
    -scraggs99
    Attachments:
    Waveform_Array_to_2D_Data_Array.vi ‏30 KB

  • How to do another thing before returning of a buffered waveform generation?

    Hi There,
    The DAC0 and DAC1 of PCI-6024E are used to generate waveforms by the buffered analog output mode. We know that before the buffered generation is completed, the starting function of generating waveform, either "WFM_op" or "WFM_Group_Control",will not return, unless you call "Timeout_Config". In my application developed by Visual C++, I hope that after starting the waveform generation process, I can do another thing, for example, plotting data or data processing. Would you tell me how to do that? I greatly appreciate you for any reply and suggestions.
    Kylin

    Kylin,
    Actually, WFM_Group_Control() is not synchronous. It is asynchronous and will return immediately after the generation has been started. I would suggest that you take a look at the following examples. They are located in C:\Program Files\National Instruments\NI-DAQ\Examples\VisualC\Ao:
    WFMsingleBufAsync.C
    WFMsingleBufSync.C
    WFMsingleBufAsync.C is an asynchronous generation that uses WFM_Group_Control(). On the other hand, WFMsingleBufSync.C is a synchronous generation that uses WFM_Op(). In your situation, you would want to follow the programming structure of WFMsingleBufAsync.C.
    Good luck with your application.
    Spencer S.

  • Waveform generation upon trigger start for one cycle

    Hi there,
    I am trying to generate one cycle of a waveform(triangle wave) upon recieving a trigger signal from another input.
    I have the waveform generation working however it generates more than one cycle and also stops before a whole waveform is generated. The waveform generated can have a different duration than the trigger signal (frequency).
    How would I change the program to have it generate only one waveform upon trigger. 
    Please see the attached VI in Labview 8.5.
    Attached is also what  the program should do as JPEG image diagram.
    Thank you!
    ~Anthony
    Attachments:
    cycle.vi ‏117 KB
    waveform.png ‏6 KB

    Anthony,
    I played around with your vi for a little bit, and it seems that the easiest way to manipulate your data of the triangle wave is to wire an input to the sampling info of the vi. The input is looking for a cluster of 2 doubles, 1 being sampling rate, 1 being # of samples. In the vi I built, I just set rate to always be 1000 times the frequency, and the samples to always be 1000, giving you 1 period. 
    Hopefully this helps!
    Chris Van Horn
    Applications Engineer
    Attachments:
    cycle.vi ‏117 KB

  • Can I continuous update a waveform in a 6713 Card? I need to inc and dec the frequency continuously without stoping the generation. Can I do so? how?

    Hi.
    I`m using labview 7 and a analog output board, the 6713. I`m building a system that generates sine wave forms and I need to change the frequency of the generated waveform without stoping the generation. Can I do so? And how?
    Thanks.
    Ismail.

    You can invoke the "AO Clock Config" VI after invoking the "AO Start" VI to change the update rate without stopping the generation. The "Function Generator" example does exactly this.
    Geoffrey Schmit
    Fermi National Accelerator Laborary

  • Get DIO to trigger waveform generation

    Hi,
    I am trying to get a digital IO line to trigger waveform generation. I have a function call that invokes WFM_Op(), which is set up to trigger on one of the PFI inputs. This part works fine for an externally generated interrupt.
    What I want to do is use one of my digital output lines, looped back to the PFI input, as the signal source. However when the call is made to the DIG_Out_Line() it hangs, it seems like it's waiting on the call to WFM_Op() to finish first. (Obviously my program is multithreaded)
    It seems pretty weird that you wouldn't be able to do this, the two things should be separate.
    Anyway if you have any suggestions or another method to attempt that's more to your liking please let me know.
    Stefan
    Tarrant
    Research Engineer
    C-CORE
    Captain Robert A. Bartlett Building
    Morrisey Drive
    St. John's, NF
    Canada A1B 3X5
    Tel: (709) 737-8372
    Fax: (709) 737-4706
    E-mail: [email protected]
    Web site: http://www.c-core.ca
    This communication (including all attachments) is intended solely for the use of the person or persons to whom it is addressed and should be treated as a confidential C-CORE communication. If you are not the intended recipient, any use, distribution, printing, or copying of this email is strictly prohibited. If you received this email in error, please immediately delete it from your system and notify the originator. Your cooperation is appreciated.

    Stefan,
    I have one suggestions for you. I hope it works out for you:
    Create two programs: one for waveform generation and the other one for outputting the digital signal out of one of the the DIO lines, or a second program which generates a pulse train, out of a counter.
    I don't understand exactly how you are allocating the function calls.Are you placing the function calls one after the other; that is, first a WF generation one,and then a DIO function. Or, two separate sets of functions on different threads? If it is the first one, you will not be able to accomplish what you want.
    If this doesn't help, let me know. If you can attach a simple code that depicts the problem, it would be great.
    Hope this information is helpful.
    L Aguila
    Appl
    ications Engineer
    National Instruments

Maybe you are looking for

  • HT4137 iMessage has wrong contact number for me . How do I change it?

    How do I change iMessage contact number for me?

  • Windows USERNAME in Adobe Form?

    I am creating a form in LiveCycle. I would like to capture the windows username of the form creator. The following javascript works, but not embedded in my Adobe form. Any advice? Thanks for the help. var ws = WScript.CreateObject("WScript.Shell"); v

  • SyBase connection problems

    I'm t rying to connect to a SyBase database with the code below. I get three results with equal distribution: 1) It gets through and makes the connection - I'm golden 2) I get: Exception: JZ006: Caught IOException: java.net.SocketException: Connectio

  • Diag Tool Error: ITS - Web AS must Match?

    I was having a diag tool error and I got it fixed but I want to understand what is happening a bit more. I orginally posted it in the ITS forum ( Link: [Bothersome ITS error msg in Diag Tool;) but hindsight tells me this is probably the more proper f

  • Speedgrade and "Bleach bypass" effect

    I'm editing in PP and direct linked to SG.  I have applied the Bleach Bypass effect in SG, and it looks killer on this one shot I have, but when I direct link back to PP, the effect is NOT there.  It shows up as a "lumetri effect" under the effects t