一些带睡眠模式的鼠标

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
5个职位/ 0个新
最后一篇
2455321262
离线
最后一次露面:2年8个月前
加入:2017-01-22 06:43
一些带睡眠模式的鼠标

亲爱的技术支持,
我正在使用我们自己的定制板,当我尝试将其切入外部睡眠模式时,我有一些局部。
我的董事会进入遵循代码时,它从外部睡眠:
if((development_debug)&&(use_power_optimizations))

slp_period_retated = slp_period;
//如果此断言命中,则LP ISR持续时间长于时间
//已通过LP_ISR_TIME_XTAL32_CYCLES和LP_ISR_TIME_USEC保留。
if(sleep_lp_cycles &&(sleep_lp_cycles
assert_warning(0);//(它进入此处)


我不知道为什么它会到来,是我的中断功能占用太多时间吗?
我评论了development_debug的宏跳出来。看起来没问题,我不知道我是对的。
当系统运行一次唤醒后,它无法触发中断。(它是一个来自一个GPIO引脚的外部中断),同时我的串行中断无法触发。
你能给我一些建议吗?

谢谢杰里

设备:
mt_dialog.
离线
最后一次露面:4个月5天前
职员
加入:2015-06-08 11:34
嗨杰瑞,

嗨杰瑞,

您是否通过禁用中断而更改了ble_wakeup_lp_handler或延迟BLE唤醒?如果你到那里,这意味着你花了太多时间睡觉,你不会准时醒来,所以SDK警告你。如果580是活动的(没有BLE核心活动),则可能会发生这种情况(无BLE核心活动),并且它为BLE核心唤醒的时间唤醒,因此在禁用中断时的LP_Handler时的时间,因此ISR延迟执行(在某些时候,中断被启用,但处理程序未按时执行),这意味着设备睡眠时间长于定义的时间,并且发生断言。如果删除断言,如果设备已连接,则会松开活动,这可能是一个问题,因为它可以轻松地删除连接。

谢谢mt_dialog.

2455321262
离线
最后一次露面:2年8个月前
加入:2017-01-22 06:43
亲爱的MT_dialog,

嗨mt_dialog,

感谢您的回复。
我确定我没有用ble_wakeup_lp_handler做出任何改变,没有延迟唤醒ble的唤醒(代码是dsps的例程,如果它不在上面提到的两个点上运行)
我不是很容易理解你的描述。这意味着我的设备睡到了很多时间?它会影响我的ISR?在我的理解中,内核定时器溢出将触发中断,我将一个计时器设置为系统时基础。所以每1秒钟将醒来,我不认为这是睡眠很长。我可以解决这个问题问题?
另一个问题是使用ISR.IS BLE_WAKEUP_LE_HANDLER函数在启用全局中断后使用?为什么不能使用其他中断,或者它无法执行ISR?(或因为睡眠时间太长了?)
我觉得很困惑。

谢谢杰里

mt_dialog.
离线
最后一次露面:4个月5天前
职员
加入:2015-06-08 11:34
嗨杰瑞,

嗨杰瑞,

本质上,这意味着lp_handlder花费了太多的时间来执行,而您得到的警告意味着BLE内核需要更多的时间来唤醒计算出的值。sleep_lp_cycles是ble核心休眠前编程的睡眠量,slp_period是设备最终唤醒时测量的实际睡眠,所以如果实际睡眠大于编程的睡眠,那么我们就有问题(丢失ble事件)。

当涉及到BLE时,SDK是这样工作的,设备计算睡眠量,在睡眠量中应该触发BLE_LP_Handler,现在,如果由于任何原因,LP_Handler延迟了执行,实际的睡眠时间将比计算的时间长,这意味着设备不会及时唤醒来服务BLE事件。您所看到的与内核定时器或您指示设备休眠多少无关。

关于你如何解决问题,就像上面提到的那样,在设备唤醒时看到这种行为,并且中断被禁用但是
BLE Core正在睡觉,因此如果它的BLE核心唤醒的时间LP_Handler不会在那时执行,直到中断被重新启用,因此设备
自从BLE核心并没有及时醒来,将错过BLE活动。所以请检查您是否手动禁用代码的任何部分中的中断。

我不太得到最后一个问题,所以将解释唤醒如何发生唤醒,当设备跌至睡眠时,它会禁用中断的WFI()(这意味着中断,但是处理程序不会被调用),因此,在BLE_LP中断中,M0将唤醒,并且它将执行的第一个命令是启用中断,以便为LP_Handler提供服务。

此外,在检查上述任何内容之前,请尝试此操作并检查此工作是否适用于将Bandgap_reg的LDO_RET_TRIM设置为在设备进入时循环之前的值9。

谢谢mt_dialog.

2455321262
离线
最后一次露面:2年8个月前
加入:2017-01-22 06:43
嗨mt_dialog,

嗨mt_dialog,
我已经解决了我的问题。谢谢你的帮助。
ASSERT_WARNING(0)警告的第一个问题;在我把IIC设备的Init放到外围的函数()之前,可能IIC操作花费了很多时间,这造成了一些问题。现在,我在while循环中设置一个标志并初始化IIC设备,它可以正常工作。
ISR的另一个问题,即我没有做一些正确的设置,我找到并解决了它们。
再次感谢你的帮助。