2014-08-28 63 views
0

我想在Contiki中定期生成一些样本。我用CTIMER生成它,如下所示:Contiki时钟模块不更新

PROCESS_THREAD(null_app_process, ev, data) 
{ 
    PROCESS_BEGIN(); 
    printf("Sine Wave Started\n"); 

    app_conn_open(&nullApp_callback); 

    if (node_id != 0) 
    { 
     ctimer_set(&ct,102,sample_fun,(void*)NULL); 
    } 
    PROCESS_END(); 
} 

static void sample_fun(void) 
{ 
    int8_t data_buf[6] = {0}; 
    uint8_t i; 
    for(i = 0; i < 6; i++) 
    { 
     data_buf[i] = sinI(counter); 
     counter++; 
    } 
    app_conn_send((uint8_t *)data_buf,6*sizeof(int8_t)); 
    ctimer_reset(&ct); 

} 

然而,并不周期性地产生的样品中,如从下面的日志看出:

TDMA RDC: SN sends 52, 12 bytes 14202 
0,165,16, 
TDMA RDC: SN sends 53, 18 bytes 14458 
0,166,16, 
TDMA RDC: SN sends 54, 12 bytes 14714 
0,167,16, 
TDMA RDC: SN sends 55, 18 bytes 14970 
0,168,16, 
TDMA RDC: SN sends 56, 12 bytes 15226 
0,169,16, 
TDMA RDC: SN sends 57, 18 bytes 15482 
0,170,16, 
TDMA RDC: SN sends 58, 12 bytes 15738 
0,171,16, 
TDMA RDC: SN sends 59, 18 bytes 15994 
0,172,16, 
TDMA RDC: SN sends 60, 12 bytes 16250 
0,173,16, 
TDMA RDC: SN sends 61, 0 bytes 16257 
0,174,16, 
TDMA RDC: SN sends 62, 0 bytes 16257 
0,175,16, 
TDMA RDC: SN sends 63, 0 bytes 16257 
0,176,16, 
TDMA RDC: SN sends 64, 0 bytes 16257 
0,177,16, 
TDMA RDC: SN sends 65, 0 bytes 16257 
0,178,16, 
TDMA RDC: SN sends 66, 0 bytes 16257 
0,179,16, 
TDMA RDC: SN sends 67, 0 bytes 16257 
0,180,16, 
TDMA RDC: SN sends 68, 0 bytes 16257 
0,181,16, 
TDMA RDC: SN sends 69, 18 bytes 16506 
0,182,16, 
TDMA RDC: SN sends 70, 12 bytes 16762 
0,183,16, 
TDMA RDC: SN sends 71, 18 bytes 17018 
0,184,16, 
TDMA RDC: SN sends 72, 12 bytes 17274 
0,185,16, 
TDMA RDC: SN sends 73, 18 bytes 17530 

当生成的样品中,SN发送几个字节。当样本未生成时,SN发送零字节。行尾的数字是时钟时间(clock_time())。看起来像没有生成样本时钟时间没有更新。因此,我怀疑时钟模块在某些情况下不会更新。有没有人见过这个?如果是这样,可以解释原因?

+0

哪个版本的Contiki?哪个硬件平台?这个补丁可能是相关的:https://github.com/contiki-os/contiki/pull/727另一方面,它看起来像你的时钟模块停留时间超过2秒,所以还有其他一些问题。 – kfx 2014-08-28 09:41:08

+0

@kfx谢谢!我认为你的建议是正确的。 – cloudfarm 2014-08-28 15:55:32

+0

很高兴能有所帮助。 – kfx 2014-08-28 18:47:40

回答

0

我正在使用Sky mote。给出的建议@kfx修复了这个问题。在我的代码中,冻结的时间恰好是2秒(我使用1024个ticks作为一秒,传输周期为1/4秒)。由@kfx(github.com/contiki-os/contiki/pull/727)给出的补丁修复了这个问题,这是由于MSP430 f1xxx的模块不正确。