DMA transfer rate for PCI-6602 counter/timer
I'm strongly interested in raising the DMA transfer rate between the PCI-6602 counter and computer. At the moment, I've got a Pen-4 2.4GHz operating under Win98. I have to move an 80 Megaword array at an ~5 MHz speed. So far, I've been able to reach just 2 MHz. Would it be possible? What is the battleneck here - the soft- or hardware?
Hello,
I think the bottleneck you are seeing here is a limitation of the dma transfer capabilities that is dependant on the bus of your PC and not your 6602 card. Here is a link of a knowledgebase that you could try to use to see if that would improve your transfer rates. I still doubt you will be able to achieve approximately 5MHz.
http://ae.natinst.com/operations/ae/public.nsf/fca7838c4500dc10862567a100753500/1b64310fae9007c086256a1d006d9bbf?OpenDocument
Regards,
Steven B.
Similar Messages
-
NI 6602 counter/timer card
Hi,
following question:
i am using the x4 encoder application on an ni 6602 card.
and also i am using a gated signal generation on it.
both things are working without any problem.
My intention is to read the counter value of the encoder on every rising
edge of the signal and write the value into an array in the pcmemory.
Is this possible, how?
Is it possible to create an interupt on rising edge, and signal the
programm, >read the encoder reader value
I'm using the 6602 card with the HDDK in Linux, well i also have the
register level manual.
Thanks a lot
Mario
Mario Behn
345 Lincoln Avenue Apt. 1025
Amherst, MA, USA
Tel.: +1-413-546-6656Hello,
thanks for your answer, well my problem is slightly different, so let me
explain:
I got from NI the following the files for the NI 6602 Counter/Timer Card to
work with Linux:
http://sine.ni.com/apps/we/nioc.vp?cid=11737〈=US
one is the common driver.
The other are the sample programms.
However, every programm except the one which uses the
interupt/dma works(gpct_ex8.cpp).
Here is the errormessages:
[root@proto OSinterface]# ls
gpct_ex1.cpp gpct_ex4.cpp gpct_ex7.cpp osiBus.cpp osiUserCode.cpp
tTIO.cpp
gpct_ex2.cpp gpct_ex5.cpp gpct_ex8.cpp osiBus.h trace.h
tTIO.h
gpct_ex3.cpp gpct_ex6.cpp gpct_ex9.cpp osiTypes.h tStatus2.h
tTIO.ipp
[root@proto OSinterface]# g++ gpct_ex8.cpp osiBus.cpp osiUserCode.cpp
tTIO.cpp
In file included from osiBus.h:9,
from gpct_ex8.cpp:15:
osiTypes.h:39:1: warning: "NULL" redefined
In file included from /usr/include/_G_config.h:14,
from /usr/include/libio.h:32,
from /usr/include/stdio.h:72,
from gpct_ex8.cpp:14:
/usr/lib/gcc-lib/i386-redhat-linux/3.2/include/stddef.h:366:1: warning: this
is
the location of the previous definition
gpct_ex8.cpp: In function `void test(iBus*)':
gpct_ex8.cpp:112: `class tTIO' has no member named `G0_DMA_Control_Register'
gpct_ex8.cpp:113: `class tTIO' has no member named `G0_DMA_Control_Register'
gpct_ex8.cpp:136: `class tTIO' has no member named `G0_DMA_Status_Register'
gpct_ex8.cpp: In function `void gpct_ISR(tTIO*)':
gpct_ex8.cpp:154: `class tTIO' has no member named `G0_DMA_Status_Register'
[root@proto OSinterface]#
So the question is, when there is a general driver system and example
programms, than they should work?
Who can help my with this ?
If you can't, could you forward my question at NI to someone, who is
responsible for the Measurement Hardware Driver Development Kit (DDK) and
can help me?
I have Redhat-Linux 8.0 and kernel 2.4.18.
Thank you
Mario Behn
----- Original Message -----
From: "Sastry V."
Newsgroups: natinst.public.daq.general
Sent: Friday, January 10, 2003 16:44
Subject: Re: NI 6602 counter/timer card
> Hi Mario,
>
> I would like to tell first that interrupts do not work with PCI-6602.
>
> I would also suggest you to take a look at the examples on Encoder
> Measurements:
>
> >
http://zone.ni.com/devzone/devzone.nsf/webcategories/75CA12ECD25F39A78625679
000743752?opendocument&...
>
> The Quadrature Encoder with DAQ-STC cards example shows the property
> that you can use to count.
>
> Please do let me know if you need more help.
>
> Sincerely,
> Sastry Vadlamani
> Applications Engineer
> National Instruments -
WANTED: NI PXI-6602 counter/timer
I'm looking to buy a used NI PXI-6602 counter/timer board. Got one?
"Zvezdana S." wrote in message
news:[email protected]..
> Hugh,
> To possibly obtain an used board from National Instruments, you should
> contact your regional Internal Sales Representative (ISR) for possible
> used boards. If you are not sure who your ISR is, generate a service
> request at:
I never knew NI had an SRQ line we could pull.
Craig Graham
Physicist/Labview Programmer
Lancaster University, UK -
Configuring the NI 6602 Counter/Timer ?
Is there a way to configure a NI 6602 Counter/Timer to generate a LabVIEW occurrence ever time it counts?
Hello;
Occurrences can be generated at every time the output of the 6602 counter change state. That operation is not supported for counting operations.
One thing you can try to do to overcome that is to combine two counters, the first one will have the pulse train to be counted connected to its source and it will be configured as retriggerable pulse train generator. You can configure the pulses to be generated by this counter to have the minimun delay of 2 timebase clocks, and the same width of the pulses that are being counted.
The second counter will receive the output of the first counter on its source and will be configure as simple event counter.
You will catch the occurence generated by the first counter and the value read by the second counter.
There is a drawbacks with this implementation, which is:
There will be a 2 timebase clock pulses delay in between the generation of the occurrence and the event of the pulse on the first counter.
Hope this helps.
Filipe A.
Applications Engineer
National Instruments -
How to install counter pallets for PCI 6602 in labview 6.1
Hi...
Plz help me to install counter pallets and driver for PCI 6602Hi...
Plz help me to install counter pallets and driver for PCI 6602 -
How to set a DMA transfer type for PXIe-6536 in LabWindows/CVI?
I have a PXI chassis PXIe-1078 with a controller PXIe-8115 running under Windows 7. The digital output board is PXIe-6536.
I use a function DAQmxSetChanAttribute to set a property DAQmx_DO_DataXferMech to a value DAQmx_Val_DMA, since I want to use a direct memory access data transfer. This wokred well with a PCI-6534 board using the same LabWindows/CVI code before migrating it to the PXIe system.
Unfortunately, running this code on the PXIe system reports a DAQmx error -200452: "Specified property is not supported by the device or is not applicable to the task".
The task is created in the following simple way (the board name in MAX is 'Dev1'):
DAQmxCreateTask ("digTask", &digitalTask);
DAQmxCreateDOChan (digitalTask, "Dev1/port0:3", "DIG_CHANNELS", DAQmx_Val_ChanForAllLines);
DAQmxSetChanAttribute (digitalTask, "", DAQmx_DO_DataXferMech, DAQmx_Val_DMA, 15);
How can I solve this problem? How is it possible to choose between different transfer types?
Thank you in advance for any hint!Hi CavityQED,
The PCI-6534 is a "Digital I/O" board while the PXIe-6536 is a "High Speed Digital I/O" board, that's why they don't have the same properties.
By the way you can use DMA transfer with this method :
http://zone.ni.com/reference/en-XX/help/370520J-01/hsdio/direct_dma/
Let me know if it helps you.
Regards.
Mathieu_T
Certified LabVIEW Developer
Certified TestStand Developer
National Instruments France
#adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
LabVIEW Tour
Journées Techniques dans 10 villes en France, du 4 au 20 novembre 2014 -
What is Max. Transfer Rates for DIO 96 Devices?
I want to know what is the Max. Transfer Rate achieved by the DIO 96 device. It is definitely dependent on Microprocessor (MP) speed, but there should be some way to know Max Speed if MP speed is given and no other process runs on the MP.
Hello,
There are several things that can affect the speed of the DIO 96, such as the operating system and drivers. For instance, are you using Traditional NI-DAQ? Are you using DAQmx? Did you write your own driver? Are you using a third party driver? In these situations, all you can do is benchmark one particular setup.
There are several variables that can affect the �transfer rate� of the DIO 96. However, this board is not really meant to be used for transfers. This is a static I/O board. It does not even include change notification. If you are looking to transfer data, then a better solution would be a 653x series board. If you are looking at monitoring a digital line, you may consider looking at using a 6509, which supports change notification, I h
ave benchmarked this card to detect changes up to 5 KHz on a 2 GHz machine running Windows XP.
If you are looking to generate a digital signal, the DIO 96 will be timed by the operating system and controlled by the specific driver. In this case, I strongly recommend a 653x device. Another alternative would be to use a 6115, or a 6120, which support eight lines of correlated digital I/O.
Does this help clear things up?
Justin T.
National Instruments -
How do I control the sampling rate of a PCI-6602 counter
Labview version: 7.1
Processor: Pentium 4 1.8 GHz
Hello All,
I have two avalanche photo diodes connected to two counter entrances on a 6602 (ctr 0 and ctr 1).
As can be seen in the attached VI, I'm generating a signal on ctr2 and using that as an external clock for the counters.
My objective is to accurately read the counter values at a rate of ~100KHz (i.e. 0.01 ms between measurements) and to be able to control the rate via the front panel. This should be possible (80MHz timebase), however when I run the program it is only able to actually sample at ~5 ms intervals. Also I'm encountering error 200141 even though I set the rate in the counter to 1M, which should buffer enough.
What am I doing wrong? Any help would be greatly appreciated.
Thanks a lot,
Attachments:
FRET_ver_14.vi 456 KBHello Aadam,
After looking at your code, I would not use the DAQ assistants to implement this. The DAQ assistant are best to be used for simple acquistion and since you are looking to use more lower level properties of you card, I would suggest to move to use the lower level VIs. It will be easier to understand where the problem is occurring at and will run better than using the DAQ assistant.
I have done some initial research for you to implement this design. I have described each of them below and how they will assist you.
The first example I have found is the Change Counter Output Frequency While the Task is Running. In this example, it will show you how to change the frequency and duty cycle of a counter output frequency task. One thing to remember about these counters are that the frequency will not change until the period has finished. For example, if you changed the frequency in the middle of a period of frequency of 1 Hz, it has to complete the 1Hz period before changing it to the next frequency.
The next example I would investgate is in the NI Example Finder called Correlated Dig Write With Counter.vi. The NI Example Finder can be found in Help » Find Examples... This VI will explain how to use the counter as a clock for another task. You will need to combine the concepts of the first example with this to make sure that you can vary the sample clock.
Finally, in the NI Example Finder, there is an example how to count digital events with an external clock called Count Digital Events-Buffered-Continuous-Ext Clk.vi. With this example, I first suggest to add the counter task and make sure you can get the external clock to work. After this, I would then implement changing clock.
Jim St
National Instruments
RF Product Support Engineer -
I have connected the output of my amplifier/discriminator which gives TTL output pulses of 20 ns rise time to my PCI6024E counter source, the other counter source is connected to a square wave generator such that when that counter gets to a certain value, both the counters reset.
there are no gate, output and ground connections.
when i started this, this setup worked.
but now there seems to be a problem.
the maximum frequency is 20 Mhz, my signal is a bit more than that. will this cause a problem or i will just loose some counts and nothing more.
also should the other counter source be set at a particular frequency?
i found out that if i connect my signal (ttl) and square wave generator ground to the same ground, my results depend on the rate of square wave generator.
does anyone know why this is?
thanks for your help
madhuHi mandhu,
Here's my understanding of what you're trying to do, please let me know if I understand correctly:
The source input to Counter0 is wired to a TTL signal from the amplifier/discriminator, and the source input of Counter1 is connected to a square wave signal. When Counter1 reaches a certain value, the values of Counter0 and Counter1 are resetted.
If the above is correct, can you elaborate on the what is not working (e.g. error encoutnered, wrong count, etc.)? Has anything changed at all between when it worked and now (e.g. noise in signal source, hardware or software set up)? What software (e.g. LabVIEW) and driver (Traditional or DAQmx) are you using for your application?
Using a signal higher than 20MHz should not damage the board, but you will miss counts.
I'm not sure I understand the following explanation of the application. I assumed from your application description you want your second counter to control the count of your first counter as well. Is this the case? Please try to elaborate on the software and the signal connections.
"but now there seems to be a problem.
the maximum frequency is 20 Mhz, my signal is a bit more than that. will this cause a problem or i will just loose some counts and nothing more.
also should the other counter source be set at a particular frequency?
i found out that if i connect my signal (ttl) and square wave generator ground to the same ground, my results depend on the rate of square wave generator."
Thanks,
Lesley -
I need tips on programming a 6602 counter/timer
I am new to Labview but have been a command line programmer for some time. I have a 6602 card in a PXI system. I would like to use the internal clock of the 6602 to control the delivery of triggers to various instruments. These triggers need to be both user inputted and optionally scanned in time. Eventually, I will trigger the 5112 NI scope board to recieve signal and plot to the screen.
Darrin,
There are a lot of terrific LabVIEW examples that ship with the
NI-DAQmx driver that are compatible with the PXI-6602. These
include counter examples as well as pulse train generation
examples. For example, some of these that would be great to looks
at can be found by opening the NI Example Finder (Help >> NI
Example Finder). Under the Browse tab, navigate to Hardware Input
and Output >> DAQmx >> Generate Digital Pulses.
There are also shipping examples that show how to use a common signal
between boards. Most of these examples share clocks, but you
could also apply this to triggering. These are found in: Hardware
Input and Output >> DAQmx >> Synchronization >>
Multi-Device and Hardware Input and Output >> DAQmx >>
Synchronization >> Multi-Function
There are also a lot of great examples, DevZone posts, and tutoirals
that you can find on our website by searching for various keywords like
6602, synchronization, triggering. etc.
One example that shows how to export a digital signal from one board
and use it on another board via the RTSI lines that are built into the
backplane of the PXI chassis can be seen here.
Hopefully this gives you a good place to start!
Regards,
Doug Mumford
Applications Engineer
National Instruments
Doug M
Applications Engineer
National Instruments
For those unfamiliar with NBC's The Office, my icon is NOT a picture of me -
Cannot get high transfer rates with PCI-6534
I am using a PCI-6534 in the Pattern I/O mode for performing data acquisition. The data rate I am getting for reliable data is about 2MS/s. I need 8MS/s, but do not get reliable or correct data at this rate. According to the 653X User Manual the benchmarked rate is 20MS/s, but I seem to be getting nowhere near this.
How is your memory?
http://digital.ni.com/public.nsf/3efedde4322fef19862567740067f3cc/101ad216bd2b692286256a48006a986c?OpenDocument
Ben
Ben Rayner
I am currently active on.. MainStream Preppers
Rayner's Ridge is under construction -
Frequency divide by N doesn't work on Counter-Ti​mer PCI-6602
Hello everybody,
I tried to do something basic ( ?) with this Counter-Timer 6602 Board, and it doesn’t work.
So I hope some people with more experience than me could understand what happens here.
1) What I need:
I need to generate 4 synchonised clocks, whose periods will be multiple of 1 ms.
2) What I have:
LabVIEW 7.0 and a PCI-6602 Counter-Timer Board in a DELL PC running under XP pro.
The PCI-6602 Counter-Timer Board has 8 counter timers named CTR 0, CTR 1, ... CTR7.
3) What I have already done, and that worked:
- Generate a 1 kHz “Master Clock” signal from CTR 4, configured by “Continuous Pulse Generator Config.vi” (found in “Data Acquisition, Counters...).
- configure CTR 0 and CTR 1 to work as frequency dividers, by use of “Down Counter or Divider Config.vi”.
- Apply the output signal of CTR 4 (OUT ) to the SOURCE inputs of CTR 0 and CTR 1 by means of physical wiring in the SCB-68 connection box.
When I do this, I get two nice secondary clock signals on my oscilloscope screen, ( with periods = 3 ms, or 5 ms or whatever multiples of 1 ms I choose) from CTR 0 and CTR 1 outputs , very clean and perfectly in phase with the 1 kHz Master Clock.
So far, so good...
But I still need 2 more secondary clocks...
One would say: “No problem, do the same trick with two other counters...” Well, not so simple, it seems...
4) What I tried to do, and that didn’t work:
When I try to do the same frequency division with any of the remaining counters, (CTR2 to CTR7), the program stops and I get an error “ –10020 : Time base not valid “.
I can’t figure out what happens here: I thought any counter could be configured to work as a frequency divider, but it seems not to be so, and I am stuck here.
Has anyone an idea about how to fix this type of problem?
Attached file: hor_div02New.vi
Attachments:
hor_div02New.vi 123 KBkarolik,
I'm just adding a followup in English. As Marc L. mentioned, the particular vi named "Down Counter or Divider Config" isn't compatible with the 6602. While the 6602 does have the ability to generate 4 synchronized clocks, a different syntax is needed. Here's how I'd do it:
Traditional NI-DAQ
1. Configure a continuous pulsetrain on CTR 4. Route its output to, say, RTSI 4. Don't start it yet.
2. Configure CTR 0,1,2,3 for continuous pulsetrains using RTSI 4 as their "timebase source." Start them.
3. Start the CTR 4 pulsetrain.
4. Now CTR's 0-3 should generate separate clocks with synchronized phasing.
DAQmx
1. Configure a continuous pulsetrain on CTR 4. Don't start it yet.
2. Configure CTR 0,1,2,3 for continuous pulsetrains using "Ticks" for units. Use a DAQmx property node (probably Channel property node, but am not 100% sure and don't have a LV PC handy to check) to specify that the "ctr4 internal output" should be used as the timebase. Start them.
3. Start the CTR 4 pulsetrain.
4. Now CTR's 0-3 should generate separate clocks with synchronized phasing.
-Kevin P. -
How do I select the 80 Mhz internal source for the PCI-6602?
The user manual says the PCI-6602 counter/timer has
an internal 80Mhz as well as 20Mhz source. I'm trying
to select the 80Mhz source using the ni-daq function
GPCTR_Change_Parameter() in Visual C++, the header
file nidaqcns.h supports 20Mhz but not 80Mhz.Hi, this is a simple program in C as requested that measures the time between two pulses (buffered).
I'm working with the PC-6602, and it doesn't work with an internal 80Mhz source.
The errormessage is "C:\Frederik\gecord\oscillator\bufferperiodtest.cpp(87) : error C2065: 'ND_INTERNAL_80_MHZ' : undeclared identifier
Error executing cl.exe." after compiling. When I use "ND_INTERNAL_MAX_TIMEBASE" it does work, but on 20 MHz, not on 80.
Does anyone know what i have to do?
Thanks
(Ps: working together with "mtytgat")
Attachments:
bufferperiodtest.cpp 2 KB -
How to develop 64-bit Windows device driver for NI-6602?
Due to the fact that NI-VISA doesn’t support 64 bit Windows, how can I do to develop a 64 bit Windows device driver for NI 6602 (Counter/timer) PCI card. The possible jobs include:
Develop a Windows Kernel Mode Driver (“Device Driver”);
Make it to comply with VISA in order to utilize “osiBus Generic IO Interface” and MH DDK.
Could anyone please give me some advices as soon as possible?
William Liao
Message Edited by Wiliao on 07-22-2005 04:12 PMHi All,
I am currently working on getting the health parameters
from the motherboard like voltage fan and temperature. I have already
already done this using 32 bit winio driver but i am not able to work
on 64 bit version. is there any driver availbale in 64 bit for
obtaining this parametes or some one help me to get a 64 bit winio
driver.
Regards,
Senthil prabu R -
Connect NI PCI-6602 with NI PCI-6503
Hello,
I want to connect a NI PCI-6602 Counter/Timer with the NI PCI-6503 DIO-Card. The problem is the varying number of pins. (6602->68 pins; 6503 -> 50 pins). Is there a possibility to connect both? Maybe a complete adapter?
regards ThomasThomas,
You are correct both cards have male connectors. You could still use the 68M-50F connector if you use a 68-68 cable. Or if you had a 68F-50M then you would need a 50 pin cable. I have found another option, the R6850-D1 Cable(part number 777419-01) . This is a digital cable that was made to use our 68 pin digital devices with 50 pin breakout boxes. It ties the ground lines together and you also loose access to PFI 37,the up/down pin for counter 0, and you loose the +5V line. I think you may want to check the pin mappings to make sure that you really want to connect these 2 boards directly together. When using a 50 pin conversion with the 6602 you will get the following pin mapping:
Pin Number (1-50) 6602 Signal Name
1 PFI_25
2 PFI_28
3 PFI_27
4 PFI_24
5 PFI_30
6 PFI_31
7 PFI_26
8 PFI_29
9 PFI_21
10 PFI_23
11 PFI_19
12 PFI_17
13 PFI_18
14 PFI_16
15 PFI_22
16 PFI_20
17 GND
18 PFI_34
19 GND
20 PFI_35
21 GND
22 PFI_33
23 GND
24 PFI_32
25 GND
26 GND
27 PFI_38
28 GND
29 Reserved
30 GND
31 PFI_36
32 GND
33 PFI_39
34 GND
35 PFI_4
36 PFI_6
37 PFI_0
38 PFI_2
39 PFI_1
40 PFI_3
41 PFI_7
42 PFI_5
43 PFI_13
44 PFI_10
45 PFI_15
46 PFI_14
47 PFI_8
48 PFI_11
49 PFI_12
50 PFI_9
You will loose half of the cards functionality since half the pins (even numbered pins) will be connected to ground on the 6503. It would be easy for you to short lines to ground this way. It would probably be better if you get a breakout box for each card (SCB-50 and SCB-68) and then connect only the lines you want to share between the cards. So in answer to your question, yes you CAN connect then directly together, but do so with caution, and I do not feel this direct connection is the best solution for y
ou.
Hope this helps.
Kevin R
Maybe you are looking for
-
HT1918 How do I take credit card off my iTunes account
How do I erase a credit card off my account
-
Hi All, Pl Help me in Resolving the Error "Write Back Error The system is unable to read the Write Back Template 'HIRING_STATUS'. Please contact your system administrator. " FolderPath:\\ C:\OracleBI\web\msgdb\customMessages\Hiring_status.xml Here Ta
-
When I put my phone iPhone 4s into Do Not Disturb mode, how do I know who my favorites are that can over ride this feature?
-
Possible solution to ATV2 slow library streaming. iTunes movie buffering issues
All, I'm not a common user of forums so forgive ettiqute/nomenclature errors. We were recently having issues with non-stop buffering when trying to stream movies from our iTunes library. I've seem numerous topics and posts on this same issue. Si
-
Sending mail of ALV Report automatically
Hi All, Don't we have one funtional module to send the report output automatically when it is executed. I want to give userID only for input. Please tel me as soon as possible. Regards, Rohit