嗨伙计,
我可以设置prox_reporter项目,以便进行广告超时并转到延长睡眠状态。这很好 - 广告做了几次爆发,然后延长睡眠。我在大约1.6ua的某个地方左右。
但是,如果我设置了“cfg_ext_sleep_wakeup_timer1”并更改*没有别的*,我在广告间隔内得到ma尖峰,它永远不会停止。这不好。似乎Timer1正在重置广告应该超时的事实。
我如何避免这种情况?
Thanks.
设备:
嗨伙计,
我可以设置prox_reporter项目,以便进行广告超时并转到延长睡眠状态。这很好 - 广告做了几次爆发,然后延长睡眠。我在大约1.6ua的某个地方左右。
但是,如果我设置了“cfg_ext_sleep_wakeup_timer1”并更改*没有别的*,我在广告间隔内得到ma尖峰,它永远不会停止。这不好。似乎Timer1正在重置广告应该超时的事实。
我如何避免这种情况?
Thanks.
好的,使用cfg_ext_sleep_wakeup_timer1启用timer1真的不做我想要的。Timer1只运行一旦广告停止,然后它立即唤醒BLE系统。
我想要的是timer1运行*始终*是否是广告,运行或其他任何东西。我想大致每15/16ms切换一个GPIO,无论有什么,不合适,无效,延长睡眠等,我都不会*不希望Timer1实际上导致BLE重新启动。
所以,问题成为:
1)我在Timer1_Interrupt_Handler中设置了一个Timer1_Flag,当它触发时,然后调用app_resume_system_from_sleep()。是正确的事情吗?
2)我需要在configure_timer1_wakeup中调整reload_val - 我将它设置为16.这是我命中的第一个奇怪。无论我设置reload_value的值,我的示波器都显示在app_resume_system_from_sleep()中的处理程序触发140.944ms至140.952ms之间的某个位置。为什么Reload_Value没有影响?编辑:Timer1配置了忽略RELOAD_VAL的TIM1_FREE_RUN_ON。切换到TIM1_FREE_RUN_OFF修复了此问题。
3)我必须在某个地方添加一个最终寻找Timer1_Flag的处理程序。我将其添加到app_resume_from_sleep()。那是正确的地方吗?
4)我必须做点什么来防止耙击中。我试图在app_resume_from_sleep()是否被设置。如果是这样,我跳过整个ARCH_BLE_EXT_WAKEUP_GET()代码块。然而,这似乎似乎是足够的,似乎可能是错误的地方。如果我看着我的Keithley Sourcemeter,我会看到系统在1秒钟内拉出大约14ua的电流,安静时期为4秒。这看起来与我的广告参数(1SEC / 5SEC)完全相同,所以我还在做一些掀起BLE系统的事情。我该怎么办?
Thanks.
嗨安德鲁尔,
在预定义的时间之后停止广告时,Timer1被配置 - 请参阅.Advertise_Period和。user_config文件中的adv_scenario。
当设备停止广告时,触发App_Advertise_Complete()回调,并且Timer1配置发生 - configure_timer1_wakeup()。
如果检查Count_Options配置结构,您将看到Timer1重载值设置为Tim1_Reload_max(11位)。此外,输入时钟是低功耗时钟,具体是内部RCX(参见DA1458x_Config_Advanced.h中的CFG_LP_CLK宏)
鉴于此,timer1_interrupt_hdlr()将triggered every : (1/15000) * 2^11 ~= 0.1365 sec or 136.5 msec.
触发Timer1_Interrupt_hdlr()时,系统从睡眠状态恢复。
>>我想大致每15/16ms切换GPIO,无论发生在BLE,非BLE,活动,延长的睡眠等内容,I *不希望Timer1实际导致BLE重新启动。
Probably you could change the timer1 reload value and in the timer1_interrupt_hdlr() toggle the GPIO
在SDK的Prox_reporter示例中,定时器1用于从睡眠模式唤醒DA14531。因此,我的推荐将以empty_peripheral_template开头,并在此项目中端口Timer1配置。
Thanks, PM_Dialog
问题是,当系统出于任何原因退出睡眠状态时,它会再次开始广告。因此,能够有效地使得最大值为136.5ms的Timer1使得系统永远不会留下广告模式。
嗨安德鲁尔,
如我之前的评论中所提到的,Timer1_interrupt_hdlr()将在〜136.5毫秒后启动,当广告已停止时。因此,芯片将睡觉〜136.5毫秒,然后它会再次醒来。
Thanks, PM_Dialog