Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

MSP430F6638的ADC采用内部2.5V参考电压时,用ADC通道0(P6.0)读出数据准确,但是运用AD1或者AD2等其他通道不加电压读出值为4096,求大神帮看看程序是不是有问题?

$
0
0

MSP430F6638的ADC采用内部2.5V参考电压时,用ADC通道0(P6.0)读出数据准确,但是运用AD1或者AD2等其他通道不加电压读出值为4096,求大神帮看看程序是不是有问题?

程序为采用通道AD1时:

       

void Init_ADC__2(void)
{

P6SEL |= BIT1; // 使能ADC通道 
ADC12CTL0 = ADC12ON+ADC12SHT0_15+ADC12REFON+ADC12REF2_5V; // 打开ADC,设置采样时间
ADC12CTL1 =ADC12CSTARTADD_1+ADC12SHP+ADC12CONSEQ_0; // 选择存储器地址,使用采样定时器
ADC12MCTL1 =ADC12SREF_1+ADC12INCH_1; // 选择采样通道0 ADC12SREF_1+
//delay_1(1);
ADC12CTL0 |= ADC12ENC; // 使能转换
}

void ADC_SUM_2(unsigned char counter)
{

unsigned long average;//均值滤波总和变量,当counter过大可能导致溢出
float testing=0;//滤波后的测试值
average = 0;
testing=0;
test=0;
for(unsigned char j=0;j<counter;j++)//循环采集三次
{

ADC12CTL0 |=ADC12SC; // 开始转换
delay(10);
while (ADC12IFG ==BIT1)//等待AD转换结束
{

average +=ADC12MEM1;//采集值叠加到均值滤波总和变量

ADC12IFG&=~BIT1;//清 ADC12IFG中断标志位

}
}
testing=average/counter;//滤波后的测试值

delay(1000);//延时

}

***********************主函数***********************/
void main( void )
{

WDTCTL = WDTPW + WDTHOLD; //关狗
Init_ADC__2();

_EINT();

while(1)
{
ADC_SUM_2(35);

LPM3;
}


Viewing all articles
Browse latest Browse all 3634

Trending Articles