打印

dspic30f4011占空比输出有问题

[复制链接]
2108|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhao837747240|  楼主 | 2013-7-17 22:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用dspic30f输出pwm 程序如下
    PTCON=0;        //PWM时基关闭
    TRISE = 0x0100;          // PWM引脚设为输出
    PTPER=166;             //PWM频率为15khz
        PTMR=0;
         PWMCON1 = 0x0346;        // PWM2L使能 PWM1禁止 PWM3互补
     PDC2=83;            
         PDC3=83;            // 占空比为0.5
     PTCON = 0x8000;                //开始pwm
程序很简单 感觉没什么问题 但在示波器上测得的占空比接近0.8了 把PDC的数改到大于PTER的值(我配置的是低电平有效)应该输出低电平 但还是有占空比的pwm波 真心不知道哪里出问题了 求高手指教
沙发
地瓜patch| | 2013-7-18 09:12 | 只看该作者
  PTPER=166;             //PWM频率为15khz
这个频率要与你设定的系统时钟有关系的。仔细看看两者的关系,计算一下

使用特权

评论回复
板凳
zhao837747240|  楼主 | 2013-7-18 09:23 | 只看该作者
地瓜patch 发表于 2013-7-18 09:12
PTPER=166;             //PWM频率为15khz
这个频率要与你设定的系统时钟有关系的。仔细看看两者的关系, ...

频率是无所谓的 关键是占空比输出不对  我现在写的是0.5的占空比 但是输出的明显偏大

使用特权

评论回复
地板
地瓜patch| | 2013-7-18 10:14 | 只看该作者
zhao837747240 发表于 2013-7-18 10:11
有人能帮帮忙吗 确实不知道问题出在哪里 手册看了好几遍了 没什么问题啊

  PDC3=83;            // 占空比为0.5
这个83是十进制,若十六进制的话是0x83.这里对么

使用特权

评论回复
5
zhao837747240|  楼主 | 2013-7-18 10:19 | 只看该作者
地瓜patch 发表于 2013-7-18 10:14
PDC3=83;            // 占空比为0.5
这个83是十进制,若十六进制的话是0x83.这里对么
...

这个没问题的 可以直接写 我转化成2进制过 一样的输出结果  

使用特权

评论回复
6
zhao837747240|  楼主 | 2013-7-18 10:21 | 只看该作者
zhao837747240 发表于 2013-7-18 10:19
这个没问题的 可以直接写 我转化成2进制过 一样的输出结果

有人说占空比是PDC/(2*PTPER) 实际输出确实跟这个相符  但我看的手册里确实是PDC/PTPER啊

使用特权

评论回复
7
地瓜patch| | 2013-7-18 10:26 | 只看该作者
PDC/(2*PTPER)改成这个是正确的么?

我真没用过pic的pwm

使用特权

评论回复
8
jiemnij| | 2013-7-18 15:59 | 只看该作者
明显数据手册没仔细看.
PDC/(2*PTPER)  这个才是正确的
PTPER 是分辨率为Tcy
而 PDC的分辨率是Tcy/2
也就是说 它的PWM是可以 半周期控制的
看下图

未命名.JPG (33.22 KB )

未命名.JPG

22.JPG (24.28 KB )

22.JPG

使用特权

评论回复
9
zhao837747240|  楼主 | 2013-7-19 15:26 | 只看该作者
jiemnij 发表于 2013-7-18 15:59
明显数据手册没仔细看.
PDC/(2*PTPER)  这个才是正确的
PTPER 是分辨率为Tcy

多谢多谢 不过没看到过上图 下图没注意

使用特权

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

本版积分规则

3

主题

15

帖子

0

粉丝