专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
谁有使用ASF采集两个以上ADC数据的程序?
2019-03-24 20:25
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
Atmel MCU
3597
8
1214
Atmel Studio 6.2里提供的例程都是一路的,我试着改配置,在采集完通道0后再采集通道1,怎么也调不过。
代码里单独采集通道0和通道1都能正常读到数据。
最后完全复制一份配置和代码,一份是通道0一份是通道1,通道0配置,读取,通道1配置,读取。也不能正常读到数据。
快被折磨屎了。
此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
yang_alex
1楼-- · 2019-03-25 18:15
每次都重新初始化,设计是不合理的。SAM系列是支持ADC多通道扫描方式,ASF也支持,只是没有现成的例子。需要自己加代码。如下:
注意:
config_adc.pin_scan.offset_start_scan = 0;
config_adc.pin_scan.inputs_to_scan = 2;
第二句是扫描2个通道,第一句是扫描起始偏移量为零。
起始通道由下面这句确定。
config_adc.positive_input = ADC_POSITIVE_INPUT_PIN6;
void configure_adc7(void)
{
//! [setup_config]
struct adc_config config_adc;
//! [setup_config]
//! [setup_config_defaults]
adc_get_config_defaults(&config_adc);
//! [setup_config_defaults]
//! [setup_modify_conf]
config_adc.clock_source = GCLK_GENERATOR_3;
config_adc.gain_factor = ADC_GAIN_FACTOR_1X;
config_adc.clock_prescaler = ADC_CLOCK_PRESCALER_DIV8;
config_adc.reference = ADC_REFCTRL_REFSEL_INT1V;
config_adc.positive_input = ADC_POSITIVE_INPUT_PIN6;//ADC_POSITIVE_INPUT_TEMP;
config_adc.resolution = ADC_RESOLUTION_12BIT;
config_adc.pin_scan.offset_start_scan = 0;
config_adc.pin_scan.inputs_to_scan = 2;
//! [setup_modify_conf]
//! [setup_set_config;
adc_init(&adc_instance, ADC, &config_adc);
//! [setup_set_config]
//! [setup_enable]
adc_enable(&adc_instance);
//! [setup_enable]
}
复制代码
加载中...
yang_alex
2楼-- · 2019-03-25 20:40
主程序中用下面语句读出。结果也是按采集顺序交错的。
adc_read_buffer_job(&adc_instance, adc_result_buffer, ADC_SAMPLES);
//! [job_complete_poll]
while (adc_read_done == false)
{
/* Wait for asynchronous ADC read to complete */
}
加载中...
上一页
1
2
一周热门
更多
>
相关问题
相关文章
Arduino-每个人的微控制器
0个评论
一款由长短音密码控制的门禁密码锁的设计
0个评论
IAR Embedded Workbench for Atmel AVR 6.10 环境配置
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
注意:
config_adc.pin_scan.offset_start_scan = 0;
config_adc.pin_scan.inputs_to_scan = 2;
第二句是扫描2个通道,第一句是扫描起始偏移量为零。
起始通道由下面这句确定。
config_adc.positive_input = ADC_POSITIVE_INPUT_PIN6;
- void configure_adc7(void)
- {
- //! [setup_config]
- struct adc_config config_adc;
- //! [setup_config]
- //! [setup_config_defaults]
- adc_get_config_defaults(&config_adc);
- //! [setup_config_defaults]
- //! [setup_modify_conf]
- config_adc.clock_source = GCLK_GENERATOR_3;
- config_adc.gain_factor = ADC_GAIN_FACTOR_1X;
- config_adc.clock_prescaler = ADC_CLOCK_PRESCALER_DIV8;
- config_adc.reference = ADC_REFCTRL_REFSEL_INT1V;
- config_adc.positive_input = ADC_POSITIVE_INPUT_PIN6;//ADC_POSITIVE_INPUT_TEMP;
- config_adc.resolution = ADC_RESOLUTION_12BIT;
-
- config_adc.pin_scan.offset_start_scan = 0;
- config_adc.pin_scan.inputs_to_scan = 2;
-
- //! [setup_modify_conf]
- //! [setup_set_config;
- adc_init(&adc_instance, ADC, &config_adc);
- //! [setup_set_config]
- //! [setup_enable]
- adc_enable(&adc_instance);
- //! [setup_enable]
- }
复制代码主程序中用下面语句读出。结果也是按采集顺序交错的。
adc_read_buffer_job(&adc_instance, adc_result_buffer, ADC_SAMPLES);
//! [job_complete_poll]
while (adc_read_done == false)
{
/* Wait for asynchronous ADC read to complete */
}
一周热门 更多>