CH341DLL.BAS,為VB6.0開(kāi)發(fā)所使用的CH341基礎(chǔ)庫(kù),從DLL文件看,中斷入口函數(shù)為:CH341SetIntRoutine。
但整個(gè)函數(shù)的調(diào)用并沒(méi)有詳細(xì)說(shuō)明。
哪位大俠有用過(guò)此功能呢?
INT#是否得先初始化,然后怎么調(diào)用?
請(qǐng)指教,謝謝!
您好,使用此中斷功能時(shí),僅需要應(yīng)用程序注冊(cè)中斷服務(wù)函數(shù)即可。無(wú)需額外初始化動(dòng)作,注冊(cè)成功后,INT有低電平有效信號(hào)時(shí),會(huì)自動(dòng)觸發(fā)中斷服務(wù)函數(shù)。
我是用VB6.0進(jìn)行開(kāi)發(fā),根據(jù)DLL文件描述:
Declare Function CH341SetIntRoutine Lib "CH341DLL.DLL" (ByVal iIndex As Long, ByVal iIntRoutine As Long) As Boolean
'設(shè)定中斷服務(wù)程序
' 指定CH341設(shè)備序號(hào)
'指定中斷服務(wù)程序,為NULL則取消中斷服務(wù),否則在中斷時(shí)調(diào)用該程序
'? sub? mPCH341_INT_ROUTINE? (? ? ? ? ? ? ? 中斷服務(wù)程序
'? ? ? ? ? ? ?ULONG? ? ? ? ? ?iStatus )? ? ?中斷狀態(tài)數(shù)據(jù),見(jiàn)下行
' 位7-位0對(duì)應(yīng)CH341的D7-D0引腳
' 位8對(duì)應(yīng)CH341的ERR#引腳, 位9對(duì)應(yīng)CH341的PEMP引腳, 位10對(duì)應(yīng)CH341的INT#引腳, 位11對(duì)應(yīng)CH341的SLCT引腳
我只知這是一個(gè)中斷路由函數(shù),但上述的中斷服務(wù)程序與這路由函數(shù)之前怎么調(diào)用,我想不出來(lái)。
可以舉例說(shuō)明嗎?謝謝!
另外,從規(guī)格書(shū)描述,INT#是上升沿有效,不是低電平有效,能否幫忙確認(rèn)下,謝謝!
我修改了程序,目前只要INT#引腳有電平變化,都會(huì)進(jìn)入中斷。
但這與規(guī)格書(shū)描述不符合,不知問(wèn)題在哪?
另外,進(jìn)入中斷后,怎么確認(rèn)是哪個(gè)信號(hào)引起的中斷呢?
您好,關(guān)于如上問(wèn)題,INT#腳使用不依賴(lài)于其他硬件信號(hào),中斷觸發(fā)僅需要給INT#腳有效的上升沿信號(hào)即可。
關(guān)于中斷狀態(tài)的說(shuō)明,是芯片額外支持中斷到來(lái)的時(shí)候主動(dòng)上報(bào)一次有關(guān)IO口的電平狀態(tài)。(該狀態(tài)可用可不用)?
從CH341DLL.BAS看,中斷服務(wù)程序感覺(jué)不像VB6.0的語(yǔ)法,而規(guī)格書(shū)的的描述看,也不像VB6.0
我現(xiàn)在想不出用VB6.0怎么編寫(xiě)中斷服務(wù)函數(shù),能否給力點(diǎn),直接給個(gè)VB6.0的中斷服務(wù)程序案例,非常感謝!
您好,可聯(lián)系我司技術(shù)人員溝通下使用細(xì)節(jié),聯(lián)系方式已私信。
謝謝!
現(xiàn)描述下我的應(yīng)用及問(wèn)題(使用VB6.0開(kāi)發(fā)平臺(tái),DLL文件為:CH341DLL.BAS):
1) INT#作為外部觸發(fā)信號(hào),當(dāng)來(lái)一個(gè)上升沿時(shí)觸發(fā),進(jìn)入中斷服務(wù)程序。
? ? 這個(gè)中斷服務(wù)程序的入口從DLL文件看是CH341SetIntRoutine。
? ?目前我調(diào)用了這個(gè)函數(shù),可以進(jìn)入中斷,但不管是上升沿或下降沿,都可進(jìn)入中斷。
? ?但進(jìn)入中斷后,我無(wú)法判定是上升沿進(jìn)入或下降沿進(jìn)入,要怎么判斷呢?
2)在中斷服務(wù)程序中,我采用CH341GetStatus獲取狀態(tài),但這個(gè)狀態(tài)與規(guī)格書(shū)描述的好像不大一樣。
? ?在INT#接地時(shí),讀出來(lái)的數(shù)據(jù)為 8449023,而INT#懸空(有內(nèi)部上拉),讀出來(lái)的值為08450047。
? ?根據(jù)規(guī)格書(shū)描述,INT#對(duì)應(yīng)的是bit11,但上述兩個(gè)數(shù)據(jù)的bit11都為0,即一樣。
3)假設(shè)我不用CH341GetStatus獲取狀態(tài),改用CH341ReadInter獲取中斷狀態(tài),則讀出來(lái)的數(shù)據(jù)又不一樣。
? ?當(dāng)INT#接地時(shí),讀出來(lái)的數(shù)據(jù)為3071,當(dāng)INT#懸空(有內(nèi)部上拉),讀出來(lái)的值為4095,但這兩個(gè)數(shù)據(jù)的bit11也一樣,都??
? 為0.
4)CH341GetStatus與CH341ReadInter在使用上有什么差異呢
以上煩請(qǐng)幫忙解答,謝謝!
您好,
如溝通,關(guān)于如上問(wèn)題說(shuō)明如下:
1、芯片僅支持上升沿觸發(fā)中斷,當(dāng)注冊(cè)中斷服務(wù)函數(shù)后,中斷事件來(lái)臨會(huì)自動(dòng)調(diào)用中斷服務(wù)函數(shù),并且中斷觸發(fā)時(shí)會(huì)返回iStatus狀態(tài)。此變量中可以直接讀取芯片的IO口電平狀態(tài)(1為高電平,0為低電平);
2、使用CH341GetStatus、CH341ReadInter、CH341GetInput等主動(dòng)獲取的GPIO狀態(tài)和中斷服務(wù)函數(shù)返回的iStatus均可用于指示IO口輸入電平狀態(tài),其區(qū)別是:CH341GetStatus和CH341GetInput獲取GPIO狀態(tài)支持的IO更多,其余2種僅低12位可用(BIT0-BIT11);
3、已提供完整VB測(cè)試?yán)探o您,可同比測(cè)試驗(yàn)證;
謝謝支持!
非常給力,已經(jīng)大概怎么中斷怎么進(jìn)入,狀態(tài)怎么獲取了。
非常感謝1