投放关于数据中断ADC功能

了解更多常见问题解答教程

6个帖子/ 0新
最后一篇
巴拉吉
离线
最后一次露面:3周5天前
加入:2019年12月6日06:48
投放关于数据中断ADC功能

嗨对话框,

我从以下螺纹的跟进查询

https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bluetooth-low-energy-%E2%80%93-software/ultrasonic-interface-using-timer

//我的ADC配置adc_config_t echo_pin_cfg = {.input_mode = ADC_INPUT_MODE_SINGLE_ENDED,。输入= ADC_INPUT_SE_P0_6,.smpl_time_mult = 15,。连续=真,.interval_mult = 0,.input_attenuator = ADC_INPUT_ATTN_4X,.chopping =假,.oversampling = 7};adc_init(&echo_pin_cfg);//示例ISR代码空隙timer_0_isr(){如果((计数器%4)== 0)//约每50微秒{adc_count = adc_get_sample();的sprintf((字符*)tempbuff, “%d,%d \ n” 个,adc_count,计数器);uart_send(UART2,(uint8_t *)tempbuff,strlen的(tempbuff),UART_OP_BLOCKING);}计数器++;}

供参考:定时器0 ISR重载值是12.5微秒

项目使用:ble_app_peripheral.

当我试图调试我的应用程序时,我得到了来自我的ADC频道的垃圾值, 什么时候BLE开始广告。否则我得到了所需的ADC计数。这对每个人重复3.秒为BLE间隔被设定在该值user_peripheral.h.当我关闭ADV PACKETS通过环境

//默认处理程序操作为static const结构default_app_operations user_default_app_operations = {.default_operation_adv = NULL,// PREVIOUSLY ITS定义为user_app_adv_start};

user_callback_config.h我从我的ADC频道获得了正确的输出。

P.S.检查附加文件和做要紧。

我需要澄清为什么BLE ADV定时器中断ADC通道,如何克服呢?

布罗尔,

巴拉吉。

关键词:
设备:
PM_Dialog
离线
最后一次露面:5小时34分钟前
职员
加入:2018年2月8日11:03
嗨BALAJI,

嗨BALAJI,

谢谢你的帖子。

您能否说明您使用的BLE设备?它是DA14580(根据您的初始帖子)或DA14531微小模块(根据您之前的帖子)吗?

您是否使用任何可用的睡眠模式?什么是user_config.h头文件中app_default_sleep_mode变量的值?

请记住,设备可以在间隔(广告或连接)之间睡眠。当芯片睡觉时,所有包括ADC,UART和定时器的外围域都会断电。

您可以使用app_easy_timer(),因为它是使用BLE定时器和处于休眠模式下可用。

在user_app_adv_start(),您也可以禁用app_adv_data_update_timer_used定时器,该调度下广告数据的更新。

谢谢,PM_Dialog

巴拉吉
离线
最后一次露面:3周5天前
加入:2019年12月6日06:48
嗨对话框,

嗨对话框,

抱歉回复晚了/

我正在使用DA14531模块,用于开发使用开发套件 - USB

我的睡眠配置

/ ****************************************** *默认休眠模式。可能的值是:*  -  * ARCH_SLEEP_OFF  -  ARCH_EXT_SLEEP_ON *  -  * ARCH_EXT_SLEEP_OTP_COPY_ON **************** * /静态常量sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF;

我有回复的疑问,

1.什么是ble_adv_interval?从下面的配置(user_peripheral.h)

/ *计时器的持续时间为连接参数更新请求* /#定义APP_PARAM_UPDATE_REQUEST_TO(1000)// 1000 * 10毫秒= 10秒,最大允许值是41943sec(4194300分* 10毫秒)/ *广告数据更新计时器* /#定义APP_ADV_DATA_UPDATE_TO(3000)// 3000 * 10毫秒= 30秒,最大允许值是41943sec(4194300分* 10毫秒)/ *制造商特定数据常数* /#定义APP_AD_MSD_COMPANY_ID(0xABCD)的#define APP_AD_MSD_COMPANY_ID_LEN(2)的#defi亚博全网ne APP_AD_MSD_DATA_LEN(的sizeof(uint16_t))

我推断其3秒对于每个ad​​v和之后30 SEç它的更新ADV参数。如果我错了纠正我。

因此,如果这是这种情况,每3秒都会中断我卡住的定时器ISR。

我的要求是要配置计时器0 12.5微秒并运行它直到40毫秒,(计数器值=> 3200 * 12.5),这是经过40毫秒复位并等待12.5微秒和定时器溢出和周期重复。现在,这个BLE_ADV打断了我的40毫秒的循环和我在ADC通道获取垃圾值。

注意:BLE是我们在产品中制作的主要更新,我们不能根据我们的产品规格将其放在睡眠模式。

我可以分享我的完整代码,我无法在这里分享的IP,所以如果提供了任何邮件ID,则可以更轻松地复制我的问题。

提前致谢

布罗尔,

BALAJI

PM_Dialog
离线
最后一次露面:5小时34分钟前
职员
加入:2018年2月8日11:03
嗨BALAJI,

嗨BALAJI,

该app_adv_data_update_timer_used计时器每经过APP_ADV_DATA_UPDATE_TO秒。因此,期满后,该adv_data_update_timer_cb()被触发,以便随时更新(特别是制造商数据)的广告数据

>>>我推断每一个adv和30秒后的3秒钟更新ADV参数。如果我错了纠正我。

能否请您澄清这个说法 - 说实话,我没有得到你的意思究竟是什么。

让我们一部分一部分 - 该SDK包括TIMER0外围的例子。所以,如果你在非BLE项目运行它,是正确配置TIMER0并如期回调是越来越触发?

如果是,请在BLE示例中以调试模式运行它,并在Timer_0_ISR()上添加断点。断点是否命中,以便执行adc_get_sample()?

谢谢,PM_Dialog

巴拉吉
离线
最后一次露面:3周5天前
加入:2019年12月6日06:48
嗨对话框,

嗨对话框,

我有以下的user_callback_config.h配置

//默认处理程序操作static const struct default_app_operations user_default_app_operations = {.default_operation_adv = user_app_adv_start,};

那么这个函数实际上做。你能解释一下吗?

什么是从SDK 6.0.12.1020在BLE项目中使用的广告BLE间隔?

提前致谢

布罗尔,

巴拉吉。

PM_Dialog
离线
最后一次露面:5小时34分钟前
职员
加入:2018年2月8日11:03
嗨巴拉吉,

嗨巴拉吉,

首先,我强烈建议您使用这是SDK6.0.14的那个持续版本的SDK。

这是回调函数,负责该广告。如果删除user_app_adv_start()和地方NULL该设备将无法启动广告 - 当然,你应该把它进入休眠模式。如果您检查user_app_adv_start()的源代码,你会看到app_easy_gap_undirected_advertise_get_active *(创造)开始为广告定向的连接将被发送到BLE堆栈和app_easy_gap_undirected_advertise_start(该消息。

广告间隔设置成user_config.h头文件中的user_adv_conf结构。我建议首先检查BLE广告教程(HTML)教程。

谢谢,PM_Dialog