打印
[DemoCode下载]

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

[复制链接]
644|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
首先还是来看看PWM中断寄存器,及其含义。

PWM模块带有标志位 PWMF (PWMCON0.5) 用来标志当前 PWM周期完成状态。PWMF通过软件清零。
别忘记了使能PWM中断,以及开启总中断。

使用特权

评论回复
沙发
xuanhuanzi|  楼主 | 2019-6-23 20:44 | 只看该作者
再来看看PWM中断的中断号。

使用特权

评论回复
板凳
xuanhuanzi|  楼主 | 2019-6-23 20:44 | 只看该作者
就是这么简单,就是这么直接,接下来我们就开始配置代码吧。
在本次的例程中,我们将在中断中,修改初始设定的占空比,最后再逻辑分析仪中进行查看。

使用特权

评论回复
地板
xuanhuanzi|  楼主 | 2019-6-23 20:45 | 只看该作者
void main(void)
{
    Set_All_GPIO_Quasi_Mode;//所有IO设置为双向模式
   
                                EA=1;//开启总中断
                                set_EPWM;//使能pwm中断
                     PWM_INT_PWM4;//设定中断源为PWM4
              PWM_FALLING_INT;//下降沿触发
       
       
                                PWM5_P03_OUTPUT_ENABLE;//使能PWM5,通过P03引脚输出
                                PWM4_P01_OUTPUT_ENABLE;
       
        clr_PWMTYP;//边沿对齐模式
        clr_PWMMOD0;//设置为独立输出模式
        clr_PWMMOD1;
       
        PWM_CLOCK_DIV_8;//8分频模式
        PWMPH = 0x07;//1999(Dec)
        PWMPL = 0xCF;

/**********************************************************************
        PWM frequency = Fpwm/((PWMPH,PWMPL) + 1) <Fpwm = Fsys/PWM_CLOCK_DIV>
                                                                = (16MHz/8)/(0x7CF + 1)
                                                                = 1KHz (1ms)
                                                               
        PWMDT=(PDTCNT+1)/Fpwm        =10/2Mhz=0.005ms
***********************************************************************/       
       
    set_SFRPAGE;//PWM4 and PWM5 duty seting is in SFP page 1
    PWM4H = 0x01;//500(Dec)               
    PWM4L = 0xf4;
               
                PWM5H = 0x01;//500(Dec)               
    PWM5L = 0xf4;
               
    clr_SFRPAGE;                                            
          set_LOAD;//载入周期和占空比
    set_PWMRUN;//开始输出PWM
    while(1)
    {
       //构建你的代码
    }
}


void PWMISR() interrupt 13
{
        if(PWMF)//检测到中断标志位
        {
                  clr_LOAD;//关闭载入之前的值
                  clr_PWMF;//清楚PWM中断标志位                      Timer0_Delay1ms(1)
                        set_SFRPAGE;//PWM4 and PWM5 duty seting is in SFP page 1
                        PWM5L-=30;
                        clr_SFRPAGE;   
                        set_LOAD;//设定完成,开始载入
        }
}

使用特权

评论回复
5
xuanhuanzi|  楼主 | 2019-6-23 20:45 | 只看该作者
最终效果如下图所示,上面第一行没有发生变化的为PWM4,依然按照初值运行。

使用特权

评论回复
6
643757107| | 2019-6-23 23:30 | 只看该作者
PWM死区支持吗

使用特权

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

本版积分规则

171

主题

2169

帖子

3

粉丝