打印

ADC12 双通道采样 两者相互影响

[复制链接]
1436|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Bjorn|  楼主 | 2018-10-24 21:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这几天一直再搞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;
}

相关帖子

沙发
Rollo| | 2018-10-24 21:20 | 只看该作者
用的是片内AD。问题是一次采样两个通道,片内AD是同步AD吗?有两个转换通道吗

使用特权

评论回复
板凳
dirtwillfly| | 2018-10-24 21:22 | 只看该作者
你用的什么型号的mcu?硬件是如何连接的?adc两个采样通道式连接的什么信号,还是悬空?

使用特权

评论回复
地板
Rangar| | 2018-10-24 21:29 | 只看该作者
用的是430F149 片内ADC12,双通道采样直接接入AD0 AD1,调节滑组。。
同步ad 是指??

使用特权

评论回复
5
Stannis| | 2018-10-24 21:39 | 只看该作者
参考一下
http://bbs.**/thread-341874-1-2.html

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

113

主题

757

帖子

3

粉丝