BLE堆栈中中断被禁用的最大时间是多少?
我使用DA14681 dev kit (PRO)和使用pxp_reporter的例子。我修改了示例,添加了一个hw_timer0,在计时器ISR中,我只是切换了一个I/O行,并查看O -scope上的周期。定时器被配置为每500微秒中断一次,但我在o-scope上看到>200微秒的抖动。但是,当我禁用pxp_reporter任务(注释掉该任务的创建)时,抖动会减少(约20微秒)。
这是我的定时器配置代码。让我知道定时器是否配置正确。
hw_timer0_init(空);
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,
祝福落在睡眠前的问题是,它禁用中断了600年美国应该导致抖动,你所看到的,即使你有设备发生以来一直活跃BLE核心和系统的其余部分分离,当电源关闭。您可以尝试的是使用ad_ble_stay_active(true),这将迫使BLE保持活动,并将减少由于睡眠和唤醒BLE而引入的任何中断延迟。
由于MT_dialog
添加“ad_ble_stay_active(true)”消除了抖动。
这是唯一的解决办法吗?如果是,功耗是多少?
嗨kvenkatraman,
是的,就我所知,这是唯一有效的解决方案,你必须让BLE核心始终保持清醒,以避免唤醒和睡眠的中断延迟,关于功耗,通过对接近报告器的一些初步测量,如果BLE保持活着,而不是在每一次BLE事件中醒来,它大约额外0.4mA。
由于MT_dialog