對計數器操作時,高低電平的脈衝寬度或者持續時間的最大最小值分別是多少? 硬體: 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 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
