打印

求助PWM占空比与死区问题。。

[复制链接]
5013|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
南京小鱼儿|  楼主 | 2012-5-11 19:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是dspic33fj32mc304芯片,用其PWM模块产生一确定占空比波形。。不知为什么会出现如下波形,互不输出。。PWMH与PWML波形占空比不同。。。

304PWM.pdf

784.66 KB

沙发
南京小鱼儿|  楼主 | 2012-5-11 20:26 | 只看该作者
互补输出。。

使用特权

评论回复
板凳
南京小鱼儿|  楼主 | 2012-5-11 20:31 | 只看该作者
#if defined(__dsPIC33F__)
#include "p33fxxxx.h"
#endif
#include <stdio.h>
   _FOSCSEL(FNOSC_FRC);   
   _FOSC(FCKSM_CSECMD & OSCIOFNC_OFF  & POSCMD_XT);  
// Clock Switching is
// enabled and Fail Safe Clock Monitor is disabled
        // OSC2 Pin Function:
         // OSC2 is Clock Output
        // Primary Oscillator
     // Mode: XT Crystal
   _FWDT(FWDTEN_OFF);              
  // 配置位
  // void Delay(void);
#include  <math.h>
#include  <stdio.h>
#define  Fcy  8000000/2

//void  MCPWM_Inital(void)
//void  int main(void)
//{
//MCPWM_Inital(void);
//while(1);
//}
void   MCPWM_Inital(void)
{
  unsigned int ValuePDC;
  unsigned int ValueDT ;
  unsigned int DUTYCYCLE;
  P1OVDCON=0xff00;             //禁用OVDCON
  P1TCON=0xa000;               //自由模式
  PWM1CON1=0x0022;             //PWM互补输出,只有PWM1 2输出
  PWM1CON2=0;                  //允许占空比更新
  P1SECMP=0;                  //不使用特殊事件
//PTPER=((40000000)/1000000)-1=39   、100K
  
  P1TPER=39;                 //根据公式计算出PTPER的值
  //ValueDT=4;                 
  P1DTCON1=0x0004;             //计算出DT的值,确定DTCON1
  //ValuePDC=(147*DUTYCYCLE+1)*2;
  P1DC2=32;//ValuePDC;      //计算确定占空比寄存器的值   
  P1DTCON2= 0X0003;
  P1FLTACON=0x0000;    //故障无效
   
}
int main(void)
{
        MCPWM_Inital();
        while(1)
        {
        }
}
程序如上。。。

使用特权

评论回复
地板
南京小鱼儿|  楼主 | 2012-5-11 21:44 | 只看该作者
[img][/img]

使用特权

评论回复
5
XIEYUANBIN| | 2012-5-12 05:55 | 只看该作者
当你死区时间大于PWM占空比时可能无输出。或者一方恒高一方恒低

使用特权

评论回复
6
zl366090808| | 2012-12-18 16:43 | 只看该作者
南京小鱼儿 发表于 2012-5-11 20:31
#if defined(__dsPIC33F__)
#include "p33fxxxx.h"
#endif

请问你这个的PWM的占空比是多少?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

5

帖子

0

粉丝