Contiki时钟时间模块不会更新

时间:2014-08-28 08:58:41

标签: c timer embedded sensor contiki

我正在尝试在Contiki定期生成一些样本。我使用ctimer来生成它,如下所示:

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())。看起来没有生成样本时不更新时钟时间。因此,我怀疑时钟模块在某些情况下不会更新。有没有人见过这个?如果是这样,可以解释原因吗?

1 个答案:

答案 0 :(得分:0)

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