
关于msp430的AD多通道转换问题
这是我的程序,用2个通道去进行求和,求平均数。但是程序可以进中断,也可以进main,但就是不能正常的求出平均数,有大神可以看见问题吗?voidInit_ADC(){P6S...
这是我的程序,用2个通道去进行求和,求平均数。但是程序可以进中断,也可以进main,但就是不能正常的求出平均数,有大神可以看见问题吗?
void Init_ADC()
{ P6SEL=0x2f; //设置p6.0-p6.3为模拟输入通道
ADC12CTL0 = ~ENC;//ADC12CTL0,ADC12CTL1,ADC12MCTLn的控制位需要在ENC=0的情况下才能编程修改
//寄存器设置
ADC12CTL0=ADC12ON+REFON+REF2_5V+MSC+SHT0_8; //内核开启,启动内部基准电压, 选择2.5V基准, 多次采样开启
ADC12CTL1 = ADC12SSEL_0 + SHP + CONSEQ_3 + CSTARTADD_0; //采样脉冲有采用定时器产生 转换模式选择---采用多通道多次转换模式 ,设置转换起始地址
//通道选择
ADC12MCTL0=SREF_1+INCH_0; //选择A0模拟通道输入
ADC12MCTL1=SREF_1+INCH_1+EOS; //选择A1模拟通道输入
ADC12IE=0x000; //中断溢出控制位
ADC12CTL0 |= ENC + ADC12SC; //转换允许位,打开转换
_EINT(); //全局中断使能
}
//ADC模块中断
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR(void)
{ _NOP(); // 处理
ADC12CTL0&=~ENC;
static uchar index = 0;
result0[index] = ADC12MEM0;// Move results
result1[index] = ADC12MEM1;// Move results
index++;
if(index==i)
{
for( i=0;i<32;i++)
{
sum0+=result0[i];
sum1+=result1[i];
}
sum0>>=5;
sum1>>=5;
ADC12CTL0 |= ENC + ADC12SC;
}
} 展开
void Init_ADC()
{ P6SEL=0x2f; //设置p6.0-p6.3为模拟输入通道
ADC12CTL0 = ~ENC;//ADC12CTL0,ADC12CTL1,ADC12MCTLn的控制位需要在ENC=0的情况下才能编程修改
//寄存器设置
ADC12CTL0=ADC12ON+REFON+REF2_5V+MSC+SHT0_8; //内核开启,启动内部基准电压, 选择2.5V基准, 多次采样开启
ADC12CTL1 = ADC12SSEL_0 + SHP + CONSEQ_3 + CSTARTADD_0; //采样脉冲有采用定时器产生 转换模式选择---采用多通道多次转换模式 ,设置转换起始地址
//通道选择
ADC12MCTL0=SREF_1+INCH_0; //选择A0模拟通道输入
ADC12MCTL1=SREF_1+INCH_1+EOS; //选择A1模拟通道输入
ADC12IE=0x000; //中断溢出控制位
ADC12CTL0 |= ENC + ADC12SC; //转换允许位,打开转换
_EINT(); //全局中断使能
}
//ADC模块中断
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR(void)
{ _NOP(); // 处理
ADC12CTL0&=~ENC;
static uchar index = 0;
result0[index] = ADC12MEM0;// Move results
result1[index] = ADC12MEM1;// Move results
index++;
if(index==i)
{
for( i=0;i<32;i++)
{
sum0+=result0[i];
sum1+=result1[i];
}
sum0>>=5;
sum1>>=5;
ADC12CTL0 |= ENC + ADC12SC;
}
} 展开
1个回答
展开全部
每次都要开ADC12CTL0 |= ENC + ADC12SC; SHT0_8; 改为SHT0_12;移位求平均不精确,你可以用double型去/32 或者先*100再>>=5

2023-06-12 广告
STM32是ARM Cortex内核单片机和微处理器市场和技术方面的佼佼者,目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超过100...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |