打印

PWM频率不对,哪里有错啊?

[复制链接]
1177|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dpzk|  楼主 | 2014-12-25 16:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PWM, se, TE, hz, TI
芯片是16F1936,晶振是8MHZ,目的是用CCP4输出一个1KHZ的方波,程序烧好后,通电工作,CCP4输出是4KHZ的方波,下面是源程序(省略了配置字),请问哪里出了问题?谢谢!
#include<xc.h>

void main(void)         //output PWM by ccp4 together with timer2
{
    TRISB0=0;           //ccp4 selected
    PR2=31;             //1mS as cycle
    T2CON=0x0f;         //64 as prescaler
    CCPTMRS0=0x00;      //timer2 selected
    CCP4CON=0x0f;       //PWM selected
    CCPR4L=0x10;        //0.5 duty cycle
    while(1) ;
}
沙发
ningling_21| | 2014-12-25 23:09 | 只看该作者
有可能  PR2=31;  这个值不对造成的

使用特权

评论回复
板凳
dpzk|  楼主 | 2014-12-26 11:21 | 只看该作者
ningling_21 发表于 2014-12-25 23:09
有可能  PR2=31;  这个值不对造成的

应该是对的吧。。。
规格书上写 PWM Period=[(PRx)+1]*4*Tosc*(TMRx Prescale Value)
带入就是(31+1)*4*(1/8)*10^-6*64=1.024*10^-3

使用特权

评论回复
地板
yklstudent| | 2014-12-26 12:53 | 只看该作者
TOSC=4/FOSC=4/8us=0.5us

使用特权

评论回复
5
dpzk|  楼主 | 2014-12-26 17:27 | 只看该作者
yklstudent 发表于 2014-12-26 12:53
TOSC=4/FOSC=4/8us=0.5us


问题解决了,原来程序里的配置字PLL是打开的,现在把他关掉,就可以正常输出1KHZ的方波。
应该是配置字PLL打开的话Fosc是4倍的晶振频率,关掉就是晶振频率。(但始终Tosc=1/Fosc)
这个内容在规格书里说的真心太不明显了。。。

使用特权

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

本版积分规则

1

主题

3

帖子

0

粉丝