使用Contiki-OS处理TelosB的GIO引脚中断

时间:2016-01-14 12:52:51

标签: interrupt msp430 contiki sky

我正在尝试在Telosb中读取外部按钮中断。我正在使用GIO2来读取中断,并且它在轮询技术方面工作得很好,但我正在寻找更接近实际中断方法的东西。

参考TinyOS,有一个可以为此目的实现的HplMsp430Interrupt接口。我在Contiki-OS中找不到类似的东西。

更改引脚状态似乎不会触发任何事件,因为PROCESS_WAIT_EVENT没有响应。

1 个答案:

答案 0 :(得分:1)

TelosB上按钮的驱动程序已在Contiki中实现。无需在中断处理程序级别使用它,只需调用Contiki 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对您没有多大帮助。对于某些Contiki平台,有用于控制GPIO引脚的宏或函数,但不适用于msp430。所以你只需要使用编译器头中的I / O端口接口,并用ISR(PORT_NUMBER, function_name)声明中断处理函数,其中PORT_NUMBERPORT1PORT2(一个端口)支持中断处理程序。)

有关TelosB按钮中断处理程序如何实现的示例,请参阅contiki/cpu/msp430/button.c。它非常简单。