用序列通道多次采集模式采集AD,一个周期采集20次,然后取一个平均值

[复制链接]
2061|26
 楼主| liliang9554 发表于 2018-10-12 13:19 | 显示全部楼层 |阅读模式
这样的程序行不行。。

__interrupt void ADC12ISR (void)
{
uint index=0;
A0results[index] = ADC12MCTL0;
A1results[index] = ADC12MCTL1;
A2results[index] = ADC12MCTL2;
index = (index+1)%Num_Result;
if(index ==0)
{
for(i=0;1<=20,i++)
{
sum_0=A0results[i]+sum_0;
sum_1=A0results[i]+sum_1;
sum_2=A0results[i]+sum_2;
AO=sum_0/20;
A1=sum_2/20;
A2=sum_3/20;
}
}
}
dengdc 发表于 2018-10-12 13:23 | 显示全部楼层
我看不怎么行。里面没有累加因子
zhaoxqi 发表于 2018-10-12 13:27 | 显示全部楼层
对啊,你怎么判断这是哪一次?
spark周 发表于 2018-10-12 13:33 | 显示全部楼层
这样不可以的吧,你参照下历程的啦
yszong 发表于 2018-10-12 13:42 | 显示全部楼层
不行的。
如果转换时间太短,还是上一次的数值。
zhaoxqi 发表于 2018-10-12 13:45 | 显示全部楼层

建议将速度提高一些,然后去平均值的。
 楼主| liliang9554 发表于 2018-10-12 13:52 | 显示全部楼层
怎么没有累加因子,Num_result  定为 20 ,INDEX从0到20.再到0的时候进行取平均值。
zhaoxqi 发表于 2018-10-12 13:55 | 显示全部楼层
改变ADC时钟源选择?默认是ADC12OSC????????
 楼主| liliang9554 发表于 2018-10-12 13:59 | 显示全部楼层
我觉得不可能时间不够啊,我贴出来的是一个中断,每次转化完一个周期就进入中断取平均值
wyjie 发表于 2018-10-12 14:02 | 显示全部楼层

我觉得时间应该够的吧
zhenykun 发表于 2018-10-12 14:09 | 显示全部楼层

你的程序有问题,下面三句需要放到循环外面
AO=sum_0/20;
A1=sum_2/20;
A2=sum_3/20;
huangchui 发表于 2018-10-12 14:12 | 显示全部楼层
你没提供其他的程序,我也不知道你这一段程序和其他部分配合的怎么样,你调试看看吧
 楼主| liliang9554 发表于 2018-10-12 14:15 | 显示全部楼层
这三句为什么要放到主程序去????有什么区别吗?
 楼主| liliang9554 发表于 2018-10-12 14:21 | 显示全部楼层

我的主程序使用ADC数据就是 LR=(A0-A2)*25000/4095;A1是用在一个IF判断里的,是一种特殊情况
yszong 发表于 2018-10-12 14:25 | 显示全部楼层
我没说是主程序里,我说是for循环外面,不然你的sun就多除了好多次20
 楼主| liliang9554 发表于 2018-10-12 14:29 | 显示全部楼层
哦 对!!
那这个功能应该可以实现的吧.
我是拿来坐小车的。
zhaoxqi 发表于 2018-10-12 14:32 | 显示全部楼层

可以的。你的程序还有些拼写错误,你多认真调试下
 楼主| liliang9554 发表于 2018-10-12 14:39 | 显示全部楼层
额额,多谢了。另外拼写错误是神马???

评论

AO 这个应该是A0吧  发表于 2018-10-12 14:42
dengdc 发表于 2018-10-12 14:43 | 显示全部楼层

index 定义为static
heweibig 发表于 2018-10-12 14:46 | 显示全部楼层
这样的效果没有什么区别的吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部