ackyee 发表于 2017-7-3 20:19:00

stc12c5a60s2的硬件8位PWM 好像不能输出0%的占空比

如题, 已经把相关控制PWM的寄存器配置成0了 ,然而输出好像有1%的方波的感觉,不能完全低电平,除非把PWM使能也关了,请问这个正常吗



void pwm_init(){
        CCON = 0;                     //Initial PCA control register
                                  //PCA timer stop running
                                  //Clear CF flag
                                  //Clear all module interrupt flag
       CL = 0;                         //Reset PCA base timer
        CH = 0;
        CMOD = 0x08;
        //CMOD=0x02;//sys_clock/2
                                  //Disable PCA timer overflow interrupt
       CCAP1H = CCAP1L =127;          //PWM0 port output 50% duty cycle square wave
        CCAP0H = CCAP0L =127;          //PWM0 port output 50% duty cycle square wave
       CCAPM1 = 0x42;                  //PCA module-0 work in 8-bit PWM mode and no PCA interrupt
        CCAPM0 = 0x42;                  //PCA module-0 work in 8-bit PWM mode and no PCA interrupt
        CR = 1;                         //PCA timer start run
        PCA_PWM1=0x00;                   //0x03¿ÉÒԹرÕPWM
        PCA_PWM0=0x00;                   //0x03¿ÉÒԹرÕPWM
}

下面是配置占空比%比
CCAP0H=CCAP0L=PWM_VALUE;
给255理论上应该是低电平了,但是每个周期有一个很短的高电平脉冲

小李非刀 发表于 2017-7-3 22:40:36

没仔细看规格书哦,有详细说明。

比如PCA0,CCAP0H是给的低电平时间,为0~255(0xff)个PCA时钟周期。
CCAP0H=0,则为连续输出高电平。CCAP0H=255(0xff),则输出为255个低电平时钟,还有1个高电平时钟。
要输出连续的低电平,要设置“第9位”,即PCA_PWM0=3;这样就可以输出连续的低电平了。

ackyee 发表于 2017-7-3 23:46:31

小李非刀 发表于 2017-7-3 22:40
没仔细看规格书哦,有详细说明。

比如PCA0,CCAP0H是给的低电平时间,为0~255(0xff)个PCA时钟周期。


谢谢您的回复, 我之前一直把PCA_PWM 当作是使能位了, 很奇怪 我赋值0x03 确实占空比输出为0
有一点很纳闷 既然pwm是8位的 且CL寄存器也是8位的,为何这里要凑成9位的寄存器作比较

小李非刀 发表于 2017-7-4 22:16:34

ackyee 发表于 2017-7-3 23:46
谢谢您的回复, 我之前一直把PCA_PWM 当作是使能位了, 很奇怪 我赋值0x03 确实占空比输出为0
有一点很纳 ...

8位的,就是将一个周期分256个细分,如果从0开始,则为0~255,输出低电平的占空比就是0/256~255/256(高电平占空比是256/256~1/256)。
8位PWM其周期有256细分,但是你要能输出0%~100%,也就是0/256~256/256,则有257个细分,所以需要9位。可以将第9位想象成可以设置直接输出连续低电平的功能位。

linghu886 发表于 2017-7-4 22:36:48

也曾问过同样的问题。

ackyee 发表于 2017-7-4 22:42:31

小李非刀 发表于 2017-7-4 22:16
8位的,就是将一个周期分256个细分,如果从0开始,则为0~255,输出低电平的占空比就是0/256~255/256(高 ...

谢谢您的回答,今天已经把问题解决了,这个地方手册确实没有好好看

hefanghua 发表于 2017-7-4 22:52:40

之前也不知道可以这样设置到0%。
页: [1]
查看完整版本: stc12c5a60s2的硬件8位PWM 好像不能输出0%的占空比