2016-01-14 57 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引脚上收到外部电压变化/中断的通知。感谢提到的端口接口,我会检查出来。 –