在BLE堆栈中禁用中断的最长时间是多少?
我正在使用DA14681开发套件(PRO)并使用PXP_Reporter示例。我修改了一个例子来添加一个hw_timer0和计时器ISR,我只需切换I / O线并查看O-Scope上的时段。定时器配置为每500微秒中断,但我在O范围上看到> 200微秒的抖动。但是,当我禁用PXP_Reporter任务时(注释出此任务的创建)时,此抖动会降低(〜20微秒)。
这是我的定时器配置的代码。如果定时器配置正确,请告诉我。
hw_timer0_init(null);
hw_timer0_set_clock_source(hw_timer0_clk_src_fast);
hw_timer0_set_fast_clock_div(hw_timer0_fast_clk_div_2);
hw_timer0_set_pwm_mode(hw_timer0_mode_clock);
hw_timer0_set_t0_reload(2000,2000);
hw_timer0_set_on_reload(200);
hw_timer0_register_int(timer0_interrupt_cb);
hw_timer0_enable();
关键词:
设备:
嗨Kvenkatraman,
问题是在BLE跌落到睡眠之前,它会禁用大约600us的中断,并且应该导致您所看到的抖动,即使您拥有设备始终处于BLE核心和其余系统以来,也会发生这种情况断电时分开。您可以尝试的是使用AD_BLE_STAY_ACTIVE(TRUE)这将强制BLE保持活动状态,并将减少通过睡眠和唤醒BLE引入的任何中断延迟。
谢谢mt_dialog.
添加“ad_ble_stay_active(true)”消除了抖动。
这是唯一的解决方法吗?如果是这样,那么功耗如何?
嗨Kvenkatraman,
是的,这是唯一有效的解决方法,就我所知,你必须让BLE核心始终醒来,以便在近距离记者的一些初步测量中,没有唤醒和睡觉的中断延迟。如果BLE保持活力并且没有在每个BLE活动中醒来,它额外约为0.4mA。
谢谢mt_dialog.