对计数器操作时,高低电平的脉冲宽度或者持续时间的最大最小值分别是多少?



硬件: Counter/Timers (TIO)>>Devices>>PCI-6601

问题: 我要发出一串非常宽或者窄的脉冲序列,但是程序返回计数器错误10006。例如我要产生一个脉冲串,高电平1毫秒,每秒钟重复一次(频率为1Hz,占空比是0.000001)。

解答: 上述例子可以在NI-TIO的设备(PCI/PXI-6601/6602/6608)上正常工作,但是在DAQ-STC的设备(E系列MIO)上不行。原因是计数器的比特数决定的。NI-TIO有32bit的计数器,而DAQ-STC有24bit的计数器。

计数器的函数使用时钟(内部或者外部)确定高低电平的时间。上述例子中如果使DAQ-STC的设备,必须使用20MHz的参考时钟,100kHz的时钟没有这么高的分辨率(1毫秒)。这样1Hz占空比0.000001的脉冲串需要20个高节拍和19999980个底节拍,而24bit的计数器最多计数值是2^24-1=16777215,小于19999980,所以计数器在达到所需值之前就归零翻转,导致错误。

NI-TIO的设备最大计数值是2^32-1=4294967295,显然远远大于16777215,能够处理19999980计数。

通常需要知道高低电平的节拍数。板卡是否支持这个操作取决于频率的选择(100kHz,20MHz和80MHz(部分NI-TIO板卡))和节拍数。

首先,选择时钟基频,选可达分辨率要求的最慢的时钟。
> 10毫秒 = 100kHz基频时钟
0.05~10毫秒 = 20MHz基频时钟
0.0125~0.05毫秒 = 80MHz基频时钟(部分设备支持)

a=(时钟频率Hz)*(占空比)
b=(时钟频率Hz)*(1-(占空比))
x=(2^24)-1
y=(2^32)-1

如果你的设备是DAQ-STC芯片,取(a、b)的最大值,如果小于x,能够正常工作。
如果你的设备是NI-TIO设备,取(a、b)的最大值,如果小于y,能够正常工作。

相关链接: KnowledgeBase 271A85YF : Unable to Count More Than 167 Seconds
KnowledgeBase 1J7EBUU3 : What are the Difference Between the National Instruments Timer Chips?

附件:





报告日期: 08/09/2005
最近更新: 08/16/2005
文档编号: 2BTCHSEW