|
我是个新手,刚学用msp430.用其中的adc12进行数据采集。我认为问题可能出现在其中 ADC12CTL0中的MSC位的使用。当用单通道连续采集模式不使用该位,时钟用4M的MCLK,采集的数据正确。当加上MSC 位时就很不正确了。当用多通道(两通道)连续采集模式不使用MSC位,则不进行采集。使用MSC则数据很不正确。使用的是时钟中断来读取采集结果。调试了好久都不行,故求救大侠。
部分源程序如下:
//ADC12初始化
void ADC12_INITE(void)
{
ADC12CTL0 &= ~ENC;
ADC12CTL0 = ADC12ON + REFON +MSC ;
ADC12CTL1 = SHP + CONSEQ_3+ ADC12SSEL_2; // Use sampling timer
ADC12MCTL0 = INCH_3 + SREF_1 ; //通道3
ADC12MCTL1 = INCH_4 + SREF_1 + EOS; //通道4并为结束
ADC12CTL0 |= ENC; // Conversion ena××ed
P6SEL |= BIT3 +BIT4 ;
// P6.0,1 ADC option select
}
时钟初始化
void TimerA_inite(void)
{
TACTL = TASSEL_2+TACLR;
CCTL0 = CCIE;
CCR0 =400;
TACTL |= MC0;
}
时钟中断:
#pragma vector = TIMERA0_VECTOR
__interrupt void TIMERA0INTER (void)
{
ADC12CTL0 &= ~ENC; //停 AD
value0 = ADC12MEM0; //读数
value1 = ADC12MEM1;
ADC12CTL0|=ENC+ADC12SC; //开始 转换
}
望帮忙指点。不是是否还有其他的原因,愿帮助分析。
|
|