• 陈全国在新疆果业集团调研 2019-05-21
  • “神剧”不再横行,抗战剧回到正轨 2019-05-18
  • 【专题】打一场扶贫攻坚硬仗 河北在行动 2019-05-16
  • 河北千名贫困儿童脊椎健康救助公益活动正式启动 2019-04-23
  • “四好农村路”助力乡村振兴 城市道路增亮让回家路更明亮 2019-04-20
  • 中纪委:有干部不信马列信鬼神 触犯纪律信小圈子 2019-04-20
  • 鸟瞰“中国围屋之乡” 造型独特如城堡 2019-04-16
  • 先想好如何处理可能的危害,要有经济“卫国战争”的准备,要将困难多设想一点,想到了就不会很被动。 2019-04-16
  • 实现中华民族伟大复兴是近代以来中华民族最伟大的梦想(认真学习宣传贯彻党的十九大精神) 2019-04-13
  • 报道新闻记录历史 70载人民日报见证中国发展大事 2019-04-13
  • 新华网评:凝聚打赢脱贫攻坚战的强大合力 2019-04-02
  • 打造历史文化名城 “安宁记忆”项目启幕 2019-04-02
  • 打开设计图纸的说明。 2019-03-30
  • 一语惊坛(5月15日):川航备降,是临危不惧的中国智慧的中国奇迹。 2019-03-25
  • 社长手记造车奇人尹同跃并非只为奇瑞而来 2019-03-17
  • 11选5技巧稳赚公式:社区导航

     

    广东十一选五开奖图

    搜索
    查看: 2235|回复: 11
    打印 上一主题 下一主题

    [求助] PIC单片机产生PWM波波形出问题了

    [复制链接]

    广东十一选五开奖图 www.guu6.com 7

    TA的帖子

    0

    TA的资源

    一粒金砂(中级)

    Rank: 2

    跳转到指定楼层
    楼主
    发表于 2018-11-5 20:20 | 只看该作者 |只看大图 |倒序浏览 |阅读模式
    本帖最后由 Sevenfee 于 2018-11-6 20:32 编辑

    用PIC16F887单片机产生方波,当我把方波频率设为4KHz时波形是正常的,当我改变TIMER2的分频值,从4改为16 ,此时频率应该变为1KHz,此时频率是对了,可是波形却变得很奇怪。  求有经验的大神指导下!

    这是产生的4KHZ正常波形,占空比为50%




    这是1KHZ有问题的波形,占空比为60%。  这个高电平会突然下降到一个比较低的电平再上升。



    1KHz占空比80%就正常了

    此帖出自单片机论坛


    7

    TA的帖子

    0

    TA的资源

    一粒金砂(中级)

    Rank: 2

    沙发
     楼主| 发表于 2018-11-5 20:23 | 只看该作者
    主要的程序我也贴上来各位看一下

    /********端口初始化函数********/
    void init()
    {
            ANSELH=0x00;                     //设置B口为数字I/O口
            OPTION_REG=0x00;
            WPUB=0xFF;         //设置B口弱上拉
            INTCON=0x00;       //关总中断
            PIE1=0;            //PIE1的中断禁止
            PIE2=0;            //PIE2的中断禁止
            TRISB0=1;
            TRISB1=1;          //将RB1设置为输入口,按按键
            TRISB2=1;          //将RB2设置为输入口,按按键
            TRISB3=1;
            TRISB4=1;
            RC1=0;
            TRISC1=0;          //脉宽调制输出引脚,设置为输出
    }
    /********PWM初始化函数********/
    void PWM_Init()
    {
            PR2=249;           //脉宽调制波形的周期为1000us        
            CCP2CON=0x0C;      //CCP2??楣ぷ髟赑WM模式,占空因数的低两位为00
            T2CON=0x02;        //禁止TMR2,且前后分频值为16,同时开始输出PWM
            CCPR2L=0xB8;       //脉宽调制波形的占空比初始值
    }
    /********键盘扫描函数*******    */
    void keyscan()
    {
            if(RB1==0)                  //如果是RB1键按下
            {
                    delay_ms(5);              //延时去抖
                    if(RB1==0)              //确认是否有键按下
                    {
                            while(!RB1);        //等待按键释放
                            CCP2CON=0x0C;
                            CCPR2L=0xB8;                   //80%占空比
                            TMR2ON=1;
                    }
            }
            if(RB2==0)                  //如果是RB2键按下
            {
                    delay_ms(5);              //延时去抖
                    if(RB2==0)              //确认是否有键按下
                    {
                            while(!RB2);        //等待按键释放
                            CCP2CON=0x0C;
                            CCPR2L=0x96;                   //60%占空比
                            TMR2ON=1;
                    }
            }
            if(RB0==0)                  //如果是RB0键按下
            {
                    delay_ms(5);              //延时去抖
                    if(RB0==0)              //确认是否有键按下
                    {
                            while(!RB0);        //等待按键释放
                            CCP2CON=0x00;                   //关PWM
                            TMR2ON=0;                        //禁止TMR2
                            //delay_ms(5);
                            RC1=0;
                    }
            }
    }
    /********主函数********/
    void main()
    {
            init();                     //系统初始化
            PWM_Init();                 //脉冲宽度初始化
            while(1)
            {
                    keyscan();              //调用按键扫描处理脉宽因数
            }
    }


    508

    TA的帖子

    0

    TA的资源

    一粒金砂(高级)

    Rank: 3Rank: 3

    板凳
    发表于 2018-11-5 23:56 | 只看该作者
    有可能是切换占空比的时候出现的抖动
    刻苦学习,共同进步


    373

    TA的帖子

    0

    TA的资源

    纯净的硅(初级)

    Rank: 4

    4
    发表于 2018-11-6 08:04 | 只看该作者
    和關狗,有沒有關係?


    3544

    TA的帖子

    182

    TA的资源

    管理员

    Rank: 13Rank: 13Rank: 13Rank: 13

    5
    发表于 2018-11-6 08:52 | 只看该作者
    帮你呼叫版主@dingzy_2002


    538

    TA的帖子

    0

    TA的资源

    版主

    Rank: 6Rank: 6

    6
    发表于 2018-11-6 11:27 | 只看该作者
    PIC8位普通单片机的PWM输出设置确实较其它8位单片机要不同,而且我也曾经走过类似的弯路。
    主要还是要严格按数据手册的设置来:尤其是初始化时

    另外,如果改变PWM的周期频率,分辨率等,也要按上图的设置来

    如果是确定了PWM的周期频率,分辨率后,仅改变点空比,则只需要修改CCPR1L即可,不要顺便CCP1CON值,这会引起不必要的异常发生。

    点评

    我刚试过不修改CCP2ON,波形还是会出现图中异常  详情 回复 发表于 2018-11-6 20:15


    538

    TA的帖子

    0

    TA的资源

    版主

    Rank: 6Rank: 6

    7
    发表于 2018-11-6 11:32 | 只看该作者
    另外,如果关闭PWM后再开启,也同样要按上楼图中设置初始化。
    所以,想暂时使PWM无输出(PWM还要继续工作),只要设置CCPR1L=0就可以了
    就不需要再次对PWM初始化了。(这对低功耗不利,因为PWM??槭贾展ぷ?,在低功耗要求下,则只能关闭,再初始化开启)。


    538

    TA的帖子

    0

    TA的资源

    版主

    Rank: 6Rank: 6

    8
    发表于 2018-11-6 11:36 | 只看该作者
    本帖最后由 dingzy_2002 于 2018-11-6 11:37 编辑

    给个我的例程(基于PIC12F615):

    1.初始化部分:
    //PWM:
            CCP1CON        = 0x0C;        //普通PWM模式,CCP1输出高电平有效
            CCPR1L        = (PWM_MAX);

    ...
    //管脚方向设置:
            TRISIO        =        0b00001011;
    //        
            PIE1=WPUA=IOCA        =0;
            PR2        = (PWM_MAX-1);//2MHz/125=16kHz,后分频4时,中断频率4KHz

    ...
            PIR1        = 0x00;
            PIE1        = 0x00;
            TMR2IE        = 1;
            TMR2ON        = 1;
            INTCON        = 0xC0;                //打开外部,T2中断

    ...

    2.在程序中修改点空比(连续调节):
                    DA_TEMP=CCPR1L;
                    if(I_AVE>Iset_value)
                    {
                            if(--DA_TEMP>=(PWM_MAX))
                                    DA_TEMP = 0x00;
                    }
                    if(I_AVE<Iset_value)
                    {
                            if(++DA_TEMP>=(PWM_MAX))
                                    DA_TEMP = (PWM_MAX);
                    }
                    CCPR1L        =DA_TEMP;        





    7

    TA的帖子

    0

    TA的资源

    一粒金砂(中级)

    Rank: 2

    9
     楼主| 发表于 2018-11-6 20:07 | 只看该作者
    dingzy_2002 发表于 2018-11-6 11:36
    给个我的例程(基于PIC12F615):

    1.初始化部分:
    //PWM:
            CCP1CON        = 0x0C;        //普 ...

    感谢版主的回答,  现在我的问题是,我在选取了一个频率后,可能80%占空比是正常的波形,当我把占空比调到60% 就会出现图中的电平下降再上升的一段,我认为 这样程序主体应该是没有问题的。  今天我换了一个4MHZ的晶振重新编了几个波形,结果还是这个样子。 同一频率下 占空比不同,波形可能就会乱。    问题还是没有解决哎


    7

    TA的帖子

    0

    TA的资源

    一粒金砂(中级)

    Rank: 2

    10
     楼主| 发表于 2018-11-6 20:09 | 只看该作者
    迈尔风随 发表于 2018-11-5 23:56
    有可能是切换占空比的时候出现的抖动

    同一频率,80%占空比可得到正常波形,60%占空比出来就会跟上图的错误一样,应该不是抖动原因造成的,今天我还换了一个晶振,结果还是那样。  


    7

    TA的帖子

    0

    TA的资源

    一粒金砂(中级)

    Rank: 2

    11
     楼主| 发表于 2018-11-6 20:15 | 只看该作者
    dingzy_2002 发表于 2018-11-6 11:27
    PIC8位普通单片机的PWM输出设置确实较其它8位单片机要不同,而且我也曾经走过类似的弯路。
    主要还是要严格 ...

    我刚试过不修改CCP2ON,波形还是会出现图中异常


    538

    TA的帖子

    0

    TA的资源

    版主

    Rank: 6Rank: 6

    12
    发表于 2018-11-7 08:31 来自手机 | 只看该作者
    再看下是否有其他程序影响PWM输出,如中断,引脚操作等。


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

    本版积分规则

    • 论坛活动 E手掌握

      扫码关注
      EEWORLD 官方微信

    • EE福利  唾手可得

      扫码关注
      EE福利 唾手可得

    Archiver|手机版|小黑屋|广东十一选五开奖图 ( 京ICP证 060456 )

    GMT+8, 2019-5-23 02:06 , Processed in 0.403948 second(s), 18 queries , Gzip On, MemCache On.

    快速回复 广东十一选五开奖图 返回列表
  • 陈全国在新疆果业集团调研 2019-05-21
  • “神剧”不再横行,抗战剧回到正轨 2019-05-18
  • 【专题】打一场扶贫攻坚硬仗 河北在行动 2019-05-16
  • 河北千名贫困儿童脊椎健康救助公益活动正式启动 2019-04-23
  • “四好农村路”助力乡村振兴 城市道路增亮让回家路更明亮 2019-04-20
  • 中纪委:有干部不信马列信鬼神 触犯纪律信小圈子 2019-04-20
  • 鸟瞰“中国围屋之乡” 造型独特如城堡 2019-04-16
  • 先想好如何处理可能的危害,要有经济“卫国战争”的准备,要将困难多设想一点,想到了就不会很被动。 2019-04-16
  • 实现中华民族伟大复兴是近代以来中华民族最伟大的梦想(认真学习宣传贯彻党的十九大精神) 2019-04-13
  • 报道新闻记录历史 70载人民日报见证中国发展大事 2019-04-13
  • 新华网评:凝聚打赢脱贫攻坚战的强大合力 2019-04-02
  • 打造历史文化名城 “安宁记忆”项目启幕 2019-04-02
  • 打开设计图纸的说明。 2019-03-30
  • 一语惊坛(5月15日):川航备降,是临危不惧的中国智慧的中国奇迹。 2019-03-25
  • 社长手记造车奇人尹同跃并非只为奇瑞而来 2019-03-17
  • 中国福利彩票15选5 pk10计划软件黄金版 生肖时时彩中奖几率 山东群英会缩水工具 pk10冠亚和小1.85网站 马拉加vs格拉纳达分析 3d2017102期詹天佑分析 中彩网16004期小玉猫双胆必下一 体彩幸运赛车开奖直播 北京时时彩平台官网下载 广东彩票网上投注 中彩网3d试机号 中国足彩网36选7 足球训练 中彩网双色球图表 德州扑克怎么玩