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

英創信息技術工業主板EM9160介紹
英創信息技術嵌入式Linux工控板EM9160介紹

英創信息技術嵌入式Linux工控板EM9160介紹
英創信息技術工控主板EM9160介紹

評論