This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

msp430f149 通过timerA 产生的PWM控制外围电路电压并AD采集,但是采集不到数据

程序如下:

uint TT=1600;
void Init_TimerA(void)
{
  TACCR0=2000-1;                  // 脉宽                  
  TACCR2=TT;                   
TACCTL2=OUTMOD_7;         //设CCR2输出单元为复位/置位输出模式
  TACTL=TASSEL_2+ID_3+MC_1+TACLR; //子系统时钟+8分频+增计数模式+计数器器清零
}
void bujin(void)                        //间隔3秒PWM占空比改变
{
    TT=TT-64;
    Init_TimerA();
    start_ADC12();                    //AD采集电压
    delay_bujin(1);                    //延时3秒
    while(TT>1200)
    {
      TT=TT-64;
      Init_TimerA();     
     start_ADC12();                   //AD采集电压
      delay_bujin(1);
    }
    if(TT<1200)
    {
      TT=TT+64;
      Init_TimerA();
      start_ADC12();                  //AD采集电压
      delay_bujin(1);
      while(TT<1840)
      {
        TT=TT+64;
        Init_TimerA();
        start_ADC12();                  //AD采集电压 
        delay_bujin(1);
      }
    }
   
}

  • 这个问题应该分为两部分调试:

    1)先测试 start_ADC12();是否能采集到正确的数据;

    2)再使用GPIO翻转的方法,测试定时器中断的时间是否正确;

  • 谢谢Billy的指导,

    1)start_ADC12();单独测试可以采集到数据,并通过LCD1621显示;

    2)去掉 start_ADC12(); 采集部分,单独测试 Init_TimerA(); 输出可调占空比,控制外围电路也可获得预期电压;

    3)去掉延时 delay_bujin(1); 后测试,可以采集到数据,但没有延时PWM变化太快;不能获得稳定可调电压值;

    4)又测试原来的程,发现LCD1621显示的采集电压变化时间间隔,是延时时间的10倍,不能同步显示采集口电压。

    是不是有时序上的冲突呢? 刚接触430不久,请您多多指教啊!!!

  • 再开一个定时期,我记得pwm是timeerB输出的,pwm输出设置好参数后,不需要干涉的。

  •     但是那样就不能调节PWM的占空比   

  • 怎么会,我采集和4-20ma都同时做了没问题。

  • 谢谢 问题解决 又开了一个定时器