嗨对话框,
我们的产品是盲人的障碍物检测。要升级到基于BLE的设备,我们选择DA14531模块。
组件是超声波传感器,蜂鸣器,触觉振动器,电池。
我正在尝试接口以下超声波传感器400 s / t r 100.要生成40 kHz的脉冲脉冲,我配置了计时器0,没有PWM。我在计时器内创建了一个计数器以产生传输脉冲。我成功完成了哪个(参考附件)。现在在ISR内部延迟1ms后,我正在调用ADC_GET_SAMPLE()函数。从那里,我根据超声波传感器原理确定距离。在keil调试模式下运行很少的迭代后。它被困在
静态内联void dlg_error_isr(void)
{
assert_warning(0);
}
在rwble.c.中选择的项目是BLE BARBONE项目。当障碍物放置在50厘米时,我已经用回声产生了连接的触发脉冲。如您所见,当覆盖到距离时,时间间隔为3ms,约为51厘米。我有一系列在代码中实现这一点的查询,
1.我无法读取ISR内的ADC样本。
2.您的ADC的准确性是多少?W.R.TO米电压的精确度。
3.即使我在没有任何上述功能的ISR运行ISR时,我也无法连接到BLE Scanner应用程序。
定时器配置
//启用Timer0 / Timer2输入时钟
timer0_2_clk_enable();
timer0_init(tim0_clk_fast,pwm_mode_one,tim0_clk_no_div);
//将Timer0 / Timer2输入时钟分割因子设置为2,所以8 MHz输入时钟
timer0_2_clk_div_set(&clk_div_config);
//重新加载值12.5微秒(t = 1/8 MHz * Reload_12.5_US = 0.125 * 100 = 12.5微秒)
timer0_set_pwm_on_counter(timer_on);
timer0_set_pwm_high_counter(no_pwm);
timer0_set_pwm_low_counter(no_pwm);
//寄存SWTIM_IRQN IRQ的回调函数
timer0_register_callback(burst_user_callback_function);
//启用SWTIM_IRQN IRQ
timer0_enable_irq();
ADC配置
// ADC配置
adc_offset_calibrate(adc_input_mode_single_ended);
adc_config_t echo_pin_cfg =.
{
.input_mode = adc_input_mode_single_ended,
.input = adc_input_se_p0_6,
.smpl_time_mult = 2,
.Contion = False,
.Interval_mult = 0,
.Input_attenuator = ADC_INPUT_ATTN_4X,
.Chopping = false,
。oversampling = 0.
};
adc_init(echo_pin_cfg);
你可以帮助我整合这个传感器。我需要知道如何在同一时间运行计时器ISR和BLE服务?
问候,
巴拉吉
嗨巴拉吉,
谢谢你的问题在线。让我检查一下,我会回复我的评论。
谢谢,PM_DIALOG.
嗨巴拉吉,
我正在尝试在SDK的BLE-APP_BAREBONE示例中复制此行为。到目前为止,我正在使用,以便在回调函数中切换GPIO:
如果我有任何错误配置,请告诉我。您可以在应用程序代码中共享您使用的burst_user_callback_function()函数吗?
您应该能够在ISR内读取。请分享应在BLE_APP_BAREBONE示例中复制此操作以进行操作。您是否使用了任何可用的睡眠模式?
ADC的准确性在数据表中给出 - 请检查表23。
谢谢,PM_DIALOG.
嗨对话框,
它实际上是一个计时器延迟问题。我在里面读了adc_smple12.5微秒ISR计时器,但是,当我检查MDO时adc_get_sample.()具有纠正的API需要60.微秒。截至目前没有任何情况。谢谢你的建议。如果出现任何问题,我将将来在同一主题中发布。
此定时器发出的BCOZ BLE连接已被阻止。现在它得到了解决。
嗨巴拉吉,
谢谢你的迹象,很高兴你有工作。如果您有任何后续问题,请提出一个新的论坛线程。
谢谢,PM_DIALOG.