Timer1 configuration of prox_reporter causes dramatic power increase

⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.xmece.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
5 posts / 0 new
最后一篇文章
安德鲁尔
离线
Last seen:2 weeks 3 days ago
已加入:2020-11-05 02:45
Timer1 configuration of prox_reporter causes dramatic power increase

嗨,各位,

我可以设置prox\u reporter项目来执行广告超时并进入长时间睡眠。这很好——广告做了几次突发事件,然后进入长时间睡眠。我得到了大约1.6uA的电流。

但是,如果我设置“CFG\u EXT\u SLEEP\u WAKEUP\u TIMER1”并更改*其他内容*,我会在广告间隔处得到mA峰值,而且它永远不会停止。那不好。似乎timer1正在重置广告应该已经超时的事实。

我该怎么避免呢?

Thanks.

设备:
安德鲁尔
离线
Last seen:2 weeks 3 days ago
已加入:2020-11-05 02:45

好吧,用CFG\u EXT\u SLEEP\u WAKEUP\u Timer1启用Timer1并不是我想要的。Timer1只运行一次广告停止,然后立即唤醒BLE系统。

我想要的是Timer1一直在运行,不管BLE是在做广告、跑步还是其他什么。我想大约每15/16毫秒切换一次GPIO,不管BLE、non BLE、active、extended sleep等发生了什么,我不希望Timer1真的导致BLE重新启动。

因此,问题变成:

1) 我在timer1\u interrupt\u处理程序中设置了一个timer1\u标志,当它启动时,然后从\u sleep()调用app\u resume\u system\u。这样做对吗?

2) 我需要在configure\u timer1\u wakeup中调整reload\u val——我将其设置为16。这是我遇到的第一个怪事。无论我将reload\u值设置为什么值,我的示波器都会显示app\u resume\u system\u from\u sleep()中的处理程序在140.944ms到140.952ms之间触发。为什么u值没有影响?编辑:timer1配置了TIM1\u FREE\u RUN\u ON忽略重新加载值。切换到TIM1\u FREE\u RUN\u OFF修复了此问题。

3) 我必须在某个地方添加一个处理程序,最终查找timer1\u标志。我从睡眠()添加到应用程序恢复。是那个地方吗?

4) 我得做点什么防止布尔醒来。我试图在app\u resume\u from \u sleep()中检查计时器1\u标志是否已设置。如果是这样,我将跳过整个arch\u ble\u ext\u wakeup\u get()代码块。然而,这似乎是不够的,或者它可能是完全错误的地方。如果我看一下我的Keithley源表,我会看到这个系统在1秒的脉冲中产生了大约14uA的电流,安静的时间只有4秒。这看起来和我的广告参数(1秒/5秒)一模一样,所以我仍然在做一些能启动BLE系统的事情。我该怎么阻止呢?

Thanks.

PM_Dialog
离线
Last seen:2天11小时前
工作人员
已加入:2018-02-08 11:03
嗨,安德鲁,

嗨,安德鲁,

当播发在预定义的时间量后停止时,会配置计时器1–请参阅.advertise\u period和。用户配置文件中的高级场景。

当设备停止播发时,将触发app\u advertive\u complete()回调,并进行timer1配置-configure\u timer1\u wakeup()。

如果您检查count\u options配置结构,您将看到timer1 reload值设置为TIM1\u reload\u MAX(11位)。此外,输入时钟是低功耗时钟,特别是内部RCX(请参阅da1458x\u config\u advanced.h中的CFG\u LP\u CLK宏)

鉴于此,timer1_interrupt_hdlr()将triggered every : (1/15000) * 2^11 ~= 0.1365 sec or 136.5 msec.

当定时器1\u interrupt\u hdlr()被触发时,系统将从睡眠状态恢复。

>>我想大约每15/16毫秒切换一次GPIO,不管BLE、non BLE、active、extended sleep等发生了什么,我不希望Timer1真的导致BLE重新启动。

Probably you could change the timer1 reload value and in the timer1_interrupt_hdlr() toggle the GPIO

在SDK的proxèu reporter示例中,定时器1用于将DA14531从睡眠模式唤醒。因此,我的建议是从空的\u模板开始,在这个项目中移植Timer1配置。

Thanks, PM_Dialog

安德鲁尔
离线
Last seen:2 weeks 3 days ago
已加入:2020-11-05 02:45
The issue is that when the

问题是,当系统出于任何原因退出睡眠状态时,它会再次开始发布广告。因此,启用最大为136.5ms的定时器1可以有效地使系统从不离开广告模式。

PM_Dialog
离线
Last seen:2天11小时前
工作人员
已加入:2018-02-08 11:03
嗨,安德鲁,

嗨,安德鲁,

正如我在前面的评论中提到的,当广告停止时,timer1\u interrupt\u hdlr()将在136.5毫秒后启动。因此,芯片将休眠约136.5毫秒,然后再次唤醒。

Thanks, PM_Dialog