TinyOS中断处理

时间:2013-03-25 12:50:31

标签: tinyos nesc

请给我一个建议:

我想得到一个从微尘发送信号的时间(我想在SFD引脚从1变为0时产生中断)我没有找到解决方案,但我找到了这个组件: 组件:tos.chips.cc2420_tkn154.CC2420TransmitP

提供cc2420Tx的

似乎给了我一个需要的时间。但我无法使用它,因为默认它使用cc2420文件夹中的组件而不是cc2420_tkn154文件夹中的组件。

主要的想法是我想测量从发送信号到接收ack的时间。我需要Microsecond精度。所有这些都可以帮助我获得两个微粒之间的距离。

任何想法都会有所帮助。我搜遍了各地:论坛,tinyos documentantion,例子......

谢谢:)

1 个答案:

答案 0 :(得分:0)

我不知道你想得到多低级别,但是如果你有一个计时器,在nesC中你可以在每次计时器触发时获得当地时间:

uint32_t timestamp;

event void myTimer.fired() {

    timestamp = call myTimer.getNow();
    printf("Timestamp: %ld \n", timestamp);
}

如果您没有计时器,则可以使用组件LocalTimeMilliC。 将其添加到配置文件中:

components LocalTimeMilliC;
TestC.LocalTime -> LocalTimeMilliC;

......并在实施的模块部分:

uses interface LocalTime<TMilli>;

......并在代码中:

timestamp = call LocalTime.get();

但是,重置微尘时,每个微尘的当地时间将重新开始。您必须同步不同的时间。如果你想计算微粒之间的距离,这可能不是最好的方法。引用this paper的摘要:

  

部署的传感器节点的位置可以通过TOA,TDOA或接收信号强度(RSS)测量找到。

对于RSSI tinyos-2.1.1 / apps / tutorials 文件夹中有一个演示。