找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1861|回复: 0
打印 上一主题 下一主题
收起左侧

N76E003 PWM中断及设定新的占空比

[复制链接]
跳转到指定楼层
楼主
ID:16201 发表于 2019-11-11 23:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先还是来看看PWM中断寄存器,及其含义。
PWM模块带有标志位 PWMF (PWMCON0.5) 用来标志当前 PWM周期完成状态。PWMF通过软件清零。
别忘记了使能PWM中断,以及开启总中断。
再来看看PWM中断的中断号。

就是这么简单,就是这么直接,接下来我们就开始配置代码吧。
在本次的例程中,我们将在中断中,修改初始设定的占空比,最后再逻辑分析仪中进行查看。
  1. void main(void)
  2. {
  3.     Set_All_GPIO_Quasi_Mode;//所有IO设置为双向模式

  4.                                                         EA=1;//开启总中断
  5.                                                         set_EPWM;//使能pwm中断
  6.                                  PWM_INT_PWM4;//设定中断源为PWM4
  7.                     PWM_FALLING_INT;//下降沿触发
  8.             
  9.             
  10.                                                         PWM5_P03_OUTPUT_ENABLE;//使能PWM5,通过P03引脚输出
  11.                                                         PWM4_P01_OUTPUT_ENABLE;
  12.             
  13.         clr_PWMTYP;//边沿对齐模式
  14.         clr_PWMMOD0;//设置为独立输出模式
  15.         clr_PWMMOD1;
  16.             
  17.         PWM_CLOCK_DIV_8;//8分频模式
  18.         PWMPH = 0x07;//1999(Dec)
  19.         PWMPL = 0xCF;

  20. /**********************************************************************
  21.               PWM frequency = Fpwm/((PWMPH,PWMPL) + 1) <Fpwm = Fsys/PWM_CLOCK_DIV>
  22.                                                                                                                 = (16MHz/8)/(0x7CF + 1)
  23.                                                                                                                 = 1KHz (1ms)
  24.                                                                                                                
  25.               PWMDT=(PDTCNT+1)/Fpwm              =10/2Mhz=0.005ms
  26. ***********************************************************************/            
  27.             
  28.     set_SFRPAGE;//PWM4 and PWM5 duty seting is in SFP page 1
  29.     PWM4H = 0x01;//500(Dec)               
  30.     PWM4L = 0xf4;
  31.                            
  32.                             PWM5H = 0x01;//500(Dec)               
  33.     PWM5L = 0xf4;
  34.                            
  35.     clr_SFRPAGE;                                          
  36.                 set_LOAD;//载入周期和占空比
  37.     set_PWMRUN;//开始输出PWM
  38.     while(1)
  39.     {
  40.        //构建你的代码
  41.     }
  42. }


  43. void PWMISR() interrupt 13
  44. {
  45.               if(PWMF)//检测到中断标志位
  46.               {
  47.                               clr_LOAD;//关闭载入之前的值
  48.                               clr_PWMF;//清楚PWM中断标志位                                  Timer0_Delay1ms(1)
  49.                                           set_SFRPAGE;//PWM4 and PWM5 duty seting is in SFP page 1
  50.                                           PWM5L-=30;
  51.                                           clr_SFRPAGE;  
  52.                                           set_LOAD;//设定完成,开始载入
  53.               }
  54. }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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