[求助] ADC12 双通道采样 两者相互影响 改变其中一路输入 另一路采样电压也变化

eemingtian   2014-4-20 09:34 楼主

这几天一直再搞ADC12 和 DAC0832,昨晚测试的时候发现个挺严重的问题,ADC12双通道采样相互影响
我采样的是定时钟中断 双通道 多次采样,程序如下,
我用的是买的开发板,开始我以为是采样的两个通道相互影响可能是硬件的问题,于是我使用通道0 和 通道3 采样,结果
采样还是会受影响,数据如下,当通道0采样值由3750变到0时,另一路采样输出电压从2.32变到2.10V(我两路采样结果用数码管显示,一路经过ADC转化成电压,一路直接显示结果寄存器值)

大家有没有类似的情况,望指教!!!


//*************************************************************************
//        ADC初始化程序,用于配置ADC相关寄存器
//*************************************************************************
void ADC_Init()
{
  P6SEL|=0x03;                                    //选择ADC通道,设置对应IO口的功能模式
  ADC12CTL0|= ADC12ON + MSC + SHT0_2 + REF2_5V + REFON; //打开ADC;多路转换打开适合序列或重复;
                                                       //采样保持时间 ,16个CLK;ADC电源控制开,内部基准2.5V
  ADC12CTL1|= SHP + CONSEQ_3 + ADC12SSEL1 + ADC12SSEL0; //采样保持脉冲模式选择;多通道重复采样;SMCLK做时钟源;
  ADC12MCTL0= SREF0 + INCH_0;                     //参考电压源控制位及通道选择

  ADC12MCTL0=INCH_0;
  ADC12MCTL1=INCH_1+EOS;
  ADC12CTL0|= ENC;                                //使能转换器
}

//*************************************************************************
//        ADC中断服务程序
//*************************************************************************
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A(void)
{


  uchar j;
  uint result[10];

  uint result1[10];

  result[count]=ADC12MEM0;                //读取ADC转换值,存入暂存区

  result1[count]=ADC12MEM1;

  count++;

   ADC12CTL0 |= ADC12SC;
   _NOP() ;
   while(count>8)
  {
    count=0;
    for(j=0;j<8;j++)
    {
      TEMP+=result[j];                    //求和,10次转换的结果相加
      TEMP1+=result1[j];
    }
    TEMP=TEMP>>3;                         //求平均值
    TEMP1=TEMP>>3;
    Data_do(TEMP);                        //处理ADC值,用于显示
    Data_do1(TEMP1);
    for(j=0;j<50;j++)
    {
      Display();                          //显示ADC的数据
    }


  }
}


void TIMERA_Init(void)                                   //UP模式计数,计数周期为CCR0+1
{
  TACTL |= TASSEL1 + TACLR + ID0 + ID1 + MC_1 ;     //SMCLK做时钟源,8分频,增加计数模式,开中断 + TAIE
  TACCR0 = 999;                                         //CCR0=999,1ms中断一次
  CCTL0 = CCIE;
}


回复评论 (7)

用的是片内AD。问题是一次采样两个通道,片内AD是同步AD吗?有两个转换通道吗
点赞  2014-4-20 13:18
引用: ltbytyn 发表于 2014-4-20 13:18
用的是片内AD。问题是一次采样两个通道,片内AD是同步AD吗?有两个转换通道吗

用的是430F149 片内ADC12,双通道采样直接接入AD0 AD1,调节滑组。。
同步ad 是指??(恕我小白 版主)在查阅MSP430 相关资料没看到这个,
我调节一路ADC输入,另一路也受影响,是时序的问题????  还望版主多多帮助
点赞  2014-4-21 15:02
引用: eemingtian 发表于 2014-4-21 15:02
用的是430F149 片内ADC12,双通道采样直接接入AD0 AD1,调节滑组。。
同步ad 是指??(恕我小白 版主) ...

你看一下我以前的帖子吧。AD通道和AD转换器是2个概念。里面有解决方案,虽然芯片不是一个厂家的,但问题是一样的。
https://bbs.eeworld.com.cn/thread-341874-1-2.html

点赞  2014-4-21 18:35
引用: ltbytyn 发表于 2014-4-21 18:35
你看一下我以前的帖子吧。AD通道和AD转换器是2个概念。里面有解决方案,虽然芯片不是一个厂家的,但问题 ...

谢谢版主  问题解决了  就是你说的那个原因 非常感谢
点赞  2014-4-24 15:28
引用: eemingtian 发表于 2014-4-24 15:28
谢谢版主  问题解决了  就是你说的那个原因 非常感谢

                                                        

点赞  2014-4-25 00:02
这么强,长见识了,谢谢楼主
点赞  2018-1-25 20:25
学习下,厉害
点赞  2018-3-30 16:59
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复