[技术问答] N76E003 以3秒为周期,但是3秒中输出不同PWM值

[复制链接]
2955|8
 楼主| wgc2015 发表于 2016-12-30 16:36 | 显示全部楼层 |阅读模式
N76E003 以3秒为周期,但是3秒中输出不同PWM值

求程序 分享
598330983 发表于 2016-12-30 16:49 | 显示全部楼层
定时器中断里修改啊。
 楼主| wgc2015 发表于 2016-12-30 17:00 | 显示全部楼层
case(1):
                                       
                                clr_GPIO1;
                                set_SFRPAGE;                                               
                                PWM5H = 0x1;                                               
                                PWM5L = 0x28;//0x5CF----20%/60ms
                                clr_SFRPAGE;                               
                            set_LOAD;
                    set_PWMRUN;
                         break;

                         case(2):       
                                set_GPIO1;
                                set_SFRPAGE;                                               
                                PWM5H = 0xB;                                               
                                PWM5L = 0x9E;//0xB9E----40%/60ms
                                clr_SFRPAGE;                               
                            set_LOAD;
                    set_PWMRUN;
                         break;

                        case(3):       
                                clr_GPIO1;
                                set_SFRPAGE;                                               
                                PWM5H = 0x11;                                               
                                PWM5L = 0x6D;//0x116D----60%/60ms
                                clr_SFRPAGE;                               
                            set_LOAD;
                    set_PWMRUN;
                          break;
 楼主| wgc2015 发表于 2016-12-30 17:01 | 显示全部楼层
不知道怎么修改好
zhuotuzi 发表于 2016-12-30 17:02 | 显示全部楼层
你定一个定时器用来计数,什么时候改变这个PWM。
 楼主| wgc2015 发表于 2016-12-30 17:07 | 显示全部楼层
但是有好几种模式,切换一种有一种占空比,另外一种又另外一种占空比
爱潜泳的鱼 发表于 2016-12-31 10:41 | 显示全部楼层
不断的修改PWM预加载寄存器中的值就OK了。
 楼主| wgc2015 发表于 2017-1-3 17:27 | 显示全部楼层
case(4):  
                                set_SFRPAGE;
                                if (key_time <= 20)                                               
                                {
                                       
                                        PWM5H = 0x17;                                               
                                        PWM5L = 0x3C;//0x173C----80%/60ms
                                        clr_SFRPAGE;                               
                                    set_LOAD;
                            set_PWMRUN;
                                        break;
                                }
                               
                                else if ((key_time >20)&&(key_time <= 39))
                                {
                                        clr_PWMRUN;       
                                        clr_LOAD;
                                        clr_PWMF;
                            clr_CLRPWM;
                                        break;
                                }       
                                else if(key_time >=40)
                                  {
                                          key_time=0;
                                        break;
                                  }
                         break;
                       
                        case(5):       
                                set_SFRPAGE;
                                if (key_time <= 20)                                               
                                {
                                       
                                        PWM5H = 0x1C;                                               
                                        PWM5L = 0x70;//0x1C70----100%/60ms
                                        clr_SFRPAGE;                               
                                    set_LOAD;
                            set_PWMRUN;
                                        break;
                                }
                               
                                else if ((key_time >20)&&(key_time <= 39))
                                {
                                        clr_PWMRUN;       
                                        clr_LOAD;
                                        clr_PWMF;
                            clr_CLRPWM;
                                        break;
                                }       
                                else if(key_time >=40)
                                  {
                                          key_time=0;
                                        break;
                                  }
                         break;
                }
 楼主| wgc2015 发表于 2017-1-3 17:29 | 显示全部楼层
发现一个问题,每隔几秒会出现一次256ms的高电平,不知道是什么原因?求大师帮我分析一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

16

帖子

0

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