[DemoCode下载] ML51的PWM互补输出

[复制链接]
 楼主| gejigeji521 发表于 2020-5-21 22:07 | 显示全部楼层 |阅读模式
  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. //***********************************************************************************************************

  10. #include "ML51.h"

  11. /**
  12. * [url=home.php?mod=space&uid=247401]@brief[/url]       PWM Complementary mode PWM0 channel 0~5 output demo all with dead zone time insert.
  13. * @param       None
  14. * [url=home.php?mod=space&uid=266161]@return[/url]      None
  15. * [url=home.php?mod=space&uid=1543424]@Details[/url]     Channel 0 high duty 10%, Channel 1 high duty 20% ..... Channel 5 high duty 60%.
  16. */

  17. void main (void)
  18. {

  19. /* PWM0 initial setting  
  20.    * include pwm.c in Library for PWM mode setting
  21.    @note: the period setting of all PWM0 should be same, for example following 0x6FF.
  22. */
  23.   
  24.     PWM0_ClockSource(PWM_FSYS,128);                                    // define PWM0 clock source and divider.

  25. /* PWM period = 1/HIRC * 128 * 0x6FF =   9552 us
  26. *  high Duty 10% = 955 us  */
  27.     MFP_P05_PWM0_CH0;                                                  // multi function pin define P0.5 as PWM0 channel 0 output
  28.     P05_PUSHPULL_MODE;
  29.     MFP_P24_PWM0_CH1;                                                  // multi function pin define P2.4 as PWM0 channel 1 output
  30.     P24_PUSHPULL_MODE;
  31.     PWM0_ConfigOutputChannel(0,Complementary,EdgeAligned,0x6FF,10);    // setting PWM channel 0 as 10% duty high of 0x6FF PWM period = 0x00B3
  32.   
  33. /* PWM period = 1/HIRC * 128 * 0x6FF =   9552 us
  34. *  high Duty 30% = 2866 us  */
  35.     MFP_P03_PWM0_CH2;                                                  // multi function pin define P0.3 as PWM0 channel 2 output
  36.     P03_PUSHPULL_MODE;
  37.     MFP_P22_PWM0_CH3;                                                  // multi function pin define P2.2 as PWM0 channel 3
  38.     P22_PUSHPULL_MODE;
  39.     PWM0_ConfigOutputChannel(2,Complementary,EdgeAligned,0x6FF,30);    // setting PWM channel 2 as 30% duty high of 0x6FF PWM period = 0x0219
  40.    
  41. /* PWM period = 1/HIRC * 128 * 0x6FF =   9552 us
  42. *  high Duty 50% = 4776 us  */  
  43.     MFP_P01_PWM0_CH4;                                                  // multi function pin define P0.1 as PWM0 channel 4
  44.     P01_PUSHPULL_MODE;
  45.     MFP_P20_PWM0_CH5;                                                  // multi function pin define P0.5 as PWM0 channel 0
  46.     P20_PUSHPULL_MODE;
  47.     PWM0_ConfigOutputChannel(4,Complementary,EdgeAligned,0x6FF,50);    // setting PWM channel 4 as 50% duty high of 0x6FF PWM period = 0x037F
  48.    
  49.     PWM0_DeadZoneEnable(PWM0_CH23,0x155);
  50.    
  51.     PWM0_RUN();
  52.    
  53.     while(1);
  54. }





 楼主| gejigeji521 发表于 2020-5-21 22:10 | 显示全部楼层
带死区插入的互补模式
当PWMMOD[1:0] = [0:1],互补模式使能。在该模式中PG0/2/4输出信号与独立模式下输出信号相同,
但PG1/3/5 输出与PG0/2/4输出的信号互补。同时忽略PG1/3/5占空比寄存器{PWMnH, PWMnL}
(n:1/3/5)。该模式可使PG0/PG1形成一对互补的PWM输出。同样 PG2/PG3, PG4/PG5也一样。
xinpian101 发表于 2020-5-21 23:56 | 显示全部楼层
互补伴随着死区,所以在例子里一般都是死区
antusheng 发表于 2020-5-22 08:59 | 显示全部楼层
如果2路可以互补,两路可以独立,两路可以相同,就牛X了。
598330983 发表于 2020-5-22 13:26 | 显示全部楼层
互补模式常用语电机控制。
zhuomuniao110 发表于 2020-5-22 23:15 | 显示全部楼层
这个用的最多了。
xinxianshi 发表于 2020-5-24 22:02 | 显示全部楼层
好用。
zhuotuzi 发表于 2020-5-25 14:51 | 显示全部楼层
控制电机很多用这个模式
huangcunxiake 发表于 2020-5-25 22:33 | 显示全部楼层
这个功能用过几次。
xiaoqizi 发表于 2020-6-5 18:11 | 显示全部楼层
非常感谢楼主分享
木木guainv 发表于 2020-6-5 18:12 | 显示全部楼层
楼主辛苦了
磨砂 发表于 2020-6-5 18:12 | 显示全部楼层
死区范围如何确定的呢
晓伍 发表于 2020-6-5 18:12 | 显示全部楼层
逻辑性很好
八层楼 发表于 2020-6-5 18:13 | 显示全部楼层
感谢楼主的分享哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

195

主题

2460

帖子

8

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

195

主题

2460

帖子

8

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