一些带睡眠模式的鼠标

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
5个职位/0个新职位
最后一篇
2455321262
离线
最后一次露面:2年7个月前
加入: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.
离线
最后一次露面:3个月1日前
职员
加入:2015-06-08 11:34
嗨杰瑞,

嗨杰瑞,

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

谢谢mt_dialog.

2455321262
离线
最后一次露面:2年7个月前
加入:2017-01-22 06:43
亲爱的MT\u dialog,

嗨mt_dialog,

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

谢谢杰里

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

嗨杰瑞,

从本质上说,这意味着LP\u handler花了太多的时间来执行,而您得到的警告意味着BLE core花了更多的时间来唤醒计算出的值。sleep\u lp\u cycles是ble核心睡眠前的编程睡眠量,slp\u period是设备最终醒来时测量的实际睡眠时间,因此如果实际睡眠时间大于编程睡眠时间,则存在问题(ble事件丢失)。

当涉及到BLE时,SDK是这样工作的,设备计算睡眠量,在这个睡眠量中,BLE\u LP\u处理程序应该被触发,现在,如果LP\u处理程序由于任何原因延迟执行,那么实际的睡眠时间将比计算的睡眠时间长,这意味着设备不会及时醒来以服务于BLE事件。您看到的内容与内核计时器或您指示设备睡眠的程度无关。

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

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

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

谢谢mt_dialog.

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

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