[問題] 高精度等待時間

看板C_and_CPP作者 (s4300026)時間10年前 (2013/11/08 23:43), 編輯推噓5(5022)
留言27則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC 問題(Question): 我想要產生一筆仿類比的數位訊號,輸出頻率是 1E6 HZ 我還想要接收一筆類比資料,擷取頻率是 1E4 HZ 所以我開了兩個 thread 去分別執行任務 問題在於我使用 QueryPerformanceCounter 去當接收端擷取頻率的計時器 QueryPerformanceFrequency(&Freq); QueryPerformanceCounter(&t1); do{ QueryPerformanceCounter(&t2); }while((t2.QuadPart-t1.QuadPart)/Freq.QuadPart>0.0001) 該寫法很耗CPU,造成輸出訊號的執行序不能輸出正確的訊號 即: 當time = 0 時,應該輸出 5 ,程式正確輸出 5 當time = 1 時,應該輸出5.0001,程式卻因為在執行另一條thread 就輸出上一筆資料的訊號 (因為該位置上的值沒被更改) 該怎麼解決這個問題呢? 是否有更好的寫法? 相同的問題 http://zhidao.baidu.com/question/296303137.html -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.35.165.71

11/08 23:45, , 1F
主要影響的原因我覺得應該是太頻繁呼叫計數器的關係吧...
11/08 23:45, 1F

11/08 23:46, , 2F
但我沒有查到有比這個更準的計數方式了...
11/08 23:46, 2F

11/09 00:01, , 3F
認真表示... 放棄Windows XD
11/09 00:01, 3F

11/09 01:03, , 4F
換rtos吧? arm-cortexm4 都做的比 windows+i7好
11/09 01:03, 4F

11/09 01:05, , 5F
然後還要有個夠快的 adc dac 總之 windows 有難度
11/09 01:05, 5F

11/09 01:23, , 6F
PC當高速GPIO這種蠢事我也幹過, 但在學會MCU之後才發現蠢
11/09 01:23, 6F

11/09 04:07, , 7F
怕負擔大就找個有支援 C++11 的編譯器,然後用 chrono
11/09 04:07, 7F

11/09 04:08, , 8F
#1Hos9Bfq 精度再測一下是到哪...
11/09 04:08, 8F

11/09 04:09, , 9F
我測精度是到 1e-006 , 剛好到你的需求..
11/09 04:09, 9F

11/09 09:31, , 10F
感謝樓上各位大大的回應,實際來講,我是操作 PCI-9222
11/09 09:31, 10F

11/09 09:39, , 11F
所以比較傾向於先找C++11的編譯器,不行就換WINS了QAQ...
11/09 09:39, 11F

11/09 09:43, , 12F
不過看他所附的程式碼,輸出就是do while 阿,實在想不
11/09 09:43, 12F

11/09 09:43, , 13F
到wins不能這樣搞...
11/09 09:43, 13F

11/09 09:57, , 14F
回edison 也許大部份情況是這樣,但只要os lag 一下就gg了
11/09 09:57, 14F

11/09 14:19, , 15F
也是
11/09 14:19, 15F

11/10 12:01, , 16F
去找FTDI FT2232H Mini Module. 用BitBang mode.
11/10 12:01, 16F

11/10 12:03, , 17F
你要的是LA及Siggen, 不是high precise sleep. 那是RTOS
11/10 12:03, 17F

11/10 12:03, , 18F
的玩法。
11/10 12:03, 18F

11/10 23:02, , 19F
wenku.baidu.com/view/8c1a52c34028915f804dc227.html
11/10 23:02, 19F

11/10 23:04, , 20F
根據說明,好像是用一個FT2232+外掛EEPROM直接把想做的事
11/10 23:04, 20F

11/10 23:06, , 21F
由該晶片完成(是這樣嗎?) 我需要解釋 BitBang mode
11/10 23:06, 21F

11/10 23:07, , 22F
LA及Siggen 等中文
11/10 23:07, 22F

11/10 23:07, , 23F
中文不是很好 哈 XD
11/10 23:07, 23F

11/10 23:12, , 24F
LA: Logic Analyzer, Siggen: Signal Generator
11/10 23:12, 24F

11/10 23:13, , 25F
去查原文資料。你要的東西其實就是音效卡。
11/10 23:13, 25F

11/10 23:14, , 26F
只是音效卡做不到1MHz。基本上一開始你就搞錯方向了。
11/10 23:14, 26F

11/10 23:41, , 27F
我在查查FTDI的相關資料好了... 如有問題再發問吧 XDDD
11/10 23:41, 27F
文章代碼(AID): #1IVGQbl5 (C_and_CPP)