2016-01-14 54 views
0

我正嘗試讀取Telosb中的外部按鈕中斷。我使用GIO2來讀取中斷,並且它使用輪詢技術非常好,但我正在尋找更接近實際中斷方法的東西。使用Contiki-OS處理TelosB的GIO引腳中斷

提到TinyOS,有一個HplMsp430Interrupt接口可以實現這個目的。在Contiki-OS中我找不到類似的東西。

更改引腳狀態似乎不會觸發任何事件,因爲PROCESS_WAIT_EVENT不響應。

回答

1

Contiki已經實現了TelosB上按鈕的驅動程序。有沒有必要在中斷處理程序一級開展工作,使用它,只需調用API半自助旅遊旅行社:如果你在談論別的

#include "dev/button-sensor.h" 

PROCESS_THREAD(app_Process, ev, data) 
{ 
    PROCESS_BEGIN(); 

    SENSORS_ACTIVATE(button_sensor); 

    for(;;) { 
     PROCESS_WAIT_EVENT(); 
     if (ev == sensors_event && data == &button_sensor) { 
      puts("button clicked"); 
     } 
    } 
} 

,實際上需要實現你自己的中斷處理程序,然後半自助旅遊旅行社不會幫助你很多。對於某些Contiki平臺,有控制GPIO引腳的宏或函數,但不適用於msp430。因此,您只需使用編譯器標頭中的I/O端口接口,並使用ISR(PORT_NUMBER, function_name)聲明中斷處理函數,其中PORT_NUMBERPORT1PORT2(支持中斷處理程序的端口)。

有關如何實現TelosB按鈕中斷處理程序的示例,請參見contiki/cpu/msp430/button.c,它非常簡單。

+0

我已經檢查了按鈕傳感器的實現,這是很容易學習和使用的,但它對我的情況沒有幫助,因爲我需要在GIO引腳上收到外部電壓變化/中斷的通知。感謝提到的端口接口,我會檢查出來。 –