智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1731|回复: 0
打印 上一主题 下一主题

电机输出波形,对吗?

[复制链接]

14

主题

41

帖子

0

精华

高级会员

Rank: 4

积分
650
威望
397
贡献
171
兑换币
103
注册时间
2012-9-22
在线时间
41 小时
毕业学校
西安文理
跳转到指定楼层
1#
发表于 2013-5-12 18:53:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我把程序写进去啦,但是电机控制的波形,是两组正弦波,我感觉不对头,哪路大神,帮我分析一下?
程序

//FTM0 ,PWM初始化
void FTM0_init()
{
  
  /*打开所有的端口的时钟*/
  
   SIM_SCGC6 |= SIM_SCGC6_FTM0_MASK;  
   SIM_SCGC5 |=SIM_SCGC5_PORTC_MASK;
   
   PORTC_PCR1 =PORT_PCR_MUX(0x3) |PORT_PCR_DSE_MASK;  //PTC口的3引脚使用第三功能,正转
   PORTC_PCR2 =PORT_PCR_MUX(0x3);                  //PTC7口7引脚使用第三功能,反转
   
   
   SIM_SCGC6|=SIM_SCGC6_FTM0_MASK;               //使能FTM0时钟

      //change MSnB = 1
                                               //极性
      FTM0_C3SC |= FTM_CnSC_ELSB_MASK;        //0.3通道ELSB置1
      FTM0_C3SC &= ~FTM_CnSC_ELSA_MASK;       //0.3通道ELSA清0
      FTM0_C4SC |= FTM_CnSC_ELSB_MASK;        //0.4通道ELSB置1
      FTM0_C4SC &= ~FTM_CnSC_ELSA_MASK;       //0.4通道ELSA清0
      FTM0_C4SC |= FTM_CnSC_MSB_MASK;         //1X边缘对齐
      FTM0_C5SC |= FTM_CnSC_MSB_MASK;         //1X边缘对齐
      FTM0_SC = 0x2a;                          //不能使中断屏蔽,欲分频系数

      FTM0_MODE |= FTM_CnSC_MSB_MASK;         // 自动清除中断
      FTM0_MODE &=~1;                        //ftm使能禁止
      FTM0_OUTMASK=0Xe7;   //4、5通道输出不是掩没。它继续工作正常
                           //0、1、2、3、6、7通道输出掩没。它就被强迫其停滞状态
         
      FTM0_COMBINE=0;      //连接通道功能(FTMx_COMBINE)
      FTM0_OUTINIT=0;
      FTM0_EXTTRIG=0;      //FTM外部触发(FTMx_EXTTRIG)
      FTM0_POL=0;          //通道,极性(FTMx_POL)
                           //0是活跃的频道极性高。
                           //1频道极性是积极的低。
       //设置边缘对齐PWM
      FTM0_QDCTRL &=~FTM_QDCTRL_QUADEN_MASK;           //QUADEN 1点,将正交解码模式(QUADEN)使至0(残疾)
   
      //这是第五场FTMx_SC(状态控制)-也设置pre-scale位在这里
      
      FTM0_INVCTRL=0;     //反转控制
      FTM0_SWOCTRL=0;     //软件输出控制FTM 软件输出控制(FTMx_SWOCTRL)
      FTM0_PWMLOAD=0;     //FTM PWM Load
                          //BIT9: 0加载更新值被禁用。
                          //更新值是1加载启用。
      FTM0_CNTIN=0;        //开始计数初值
      //PMW频率=X系统率/FTM1_SC_PS/FTM1_MOD
      FTM0_MOD=576;           //模值,EPWM周期取于(决MOD - CNTIN + 1)
      FTM0_MOD=576;           //模值,EPWM周期取于(决MOD - CNTIN + 1)
      //设置 脉冲宽度(责任周频期)是由(CnV - CNTIN)。
      FTM0_C3V=0;        //电机正转
      FTM0_C4V=0;          //电机反转
      FTM0_CNT=0;          //给计数器CNT清0,CNT只有低16位可用
}
//FTM1,PWM初始化
void FTM1_init()
{
    /*打开所有的端口的时钟*/
   SIM_SCGC6 |= SIM_SCGC6_FTM1_MASK;  
   SIM_SCGC5 |=SIM_SCGC5_PORTA_MASK;
   
   
    /*PTA9,PTA8作为PWM输出端口*/
    PORTA_PCR8 =PORT_PCR_MUX(0x3);              //PTA8口8引脚使用第三功能,舵机
   
   
    SIM_SCGC6|=SIM_SCGC6_FTM1_MASK;               //使能FTM1时钟
   
     //change MSnB = 1
   
    FTM1_C0SC |= FTM_CnSC_ELSB_MASK;        //1.0通道ELSB置1
    FTM1_C0SC &= ~FTM_CnSC_ELSA_MASK;       //1.0通道ELSA清0
    FTM1_C0SC |= FTM_CnSC_MSB_MASK;         //1x边缘对齐
    FTM1_SC = 0x2d;                          //不能使中断屏蔽
    FTM1_MODE |= FTM_CnSC_MSB_MASK;         // 自动清除中断
    FTM1_MODE &=~1;                        //ftm使能禁
   
    FTM1_OUTMASK=0Xfe;   //0通道输出不是掩没。它继续工作正常
                           //1通道输出掩没。它就被强迫其停滞状态
   
    FTM1_COMBINE=0;      //连接通道功能(FTMx_COMBINE)
   
   
    FTM1_OUTINIT=0;
    FTM1_EXTTRIG=0;      //FTM外部触发(FTMx_EXTTRIG)
    FTM1_POL=0;          //通道,极性(FTMx_POL)
                           //0是活跃的频道极性高。
                           //1频道极性是积极的低。
    //设置边缘对齐PWM
     FTM1_QDCTRL &=~FTM_QDCTRL_QUADEN_MASK;           //QUADEN 1点,将正交解码模式(QUADEN)使至0(残疾)
     FTM1_INVCTRL=0;     //反转控制
     FTM1_SWOCTRL=0;     //软件输出控制FTM 软件输出控制(FTMx_SWOCTRL)
     FTM1_PWMLOAD=0;     //FTM PWM Load
                          //BIT9: 0加载更新值被禁用。
                          //更新值是1加载启用。
     FTM1_CNTIN=0;        //开始计数初值
     FTM1_MOD=21624;         //模值,EPWM周期取于(决MOD - CNTIN + 1)
     FTM1_C0V=1622;          //舵机                  
      
     FTM1_CNT=0;          //给计数器CNT清0,CNT只有低16位可用
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-1 21:35 , Processed in 0.040515 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表