lld_evt_time_get()返回0

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
8个职位/ 0个新职位
最后发表
BenjaminDu
离线
最后看到:4个月2个星期前
加入:2016-03-14 02:38
lld_evt_time_get()返回0

嗨,对话框中,

我发现有时lld_evt_time_get()返回0,这是怎么发生的?如何避免呢?

谢谢

便雅悯

12月22日

设备:
CYibin
离线
最后看到:9个月1个星期前
工作人员
加入:2017-12-14 02:48
你好,本杰明,

你好,本杰明,

在哪里调用lld_evt_time_get()函数?

应用程序可以安全地调用这个函数,同时:
1.BLE是活跃的
2.在应用了睡眠补偿之后。(这是必需的,因为lld_evt_time_get()读取在580休眠时未运行的计数器)。请注意,当BLE核心醒来时,SW完成了睡眠补偿。

Br

宜宾

BenjaminDu
离线
最后看到:4个月2个星期前
加入:2016-03-14 02:38
嗨,对话框中,

嗨,对话框中,

我使用了DSPS示例,并使用了一个计时器,间隔是160(0.625ms作为一个单位(timer0_set(20000, 0,0)))

代码如下:

空白timer_callback(空白)

arch_printf(“时间= % d \ r \ n”,lld_evt_time_get ());

输出如附件所示。

如附件,如果两个585(不是580如邮件)连接,输出是0,有时,有时不为0,如果不是0,160年间隔不完全,如果两个585不是connceted,输出是160,我的代码运行在主机端。

希望你能帮助分析为什么会发生这种情况以及如何避免它。

谢谢

便雅悯

2020年1月6日。

附件:
BenjaminDu
离线
最后看到:4个月2个星期前
加入:2016-03-14 02:38
嗨,对话框中,

嗨,对话框中,

简而言之,我的问题是在DSPS示例中,当两个585连接时,为什么有时lld_evt_time_get()返回0?

这个函数是在一个计时器中调用的。

谢谢

便雅悯

1月7日

PM_Dialog
离线
最后看到:1周5天前
工作人员
加入:2018-02-08 11:03
嗨BenjaminDu

嗨BenjaminDu

lld_evt_time_get()基于625us基准时间计数器度量时间,并返回BLE计时器的值。这个计数器没有稳定的时钟输入,但会根据设备是处于睡眠状态还是处于清醒状态而变化,并基于XTAL16和XTAL32测量从上电开始经过的时间。因此,测量的时间是从XTAL16,当睡眠时,在睡眠中流逝的时间通过XTAL32测量,并得到补偿,并应用到计时器时,设备是清醒的。您的设备是否一直处于激活状态,或者您正在使用任何睡眠模式?

谢谢,PM_Dialog

BenjaminDu
离线
最后看到:4个月2个星期前
加入:2016-03-14 02:38
嗨,对话框中,

嗨,对话框中,

非常感谢您的快速回复。

1)我只使用一个定时器来调用lld_evt_time_get(),我不改变睡眠模式,如果两个585连接,lld_evt_time_get()自动返回0和无0,你能看看我的邮件之前的最后吗?你能参考附件的输出吗?

2)我可以调用什么函数来返回当前的睡眠模式?当lld_evt_time_get()返回0和none 0时,我可以知道休眠模式。

谢谢

便雅悯

1月8日

BenjaminDu
离线
最后看到:4个月2个星期前
加入:2016-03-14 02:38
嗨,对话框中,

嗨,对话框中,

要测试睡眠模式,我可以调用任何函数来返回当前睡眠模式吗?当lld_evt_time_get()返回0和none 0时,我可以知道休眠模式。

谢谢

便雅悯

1月10日

PM_Dialog
离线
最后看到:1周5天前
工作人员
加入:2018-02-08 11:03
嗨BenjaminDu,

嗨BenjaminDu,

请将uder_config.h中的app_default_sleep_mode改为ARCH_SLEEP_OFF。请使用arch_get_sleep_mode() API来设置当前操作的睡眠模式。

谢谢,PM_Dialog