[DemoCode下载] MS51的PWM死区设置

[复制链接]
1315|6
 楼主| wanduzi 发表于 2019-11-22 23:31 | 显示全部楼层 |阅读模式
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2019 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

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

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


  15. /*PWM deadtime define */
  16. void PWM0_DEAD_TIME_VALUE(unsigned int  DeadTimeData)
  17. {
  18.   unsigned char deadtmphigh,deadtmplow;
  19.   deadtmplow = DeadTimeData;
  20.   deadtmphigh = DeadTimeData>>8;
  21.   BIT_TMP = EA;
  22.   EA = 0;
  23.   if (deadtmphigh==0x01)
  24.   {
  25.     TA = 0xAA;
  26.     TA = 0x55;
  27.     PDTEN|=0x10;
  28.   }
  29.   TA = 0xAA;
  30.   TA = 0x55;
  31.   PDTCNT = deadtmplow;
  32.   EA = BIT_TMP;
  33. }

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

  47.     ENABLE_PWM0_CH2_P10_OUTPUT;
  48.     ENABLE_PWM0_CH3_P00_OUTPUT;
  49.     ENABLE_PWM0_CH4_P01_OUTPUT;
  50.     ENABLE_PWM0_CH5_P03_OUTPUT;

  51.   
  52.     PWM0_COMPLEMENTARY_MODE;          //Only this mode support deat time function
  53.     PWM0_CLOCK_DIV_8;
  54.     PWMPH = 0x07;
  55.     PWMPL = 0xCF;

  56.     PWM2H = 0x03;
  57.     PWM2L = 0xCF;
  58.     set_SFRS_SFRPAGE;                    // PWM4 and PWM5 duty value need set SFPPAGE 1
  59.     PWM4H = 0x01;
  60.     PWM4L = 0xCF;
  61.     clr_SFRS_SFRPAGE;
  62.    
  63.     ENABLE_PWM0_CH23_DEADTIME;
  64.     ENABLE_PWM0_CH45_DEADTIME;
  65.     PWM0_DEAD_TIME_VALUE(0x1FF);      //value never over 0x1FF
  66.    
  67. //Please always setting Dead time if needed before PWM run.   
  68.     set_PWMCON0_LOAD;
  69.     set_PWMCON0_PWMRUN;
  70.     while(1);   
  71. }


 楼主| wanduzi 发表于 2019-11-22 23:31 | 显示全部楼层
xixi2017 发表于 2019-11-23 09:24 | 显示全部楼层
死区那个设置没看懂。
xixi2017 发表于 2019-11-23 09:24 | 显示全部楼层
封装好了,可以直接用,就不管了。
huahuagg 发表于 2019-11-24 14:37 | 显示全部楼层
非常不错,
huahuagg 发表于 2019-11-24 14:37 | 显示全部楼层
其实可以封装成函数,直接调用。
xuanhuanzi 发表于 2019-11-24 15:04 | 显示全部楼层
要寄存器很熟练。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

1882

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部