430中断问题

2019-08-05 15:23发布

我想用 序列通道多次采集模式采集AD,一个周期采集20次,然后取一个平均值。
这样的程序行不行。。

__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;
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
1988020566
1楼-- · 2019-08-06 12:07
建议将速度提高一些,然后去平均值的。
LOVE_LY
2楼-- · 2019-08-06 15:10
Huangjun1131 发表于 2013-11-7 21:50
我看不怎么行。里面没有累加因子,你怎么判断这是哪一次?

怎么没有累加因子,Num_result  定为 20 ,INDEX从0到20.再到0的时候进行取平均值。
LOVE_LY
3楼-- · 2019-08-06 20:12
本帖最后由 LOVE_LY 于 2013-11-8 07:53 编辑
1988020566 发表于 2013-11-7 22:30
建议将速度提高一些,然后去平均值的。
就是改变ADC时钟源选择?默认是ADC12OSC????????
另外 我觉得不可能时间不够啊,我贴出来的是一个中断,每次转化完一个周期就进入中断取平均值。我觉得时间应该够的吧
多谢
dirtwillfly
4楼-- · 2019-08-07 00:07
 精彩回答 2  元偷偷看……
LOVE_LY
5楼-- · 2019-08-07 04:01
dirtwillfly 发表于 2013-11-8 07:54
你的程序有问题,下面三句需要放到循环外面
AO=sum_0/20;
A1=sum_2/20;

这三句为什么要放到主程序去????有什么区别吗?
LOVE_LY
6楼-- · 2019-08-07 09:53
dirtwillfly 发表于 2013-11-8 07:54
你的程序有问题,下面三句需要放到循环外面
AO=sum_0/20;
A1=sum_2/20;

我的主程序使用ADC数据就是 LR=(A0-A2)*25000/4095;A1是用在一个IF判断里的,是一种特殊情况

一周热门 更多>