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())。看起来像没有生成样本时钟时间没有更新。因此,我怀疑时钟模块在某些情况下不会更新。有没有人见过这个?如果是这样,可以解释原因?
哪个版本的Contiki?哪个硬件平台?这个补丁可能是相关的:https://github.com/contiki-os/contiki/pull/727另一方面,它看起来像你的时钟模块停留时间超过2秒,所以还有其他一些问题。 – kfx 2014-08-28 09:41:08
@kfx谢谢!我认为你的建议是正确的。 – cloudfarm 2014-08-28 15:55:32
很高兴能有所帮助。 – kfx 2014-08-28 18:47:40