通告数据中断adc功能

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support。我们将在未来几天修复bug /优化搜索和标记。
6个职位/ 0个新职位
最后发表
巴拉吉
离线
最后看到:2天23小时前
加入: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频道垃圾值,当祝福开始广告。否则我将得到所需的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通道,如何克服它?

Br,

巴拉。

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

嗨,巴拉

谢谢你的帖子。

请您指出您使用的是哪个BLE设备?是DA14580(根据您最初的帖子)还是DA14531 TINY模块(根据您之前的帖子)?

你是否在使用任何一种可用的睡眠模式?在user_config.h头文件中app_default_sleep_mode变量的值是多少?

请记住,设备可以休眠间隔(广告或连接)。当芯片处于休眠状态时,包括ADC、UART和TIMERS在内的所有外围域都将断电。

您可以使用app_easy_timer(),因为它正在使用BLE Timer,并且在睡眠模式下可用。

在user_app_adv_start()中,还可以禁用app_adv_data_update_timer_used计时器,该计时器正在调度下一次发布数据更新。

谢谢,PM_Dialog

巴拉吉
离线
最后看到:2天23小时前
加入: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)

/* update timer */ #define APP_PARAM_UPDATE_REQUEST_TO (1000) // 1000*10ms = 10sec, maximum allowed value is 41943sec (4194300 *10ms) /* advertisement data update timer */ #define APP_ADV_DATA_UPDATE_TO (3000) // 3000*10ms = 30sec#define app_ad_msd_company__id (0xABCD) #define APP_AD_MSD_COMPANY_ID_LEN (2) #define APP_AD_MSD_DATA_LEN (sizeof(uin雷电竞下载appt16_t))

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

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

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

注意:BLE是我们在我们的产品中做的主要更新,我们不能把它放到睡眠模式按照我们的产品规格。

我可以分享我的完整代码,因为IP我不能在这里分享,所以如果提供任何邮件ID将更容易复制我的问题。

谢谢提前

Br,

巴拉吉

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

嗨,巴拉

app_adv_data_update_timer_used计时器每APP_ADV_DATA_UPDATE_TO秒运行一次。因此,在过期时,adv_data_update_timer_cb()将被触发,以便实时更新广告数据(特别是制造商数据)

>>>我对每个ADV推断3秒,30秒后更新ADV参数。如果我错了请纠正我。

你能解释一下这个说法吗?老实说,我没有完全理解你的意思。

让我们逐一讨论一下——SDK包含了一个关于TIMER0的外设示例。因此,如果您在非ble项目上运行它,TIMER0是否正确配置,回调是否如预期的那样被触发?

如果是,请在BLE示例的调试模式下运行,并在timer_0_isr()上添加断点。是否命中了断点,从而执行adc_get_sample() ?

谢谢,PM_Dialog

巴拉吉
离线
最后看到:2天23小时前
加入:2019-12-06 06:48
嗨,对话框中,

嗨,对话框中,

我有以下配置user_callback_config.h

// Default Handler Operations静态const struct default_app_operations user_default_app_operations = {.default_operation_adv = user_app_adv_start,};

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

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

谢谢提前

Br,

巴拉。

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

嗨,巴拉

首先,我强烈建议您使用SDK的最新版本,即SDK6.0.14。

这是负责广告的回调函数。如果您删除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