2013-03-25 31 views
-1

請給我這樣一個忠告:TinyOS的中斷handlling

我想,當信號從一個微塵發送的時間(我在想,當SFD引腳會從1到0,以產生一箇中斷)我沒有找到解決方案,但我發現這個組件: 組件:tos.chips.cc2420_tkn154.CC2420TransmitP

它提供cc2420tx,這似乎給我的時間需要。但我無法使用它,因爲默認情況下,它使用cc2420文件夾中的組件而不是cc2420_tkn154文件夾中的組件。

主要的想法是我想測量從發送信號到接收確認的時間。我需要微秒精度。所有這些將幫助我獲得兩個微粒之間的距離。

任何ideea都會有幫助。我找遍了:論壇,TinyOS的documentantion,例子...

謝謝:)

回答

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(); 

然而,當您重置微塵時,每個微塵的當地時間將重新開始。你將不得不同步不同的時間。如果你想計算motes之間的距離,這可能不是最好的方法。摘要引用this paper

部署的傳感器節點的位置可以通過TOA,TDOA或接收信號強度(RSS)測量來找到。

對於RSSI,有文件夾的TinyOS-2.1.1 /應用/教程在一個演示。