英創(chuàng)公司新近推出的嵌入式主板EM9160是一款專門面向工業(yè)智能設(shè)備的高性價(jià)比ARM9+WinCE平臺(tái),該工控主板不僅配置了常規(guī)的標(biāo)準(zhǔn)通訊接口,如以太、串口、USB,而且還配置了當(dāng)前智能控制設(shè)備中常用的SPI、I2C以及脈寬調(diào)制輸出PWM,以及精簡(jiǎn)ISA總線和外部中斷,以方便客戶做專用電路的擴(kuò)展。本文主要介紹EM9160的外部中斷使用上的特色,以幫助客戶能快速完成自己的產(chǎn)品開發(fā)。
EM9160的精簡(jiǎn)ISA擴(kuò)展總線,包括了2路獨(dú)立的外部硬件中斷輸入ISA_IRQ1和ISA_IRQ2,平時(shí)輸入電平應(yīng)為低,當(dāng)外部設(shè)備產(chǎn)生中斷時(shí),ISA_IRQ1或ISA_IRQ2變高,其上升沿將觸發(fā)中斷,在系統(tǒng)對(duì)中斷進(jìn)行響應(yīng)前,中斷請(qǐng)求信號(hào)需保持為高。當(dāng)應(yīng)用程序?qū)ν庠O(shè)進(jìn)行相應(yīng)的中斷響應(yīng)處理后,ISA_IRQ1或ISA_IRQ2應(yīng)返回常規(guī)的低電平狀態(tài)。
在WinCE下對(duì)于中斷的處理是一個(gè)相對(duì)比較復(fù)雜的過程,當(dāng)一個(gè)硬件中斷發(fā)生時(shí),首先是系統(tǒng)內(nèi)核對(duì)中斷進(jìn)行診別,再啟動(dòng)相應(yīng)中斷服務(wù)例程來處理這個(gè)中斷,在具體實(shí)現(xiàn)中斷處理的過程中,需要調(diào)用系統(tǒng)提供的中斷相關(guān)的函數(shù),就涉及到內(nèi)核函數(shù)的調(diào)用。而用戶在使用eVC等工具軟件進(jìn)行應(yīng)用程序開發(fā)時(shí),是不能直接調(diào)用這些內(nèi)核函數(shù)的。針對(duì)這一情況,為了方便客戶對(duì)于外部中斷的使用,英創(chuàng)公司設(shè)計(jì)完成了在內(nèi)核中直接加載外部中斷的驅(qū)動(dòng)程序,一旦中斷事件發(fā)生,驅(qū)動(dòng)程序的中斷線程將響應(yīng)硬件中斷同時(shí)產(chǎn)生一個(gè)事件,以通知上層的用戶模式線程。按照這種方式導(dǎo)出一個(gè)定制的用戶接口(共4個(gè)函數(shù)),用戶只需要在應(yīng)用軟件中直接調(diào)用這些定制的接口函數(shù)即可方便地實(shí)現(xiàn)對(duì)于中斷的應(yīng)用處理,下面就介紹這些相關(guān)的接口函數(shù)。
(1)HANDLE InstallExternIRQ( DWORD dwIRQNo );
功能描述:安裝啟動(dòng)ISA總線外部中斷。
輸入?yún)?shù) dwIRQNo: 需要啟動(dòng)安裝的外部中斷號(hào),輸入值為1或2,分別對(duì)應(yīng)ISA總線上的IRQ1和IRQ2。
返回值 = NULL: 安裝ISA總線外部中斷失敗。 != NULL: 啟動(dòng)ISA總線外部中斷返回的句柄。
(2)HANDLE GetExternIRQEvent( HANDLE hIRQ );
功能描述:獲取ISA總線外部中斷的中斷事件。
輸入?yún)?shù) hIRQ: 調(diào)用函數(shù)InstallExternIRQ( )所返回的外部中斷句柄。
返回值 = NULL: 操作失敗。 != NULL:ISA總線外部中斷的中斷事件。
(3)BOOL EnableExternIRQ( HANDLE hIRQ );
功能描述:使能ISA總線外部中斷,允許下一次的中斷。
輸入?yún)?shù) hIRQ:函數(shù)InstallExternIRQ( )所返回的外部中斷句柄。
返回值 = TRUE:操作成功。 = FASLE:操作失敗。
(4)BOOL UninstallExternIRQ( HANDLE hIRQ );
功能描述:卸載關(guān)閉ISA總線外部中斷。
輸入?yún)?shù) hIRQ:函數(shù)InstallExternIRQ( )所返回的外部中斷句柄。
返回值 = TRUE:操作成功。 = FASLE:操作失敗。
這四個(gè)函數(shù)定義在IRQ_API.h文件下,相應(yīng)的IRQ_API.LIB已經(jīng)直接打包在SDK中,用戶直接安裝嵌入式工控主板EM9160的SDK文件即可。
作為應(yīng)用程序來說,可以通過函數(shù)InstallExternIRQ( … )來啟動(dòng)外部中斷,并通過GetExternIRQEvent( … )獲取中斷事件的句柄。應(yīng)用程序應(yīng)創(chuàng)建一個(gè)處理對(duì)應(yīng)的外部中斷處理線程,該線程等待中斷事件來觸發(fā),一般用WaitForSingleObject( )來等待事件被觸發(fā),當(dāng)硬件中斷發(fā)生時(shí),用戶處理線程就可以完成必要的I/O操作來采集數(shù)據(jù)或處理數(shù)據(jù)了,再調(diào)用函數(shù)EnableExternIRQ( )再次開啟硬件中斷。
典型的應(yīng)用程序中斷處理線程如下:
DWORD WINAPI CEM9160_IRQ::IRQThreadFunc(LPVOID lparam)
{
CEM9160_IRQ *lpIRQ = (CEM9160_IRQ*)lparam;
for( ; ; )
{
WaitForSingleObject( lpIRQ-》hIRQEvent, INFINITE ); // 等待硬件中斷事件
ExIRQHandler( ); // 硬件中斷事件處理,用戶可在此函數(shù)中添加中斷處理代碼
EnableExternIRQ( lpIRQ-》hIRQ ); // 再次開啟硬件中斷
}
}
需要注意的是,當(dāng)具體的中斷處理函數(shù)ExIRQHandler( )執(zhí)行完畢時(shí),硬件中斷請(qǐng)求輸入ISA_IRQ1或ISA_IRQ2的電平已回到低電平狀態(tài),并確保在系統(tǒng)再次使能外部中斷前一直保持為低,即函數(shù)EnableExternIRQ( lpIRQ-》hIRQ )完成前一直保持為低,以防止中斷嵌套。
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6102瀏覽量
36307
發(fā)布評(píng)論請(qǐng)先 登錄
嵌入式工控主板EM9160的PWM功能
英創(chuàng)信息技術(shù)嵌入式工控主板EM9160的PWM功能使用方法
英創(chuàng)信息技術(shù)工控主板EM9360的GPIO介紹
英創(chuàng)信息技術(shù)工控主板EM9160L的低功耗應(yīng)用介紹
英創(chuàng)信息技術(shù)工控主板的復(fù)位管理介紹

英創(chuàng)信息技術(shù)工控主板EM9160對(duì)紅外通訊用途介紹

英創(chuàng)信息技術(shù)工業(yè)主板EM9160介紹
英創(chuàng)信息技術(shù)嵌入式Linux工控板EM9160介紹

英創(chuàng)信息技術(shù)嵌入式Linux工控板EM9160介紹
英創(chuàng)信息技術(shù)工控主板EM9160介紹

英創(chuàng)信息技術(shù)主板EM9160硬件介紹
英創(chuàng)信息技術(shù)主板EM9160實(shí)現(xiàn)波形數(shù)據(jù)采集

英創(chuàng)信息技術(shù)主板EM9160測(cè)頻功能的使用介紹
英創(chuàng)信息技術(shù)EM335x精簡(jiǎn)ISA擴(kuò)展總線地址總線介紹

評(píng)論