通告数据中断adc功能

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support。我们将在未来几天修复bug /优化搜索和标记。
6个职位/ 0个新职位
最后发表
巴拉吉
离线
最后看到:3天26秒前
加入:2019-12-06 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, .input = ADC_INPUT_SE_P0_6, .smpl_time_mult = 15, .continuous = true, .interval_mult = 0, .input_attenuator = ADC_INPUT_ATTN_4X, .chopping = false, .过采样= 7};adc_init (&echo_pin_cfg);//采样ISR代码void timer_0_isr() {if((计数器% 4)== 0)//大约每50微秒{adc_count = adc_get_sample();Sprintf ((char *) tempbuff," %d, %d \n",adc_count,counter);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.当我关掉阿包通过环境

// Default Handler Operations静态const struct default_app_operations user_default_app_operations = {.default_operation_adv = NULL, //以前定义为user_app_adv_start};

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

附注:检查附件和做必要的。

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

布罗尔,

巴拉吉。

设备:
PM_Dialog
离线
最后看到:12小时40分钟前
工作人员
加入:2018-02-08 11:03
嗨,巴拉

嗨,巴拉

谢谢你的帖子。

您能否说明您使用的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天26秒前
加入:2019-12-06 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)

/ *连接参数更新请求的定时器持续时间* / #define app_param_update_request_to(1000)// 100ms = 10sec,最大允许值为41943sec(4194300 * 10ms)/ *广告数据更新计时器* / #define app_adv_data_update_to(3000)// 3000 * 10ms = 30sec,最大允许值为41943sec(4194300 * 10ms)/ *制造商特定数据常量* / #define app_ad_msd_company_id(0xabcd)#define app_ad_msd_company_id_len(雷电竞下载app2)#define app_ad_msd_data_len(sizeof(uint16_t))

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

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

我的要求是将计时器0配置为12.5微秒并运行到40毫秒,(计数器值=> 3200 * 12.5),在40毫秒后重置,等待12.5微秒,计时器溢出并循环重复。现在这个BLE_ADV中断了我的40毫秒循环,我在我的ADC通道中得到垃圾值。

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

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

提前致谢

布罗尔,

巴拉吉

PM_Dialog
离线
最后看到:12小时40分钟前
工作人员
加入:2018-02-08 11:03
嗨,巴拉

嗨,巴拉

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天26秒前
加入:2019-12-06 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
离线
最后看到:12小时40分钟前
工作人员
加入:2018-02-08 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