关于ad转换的一个简单问题

2019-03-24 15:29发布

本人想用用ad转换做一个采样频率为1280hz的数据采集,采集128个点后对其进行处理,处理完后在进行下一次的采集; 由于对频率要求较高,所以我选择使用定时器中断,每次中断启动ad转换并将转换结果保存后退出中断等待下一次中断,但是对ad的初始化很迷惑,希望高手给指点一下,说说有哪里不对,程序如下:   #include "msp430x14x.h" void ADCinit()      //ADC初始化
{ int i;
  P6SEL=0x01;                                                                          //设置端口第二功能
  ADC12CTL0&=~ENC ;                                                            //ENC设置为0从而修改ADC12寄存器  ADC12CTL0 = ADC12ON + REFON + REF2_5V+SHT0_0;      //启动ADC12,使用内部参考电压,2.5V
 ADC12CTL1 = SHP;                                                               //使用采样定时器
 ADC12MCTL0 = SREF_1;   //Vr+ = Vref+
        for(i = 0; i < 0x3600; i++)                                              //为参考源启动提供延迟17ms以上
        {}  ADC12CTL0 |= ENC;                                                                //允许转换
        return;
} #pragma vector=TIMERA0_VECTOR                                //中断服务程序
__interrupt void Timer_A(void)
{     ADC12CTL0 |= ADC12SC;                                            //启动转换
    while((ADC12IFG&ADC12BUSY)==0);                           //等待转换完成
    _NOP();
    dataIN[count].image=ADC12MEM0/4095.0;
    count++;
    if(count==128)
    {
      TACTL=0x02C4;                                //当采集点数达到128时定时器变为停止模式
      count=0;
    }
} int main( void )
{
  WDTCTL = WDTPW + WDTHOLD;                  // Stop watchdog timer to prevent time out reset
    BCSCTL1&=~XT2OFF;                                 //XT2启动
    BCSCTL2=SELS+DIVS1+DIVS0;         // 选择XT2CLK作为SMCLK时钟,分频比为8
    CCTL0=CCIE;                                            // 使能定时器中断
    CCR0=97;                                                             //采样频率为1280HZ
    _EINT();                                          //使能全局中断
    int i,j,k;
    ADCinit();    
    for(;;)
    { TACTL=0X02D4;                          //定时器加计数模式,分频比为8,使用SMCLK时钟
      for(i=1000;i>0;i--)                         //给采样充足时间
        for(k=125;k>0;k--);
      P4DIR=0xff;
      P4OUT=0Xff;
      for(j=100;j>0;j--)
        for(k=125;k>0;k--);
      P4OUT =0x0;
    }  
 return 0;
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
zhijun0906
2019-03-24 23:19
 精彩回答 2  元偷偷看……0人看过

一周热门 更多>

相关问题

    相关文章