打印
[DemoCode下载]

MS51的PWM死区设置

[复制链接]
938|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wanduzi|  楼主 | 2019-11-22 23:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2019 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

/***********************************************************************************************************/
/* Website: http://www.nuvoton.com                                                                         */
/*  E-Mail : MicroC-8bit@nuvoton.com                                                                       */
/*  Date   : June/21/2019                                                                                   */
/***********************************************************************************************************/

/************************************************************************************************************/
/*  File Function: MS51 PWM insert dead time demo code                                                      */
/************************************************************************************************************/
#include "MS51_8K.H"


/*PWM deadtime define */
void PWM0_DEAD_TIME_VALUE(unsigned int  DeadTimeData)
{
  unsigned char deadtmphigh,deadtmplow;
  deadtmplow = DeadTimeData;
  deadtmphigh = DeadTimeData>>8;
  BIT_TMP = EA;
  EA = 0;
  if (deadtmphigh==0x01)
  {
    TA = 0xAA;
    TA = 0x55;
    PDTEN|=0x10;
  }
  TA = 0xAA;
  TA = 0x55;
  PDTCNT = deadtmplow;
  EA = BIT_TMP;
}

/************************************************************************************************************/
/*    Main function                                                                                         */
/*     PWM4 P0.5 simple output a 2.7KHz 1/4high duty signal                                                 */
/************************************************************************************************************/
void main(void)
{
    ALL_GPIO_QUASI_MODE;
/*-----------------------------------------------------------------------------------------------------------------
  PWM frequency   = Fpwm/((PWMPH,PWMPL)+1) = (16MHz/8)/(0x7CF+1) = 1KHz (1ms)
  PWM4 high duty   = PWM4H,PWM4L = 0x01CF = 1/4 PWM period
  PWM0 high duty   = PWM0H,PMW0L = 0x03CF = 1/2 PWM period
  Dead time       = 0x1FF <PDTEN.4+PDTCNT[7:0]>/Fsys = 0x1FF/Fsys = 512/16000000 = 32 us (max value)
-----------------------------------------------------------------------------------------------------------------*/

    ENABLE_PWM0_CH2_P10_OUTPUT;
    ENABLE_PWM0_CH3_P00_OUTPUT;
    ENABLE_PWM0_CH4_P01_OUTPUT;
    ENABLE_PWM0_CH5_P03_OUTPUT;

  
    PWM0_COMPLEMENTARY_MODE;          //Only this mode support deat time function
    PWM0_CLOCK_DIV_8;
    PWMPH = 0x07;
    PWMPL = 0xCF;

    PWM2H = 0x03;
    PWM2L = 0xCF;
    set_SFRS_SFRPAGE;                    // PWM4 and PWM5 duty value need set SFPPAGE 1
    PWM4H = 0x01;
    PWM4L = 0xCF;
    clr_SFRS_SFRPAGE;
   
    ENABLE_PWM0_CH23_DEADTIME;
    ENABLE_PWM0_CH45_DEADTIME;
    PWM0_DEAD_TIME_VALUE(0x1FF);      //value never over 0x1FF
   
//Please always setting Dead time if needed before PWM run.   
    set_PWMCON0_LOAD;
    set_PWMCON0_PWMRUN;
    while(1);   
}


使用特权

评论回复
沙发
wanduzi|  楼主 | 2019-11-22 23:31 | 只看该作者

使用特权

评论回复
板凳
xixi2017| | 2019-11-23 09:24 | 只看该作者
死区那个设置没看懂。

使用特权

评论回复
地板
xixi2017| | 2019-11-23 09:24 | 只看该作者
封装好了,可以直接用,就不管了。

使用特权

评论回复
5
huahuagg| | 2019-11-24 14:37 | 只看该作者
非常不错,

使用特权

评论回复
6
huahuagg| | 2019-11-24 14:37 | 只看该作者
其实可以封装成函数,直接调用。

使用特权

评论回复
7
xuanhuanzi| | 2019-11-24 15:04 | 只看该作者
要寄存器很熟练。

使用特权

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

本版积分规则

129

主题

1657

帖子

3

粉丝