查看: 2970|回复: 2

[教程] MSP430G2553产生PWM的问题

[复制链接]
  • TA的每日心情
    慵懒
    2012-10-30 14:40
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2012-8-30 13:24:55 | 显示全部楼层 |阅读模式
    分享到:
    #include<msp430g2553.h>
    #include<math.h>
    #define pi 3.141592653
    unsigned char step=0;
    unsigned char spwm[100];
    /***************************Creat PWM tab***************************/
    void Creat_PWM_tab(void)
    {
      unsigned char i;
      float x,y;
      for(i=0;i<100;i++)
      {
        x = 20000*sin(pi*i/100);
        y = 20000*sin(pi*(i+1)/100);
        spwm[i]=(unsigned char)(x+y)/2;             //面积法求SPWM                  
      }
    }
    /****************************delay*******************************/
    void delay(unsigned char a)
    {
      unsigned char x,y;
      for(x=a;x>0;x--)
        for(y=110;y>0;y--);
    }

    /******************************spwm init*************************/
    void spwm_init(void)
    {
      P1SEL |= BIT2;                 // Output SPWM1 From P1.2
      P1DIR |= BIT2;
      P1SEL |= BIT6;                 // Output SPWM2 From P1.6
      P1DIR |= BIT6;
      
      TA0CTL |= MC_3+TASSEL_2+ID_0;     //Up/down mode,SMCLK
      TA0CCTL1 |= OUTMOD_6;             //model 6
      TA0CCTL2 |= OUTMOD_2;             //model 2
      TA0CCR0 = 23330;
      TA0CCR1 = 10000;
      TA0CCR2 = 10000;
    }
    /********************************main****************************/
    void main(void)
    {
      WDTCTL = WDTPW + WDTHOLD;       //stop watch dog timer
      Creat_PWM_tab();
      
      BCSCTL1 |= CALBC1_8MHZ_;        //MCLK = 8MHZ
      DCOCTL |= CALDCO_8MHZ_;         //Inner DCO = 8MHZ
      BCSCTL2 |= DIVS_3;             //SCLK = 1MHz
      spwm_init();
      
      _EINT();
      TA0CTL |= TAIE;
      TA0CCTL0 |= CCIE;
    //  TA0CCTL1 |= CCIE;
    //  TA0CCTL2 |= CCIE;
    // LPM1;
      while(1);
    }
    /********************interrupt set spwm *************************/
    /*
    #pragma vector = TIMER1_A0_VECTOR
    __interrupt void Set_SPWM(void)
    {
      TA0CCR1 = spwm[step];
    // TA0CCR2 = spwm[step];
      if(step<99) step++;
      else step=0;
    }*/

    上面是我的产生PWM的程序,但是引脚没有产生波形,真心求助, 望各位大牛指点!!!

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-12 21:59
  • 签到天数: 647 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2012-8-30 14:14:07 | 显示全部楼层
    本帖最后由 QQ哥 于 2012-8-30 14:38 编辑

    1.jpg

    建议楼主参考下TI官方代码!
    slac485a.zip (239.53 KB, 下载次数: 74)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2012-10-30 14:40
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2012-8-30 14:20:34 | 显示全部楼层
    QQ哥 发表于 2012-8-30 14:14
    建议楼主参考下TI官方代码!

    版主能不能贴下TI官方的代码啊?!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 10:39 , Processed in 0.138363 second(s), 20 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.