主題:EM9170如何使用GPIO14的脈沖計數(shù)輸入功能? 共有75120人關(guān)注過本帖 |
---|
chang |
1樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
EM9170如何使用GPIO14的脈沖計數(shù)輸入功能? Post By:2013-4-17 2:34:00 [只看該作者]
請問如何進(jìn)行脈沖計數(shù),相關(guān)的API函數(shù)是什么?
脈沖達(dá)到預(yù)定數(shù)量后能否產(chǎn)生中斷? 謝謝
|
單帖管理 | 引用 | 回復(fù) |
x10 |
2樓 |
Post By:2013-4-17 9:22:00 [只看該作者]
請問你的脈沖最小間隔是多長?
|
|
單帖管理 | 引用 | 回復(fù) |
yy |
3樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-17 9:28:00 [只看該作者]
你一定要使用GPIO14來進(jìn)行脈沖計數(shù)嗎?9170的IRQ1為GPIO10即CN13的11號針腳,光盤里有提供IRQ的例程,可用于脈沖計數(shù)。
|
單帖管理 | 引用 | 回復(fù) |
chang |
4樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-18 0:38:00 [只看該作者]
脈沖間隔最小5ms.
|
單帖管理 | 引用 | 回復(fù) |
chang |
5樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-18 0:41:00 [只看該作者]
以下是引用yy在2013-4-17 9:28:00的發(fā)言: 你一定要使用GPIO14來進(jìn)行脈沖計數(shù)嗎?9170的IRQ1為GPIO10即CN13的11號針腳,光盤里有提供IRQ的例程,可用于脈沖計數(shù)。 不是我一定要用, 你們的數(shù)據(jù)手冊里寫了GPIO14是脈沖輸入啊,所以我硬件按照GPIO14來設(shè)計的。沒有相關(guān)API支持嗎? 如果用IRQ,可以用IRQ2嗎? |
單帖管理 | 引用 | 回復(fù) |
x10 |
6樓 |
Post By:2013-4-18 9:13:00 [只看該作者]
我們一般把可以支持的功能都寫出來,根據(jù)客戶的需要來完成。EM9170的GPIO14管腳確實(shí)可以支持硬件的脈沖寬度測量,當(dāng)然也可以計數(shù)。如果你的脈沖最小間隔是大于5ms(不是<5ms?)的話,采用外部中斷方式更簡單一些。脈寬測量的驅(qū)動程序我們因?yàn)檫沒有客戶提出,所以還沒做。后續(xù)會盡快安排增加這個驅(qū)動的。
|
|
單帖管理 | 引用 | 回復(fù) |
yy |
7樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-18 9:45:00 [只看該作者]
我們的數(shù)據(jù)手冊里,IRQ1是GPIO10,對應(yīng)CN13的11號針腳。IRQ2是GPIO11,對應(yīng)CN13的12號針腳啊。
IRQ2是可以使用的,見光盤的IRQ例程,里面有段注釋的說明,要使用IRQ2需要調(diào)用SetIRQ(1);然后重啟板子,之后就可以正常調(diào)用IRQ2了,不需要再調(diào)用SetIRQ(1);了。
|
單帖管理 | 引用 | 回復(fù) |
chang |
8樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-19 4:36:00 [只看該作者]
我的應(yīng)用中需要對脈沖進(jìn)行計數(shù),脈沖的周期在5-10ms,占空比20%-80%。我不需要測量脈寬,只是要準(zhǔn)確計數(shù)。
我在評估板上測試了一下,用PWM1輸出占空比50%的方波,用IRQ1計數(shù),程序使用光盤中的例程稍加修改。發(fā)現(xiàn)PWM頻率在10Hz以上(100ms周期)IRQ計數(shù)就跟不上了,漏了很多。 IRQ1的驅(qū)動程序究竟能有多快的響應(yīng)? 另外,函數(shù)WaitForIRQ( HANDLE hIrq, DWORD dwTimeout )中的dwTimeout,按字面理解,應(yīng)該是超過此預(yù)設(shè)時間之后沒有接受到中斷就退出阻塞,對吧?單位是ms嗎?我試著設(shè)了一下,沒看出效果。
|
單帖管理 | 引用 | 回復(fù) |
x10 |
9樓 |
Post By:2013-4-19 9:00:00 [只看該作者]
我們原來的中斷計數(shù)判得太嚴(yán)格了。已修改了驅(qū)動,更新一下內(nèi)核,IRQ1是完全可以勝任你要求的脈沖計數(shù)功能的。請留一個郵件地址,我們把新的內(nèi)核發(fā)給你。謝謝。
|
|
單帖管理 | 引用 | 回復(fù) |
cx |
10樓 |
Post By:2013-4-19 9:58:00 [只看該作者]
chang:新內(nèi)核文件及相關(guān)資料已發(fā)您郵箱,請查收。 |
|
單帖管理 | 引用 | 回復(fù) |
chang |
11樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-20 6:07:00 [只看該作者]
程博士,曹工,yy各位,多謝支持!我把新內(nèi)核刷到板子上試了一下,似乎沒有明顯改善。
請幫忙看看究竟是哪里有問題。再次感謝!
|
單帖管理 | 引用 | 回復(fù) |
chang |
12樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-21 19:33:00 [只看該作者]
情況更新:
我一直是用remote display顯示屏幕數(shù)據(jù),昨天嘗試了不開remote display,直接將捕獲的中斷數(shù)量寫入一個文件再事后檢查,發(fā)現(xiàn)中斷數(shù)量基本正常了。 在200Hz以上明顯開始有偏差,但由于確切的脈沖數(shù)量我手頭沒有工具測量(完全依賴于板上PWM輸出頻率和時間計算),所以并不確定是中斷響應(yīng)不上還是脈沖數(shù)本來就是那么多。 無論如何,從目前單個線程的情況來看應(yīng)該可以滿足項(xiàng)目的要求了。接下來會繼續(xù)測試,也請英創(chuàng)的各位幫忙準(zhǔn)確測試脈沖的捕獲響應(yīng)實(shí)時性。 多謝各位!
|
單帖管理 | 引用 | 回復(fù) |
chang |
13樓 信息 | 搜索 | 郵箱 | ||||||||||||||||||||||||||||||||
加好友 發(fā)短信 |
Post By:2013-4-21 19:35:00 [只看該作者]
結(jié)果列表:
|
||||||||||||||||||||||||||||||||
單帖管理 | 引用 | 回復(fù) |
yy |
14樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-22 9:30:00 [只看該作者]
你的意思是你每收到一個中斷就用printf打印到屏幕上,然后通過遠(yuǎn)程桌面查看結(jié)果嗎?
這樣是一定會有問題的,因?yàn)閜rintf打印的命令行每次變動都會重新刷新一次屏幕,正常的屏幕刷新10幾次到20幾次,當(dāng)你一秒嘗試刷新200來次是一定會導(dǎo)致CPU資源不夠用的。你要么降低下屏幕打印的頻率,要么用其他手段打印信息。
|
單帖管理 | 引用 | 回復(fù) |
chang |
15樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-23 0:50:00 [只看該作者]
我是收到所有中斷后一次性打印結(jié)果,不是收一個打一個。現(xiàn)在發(fā)現(xiàn)只要不開remote display就可以。只是條件所限,我現(xiàn)在還不能精確測試。
|
單帖管理 | 引用 | 回復(fù) |
yy |
16樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-23 16:33:00 [只看該作者]
遠(yuǎn)程桌面大概會占大概50%的CPU資源,當(dāng)CPU資源被全部消耗光就可能導(dǎo)致線程不能及時獲取中斷信息。
我們計劃添加一個方法讀取產(chǎn)生的中斷總數(shù),這樣即使沒有及時處理中斷事件,依然可能通過該函數(shù)獲得期間的中斷計數(shù)。
|
單帖管理 | 引用 | 回復(fù) |
chang |
17樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-24 3:33:00 [只看該作者]
如果能有這樣的函數(shù)就更好了,最好能提供兩個方法:一個讀取中斷總數(shù),一個將其清零以重新計數(shù)。
|
單帖管理 | 引用 | 回復(fù) |
yy |
18樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2013-4-24 9:36:00 [只看該作者]
最新內(nèi)核已經(jīng)修改了,我測試了下好的,你關(guān)注下我們網(wǎng)站,應(yīng)該會整理下發(fā)布信息及最新下載的。
hIRQ為IRQ句柄 DWORD len; int inum; ReadFile(hIRQ, &inum, 4, &len, NULL); 就可以讀出IRQ的總計數(shù)inum,每次調(diào)用ReadFile函數(shù),這個計數(shù)就會清0重新計數(shù)。這樣即使沒有及時調(diào)用WaitForIRQ響應(yīng)中斷事件,也能記錄IRQ中斷數(shù)。 [此貼子已經(jīng)被作者于2013-4-24 9:36:43編輯過]
|
單帖管理 | 引用 | 回復(fù) |