今天小编要和大家分享的是RF,无线相关信息,接下来我将从浅谈Contiki下进程与中断时序Bug解决方案,cc2650launchpad 运行contiki hello-world示例程序这几个方面来介绍。

RF,无线相关技术文章浅谈Contiki下进程与中断时序Bug解决方案cc2650launchpad 运行contiki hello-world示例程序

RF,无线相关技术文章浅谈Contiki下进程与中断时序Bug解决方案

几天前一个Bug,调试了2天才解决(已经有几年没有遇到过了),为此将该问题的原因和解决思路记载,以备忘和共享。生命有限,错误不能重犯。欢迎讨论,更欢迎您共享经验和智慧给我们。

需求引入:在无线组网通信中,为充分节能,Node一般需要深度睡眠,4秒内唤醒。Sink和Node通信时序如下

实现代码:基于Contiki操作系统的进程实现代码如下,其中PROCESS_YIELD()用于阻塞进程,等待信号。

/* Turn on RF to listen awake tone. */

NETSTACK_RADIO.on();

temptimer_Start(s_wWaitAwakeTime, InformTimeout);

PROCESS_YIELD();/* #1 阻塞进程,等待超时或接收到唤醒信号 */

if (PROCESS_EVENT_RX_AWAKE_TONE == ev) /* RX awake tone */

{

/* EXPLAIN: TIM is turned off by ISR of RF. */

temptimer_Start(s_wWaitDataTime, InformTimeout);

PROCESS_YIELD();/* #2 阻塞进程,等待超时或接收到数据帧 */

......

}

else /* Rx data that not to us */

{

......

}

错误原因:如下图所示,当node_process同时接收到2个信号时,上面代码的#2无法阻塞进程,导致出错。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查