MSP430F1611交流采样问题!!

2019-03-24 12:29发布

做了好久的交流采样,总是在定时器A与AD12的地方出问题,请大侠看看下面的定时器与AD12的初始设置到底哪儿有问题,我实在太菜了。
    要求是,AD12的时钟由TimerA产生,采样频率为50HZ的交流信号,信号周期为20ms,采样间隔为1ms,单通道重复采样。求指导!!求助!!
void ADC_Init(void)
{
  
  P1OUT = 0;                                // reset port outputs
  ADC12CTL0 &= ~ENC;
  ADC12CTL0 = ADC12ON+SHT0_2+REF2_5V+REFON+MSC; // Setup ADC12
  ADC12CTL1 = CONSEQ_2+SHS_1+CSTARTADD_0;   // Timer triggers sampling
  ADC12MCTL0 = INCH_0 + SREF_1;
  ADC12IE|=BIT0;                      // Enable ADC12IFG.0


  TACCR0 = 1000;                            // Delay to allow Ref to settle
  TACCTL0 |= CCIE;                          // Compare-mode interrupt.
  TACTL = TASSEL_1 | MC_1;                  // TACLK = ACLK, Up mode.
  _BIS_SR(LPM3_bits + GIE);                 // Wait for delay, Enable interrupts
// TACCTL0 &= ~CCIE;                         // Disable timer
  P2SEL |= BIT3;                            // Set for Timer A1
  P2DIR |= 0x08;
  TACCR0 =700;                               // Init TACCR0 w/ sample prd=CCR0+1
  TACCR1 =300;                            // Trig for ADC12 sample & convert(这两句不懂)
  TACCTL1 = OUTMOD_3;                       // Set/reset
  TACTL = TACLR | MC_1 | TASSEL_1;          // ACLK, clear TAR, up mode
}

// ADC12 Interrupt Service Routine
#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR (void)
{
   static unsigned int index = 0;
   
   unsigned long sum = 0;//设置 A/D 转换结果变量
   
   ADC12CTL0 &= ~ENC; //设置AD转换控制寄存器ADC12CTL0,ENC=0x002,~ENC=0xFFD,停止AD转换
  。



}

// Timer_A0 Interrupt Service Routine
#pragma vector=TIMERA0_VECTOR
__interrupt void ta0_isr(void)
{
  TACTL = 0;
  LPM3_EXIT;                                // Exit LPM3 on return
}
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
cybershen
2019-03-25 01:58
如果按照我的要求,AD12的时钟由Timer-A产生,采样频率为50HZ的交流信号,信号周期为20ms,采样间隔为1ms,单通道重复采样,定时器与AD12的寄存器该如何配置呢?

一周热门 更多>

相关问题

    相关文章