求大神帮助,不同电压转换成不同频率pwm问题

2019-07-15 16:51发布

模拟量输入 p1.0/a0
输出pwm  p2.0/ta1.0
参考电压  p1.4
写的一段程序  但是检测不到pwm输出  求大神指点
#include "MSP430G2553.h"

const unsigned int table[1024]={电压值对应不同的周期
};
int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  ADC10CTL1 = CONSEQ_2+ADC10SSEL_2;    // TA0 trigger
  ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE + SREF_2 ;
  ADC10DTC1 = 0x01;

  ADC10AE0 |= 0x01;
  ADC10CTL0 |=ENC+ADC10SC;
  while(1)
  {
  ADC10CTL0 &= ~ENC;
    while (ADC10CTL1 & BUSY);               // Wait if ADC10 core is active
    ADC10SA = 0x200;



  TACTL |= TASSEL1+TACLR;                           
  TACCR0=table[ *(int *)0x200];
  TACCTL1=OUTMOD_7;
  TACCR1= table[ *(int *)0x200]/2;
  P2DIR |= 0x01;
  P2SEL |= 0x01;
  TACTL |=MC_1;


    ADC10CTL0 |= ENC;                       // Sampling and conversion ready
    __bis_SR_register(LPM3_bits + GIE); // Enter LPM3, enable interrupts
                             // Toggle P1.0 using exclusive-OR
  }

}

// ADC10 interrupt service routine
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR(void)
{
  __bic_SR_register_on_exit(LPM3_bits);     // Clear LPM3 bits from 0(SR)
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
wangbinlong
2019-07-16 03:32
我觉得你可以把CCR0定义为0x3ff,然后我们把每次AD转换的寄存器中存放的值复制给CCR1,因为是十位的AD,所以最大值也为ox3ff,这样就可以实现占空比从0到1的调节了

一周热门 更多>