中断被禁用的最长时间

⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.wsdof.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
4个职位/0个新职位
最后一篇文章
克文卡特拉曼
离线
最后一次见到:3年11个月前
已加入:2017-05-03 22:26
中断被禁用的最长时间

BLE堆栈中禁用中断的最长时间是多少?

我使用的是DA14681开发工具包(PRO)和pxp\u报告器示例。我修改了这个示例以添加一个hw\u timer0,在timer ISR中,我只需切换一个I/O行并查看O-scope上的周期。定时器配置为每500微秒中断一次,但我看到o型示波器上的抖动大于200微秒。但是,当我禁用pxpƏreporter任务(注释掉了该任务的创建)时,这种抖动会减少(~20微秒)。

这是我的定时器配置代码。如果计时器配置正确,请告诉我。

hw\u timer0\u init(空);
设置时钟源(时钟快速);
计时器0设置快时钟div(计时器0快时钟div 2);
hw\定时器0\设置\ pwm\模式(hw\定时器0\模式\时钟);
计时器0设置0重新加载(20002000);
重新加载时设置计时器(200);
hw\u timer0\u register\u int(定时器中断\u cb);
hw_timer0_enable();

关键词:
设备:
MT\u对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2015-06-08 11:34
你好,克文卡特拉曼,

你好,克文卡特拉曼,

问题是,在BLE进入休眠状态之前,它会禁用中断约600us,这应该会导致您看到的抖动,即使设备始终处于活动状态,也会发生这种情况,因为BLE内核和系统的其余部分在断电时是分开的。您可以尝试使用adu table\u stay\u active(true),这将强制ble保持活动状态,并减少由休眠和唤醒ble引起的任何中断延迟。

谢谢你的对话

克文卡特拉曼
离线
最后一次见到:3年11个月前
已加入:2017-05-03 22:26
添加“ad\u ble\u stay\u active”

添加“ad\u ble\u stay\u active(true)”消除了抖动。

这是唯一的解决办法吗?如果是的话,耗电量呢?

MT\u对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2015-06-08 11:34
你好,克文卡特拉曼,

你好,克文卡特拉曼,

是的,就我所知,这是唯一有效的解决方法,您必须让BLE核心始终处于唤醒状态,以避免唤醒和睡眠的中断延迟,关于功耗,通过对近距离报告器的一些初步测量,如果BLE保持活动,并且在每个BLE事件中都没有醒来,那么它将额外增加约0.4mA。

谢谢你的对话