lld_evt_time_get()返回0

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

嗨,对话框中,

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

谢谢

便雅悯

12月22日

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

你好,本杰明,

在哪里调用lld_evt_time_get()函数?

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

Br

宜宾

BenjaminDu
离线
最后看到:3个月1天前
加入: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
离线
最后看到:3个月1天前
加入:2016-03-14 02:38
嗨,对话框中,

嗨,对话框中,

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

该函数在计时器中调用。

谢谢

便雅悯

1月7日

PM_Dialog
离线
最后看到:9小时53分钟前
工作人员
加入:2018-02-08 11:03
嗨BenjaminDu

嗨BenjaminDu

lld_evt_time_get()基于625us基准时间计数器测量时间,并返回BLE计时器的值。该计数器没有稳定的时钟输入,但会根据设备是否处于休眠或唤醒状态而变化,并根据XTAL16和XTAL32来测量从上电开始所经过的时间。因此,测量的时间来自XTAL16,当休眠时,通过XTAL32测量休眠期间经过的时间,并在设备醒来时得到补偿并应用于计时器。您的设备总是处于活动状态,还是正在使用任何睡眠模式?

谢谢,PM_Dialog

BenjaminDu
离线
最后看到:3个月1天前
加入:2016-03-14 02:38
嗨,对话框中,

嗨,对话框中,

非常感谢您的快速回复。

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

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

谢谢

便雅悯

1月8日

BenjaminDu
离线
最后看到:3个月1天前
加入:2016-03-14 02:38
嗨,对话框中,

嗨,对话框中,

为了测试睡眠模式,有什么功能我可以调用返回当前睡眠模式?当lld_evt_time_get()返回0和none返回0时,我可以知道睡眠模式。

谢谢

便雅悯

1月10日

PM_Dialog
离线
最后看到:9小时53分钟前
工作人员
加入:2018-02-08 11:03
嗨BenjaminDu,

嗨BenjaminDu,

请将uder_config.h中的app_default_sleep_mode修改为ARCH_SLEEP_OFF。请使用t arch_get_sleep_mode() API以便操作的当前睡眠模式。

谢谢,PM_Dialog