對計數器操作時,高低電平的脈衝寬度或者持續時間的最大最小值分別是多少?



硬體: 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/23/2005
文件偏號: 2BTCHSEW