一些带睡眠模式的鼠标

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

亲爱的技术支持,
我正在使用我们自己的定制板,当我尝试将其切入外部睡眠模式时,我有一些局部。
My board into follow code when it wake up from external sleep:
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.
离线
最后一次露面:2个月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
Dear MT_dialog,

嗨mt_dialog,

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

谢谢杰里

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

嗨杰瑞,

Essentially it means that the LP_Hanlder took too much time to execute and the warning that you get means that it took more time for the BLE core to wake up that the calculated value. The sleep_lp_cycles is the programmed sleep amount before the ble core sleeps, the slp_period is the actual sleep measured when eventualy the device has woken up, so if the actual sleep is larger than the programmed then we have a problem (a missing BLE event).

SDK时祝福这样的工作,device calculates the sleep amount, and in that sleep amount the BLE_LP_Handler should be triggered, now if for any reason the LP_Handler delays execution the actual sleep period will be longer than the calculated one and than means that the device wont wake up in time in order to serve the BLE event. What you see doesn't have to do with the kernel timer or how much you instruct the device to sleep.

关于你如何解决问题,就像上面提到的那样,在设备唤醒时看到这种行为,并且中断被禁用但是
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,
我已经解决了我的问题。谢谢你的帮助。
The first problem of the warning of ASSERT_WARNING(0); before I put the Init of IIC device in the founction of periph_init() ,maybe IIC operational spend to much time,it makes some proble m.Now ,I set a flag and init the IIC devie in the while loop,it can work properly.
ISR的另一个问题,即我没有做一些正确的设置,我找到并解决了它们。
再次感谢你的帮助。