mcu_hui 发表于 2012-12-20 22:17:19

坑爹的STC PWM ,设置全灭时,居然还有毛刺。

                                               // STC单片机PWM脉宽调制功能模块
#include <STC12C5620AD.H>
// PWM初始化
// 将PCA初始化为PWM模式,初始占空比为0
// 参数:0,1,2,3,分别表示对PWM0、PWM1、PWM2、PWM3初始化





void PWM_Init(int i)
{
CMOD = 0x00; // 设置PCA定时器频率为内部时钟fosc/2
CL = 0x00;
CH = 0x00;

CCAPM0 = 0x42; // PWM0设置PCA工作方式为PWM方式(0100 0010)
   CCAP0L = 0x00; // 设置PWM0初始值与CCAP0H相同
   CCAP0H = 0x00; // PWM0初始为0

CCAPM1 = 0x42;
CCAP1L = 0x00;
CCAP1H = 0x00;

CCAPM2 = 0x42;
   CCAP2L = 0x00;
CCAP2H = 0x00;

CCAPM3 = 0x42;
   CCAP3L = 0x00;
   CCAP3H = 0x00;
   

CR = 1; // 启动PCA定时器
}
// PWM占空比设置
// 参数1:0,1,2,3,分别表示对PWM0、PWM1、PWM2、PWM3设置占空比
// 参数2:0x00~0xFF(或0~255),0x00时全部为低电平,0xFF时全部为高电平
void PWM_Set(int i, unsigned char c)
{


   CCAP0L = c;
   CCAP0H = c;

CCAP1L = c;
CCAP1H = c;

   CCAP2L = c;
   CCAP2H = c;

CCAP3L = c;
CCAP3H = c;

}


void main()
{
unsigned char t;
t=0;
PWM_Init(t);
PWM_Set(t,255);//设置没全部低电平,LED暗亮,用示波器看有个周期的毛刺。
while(1)
{
// PWM_Set(t,128);
}



}

mcu_hui 发表于 2012-12-20 22:19:05

用在LED 调光,居然暗亮。最后才发现STC的问题,打给STC技术支持,居然说这个就是这样的,就挂断线,这态度。。。

xunke 发表于 2012-12-20 23:35:23

不知为什么,只有把PWM禁掉,才完全输出高电平。

xiaowu191 发表于 2012-12-20 23:47:54

说明书里有提到

当EPCnL = 0及ECCAPnL=00H时,PWM固定输出高
当EPCnL = 1及ECCAPnL=FFH时,PWM固定输出低

jetli 发表于 2012-12-21 00:22:53

{:mad:}{:shocked:}

110112110 发表于 2012-12-21 00:34:02

用过STC的PWM,驱动舵机的,效果还行吧,用虚拟逻辑分析仪没发现毛刺

wsy2012 发表于 2012-12-21 22:22:38

本帖最后由 wsy2012 于 2012-12-21 22:24 编辑

stc的pwm还是不错的,比他的eeprom强多了。
用我的山寨版逻辑分析仪没有发现毛刺。

tonyone 发表于 2012-12-22 22:39:55

估计我也碰到类似的问题,我没有示波器测量。pwm全低时,恒流源IC后面的LED微亮,郁闷死了,请教楼主的解决之道

mii 发表于 2012-12-31 23:06:33

xiaowu191 发表于 2012-12-20 23:47 static/image/common/back.gif
说明书里有提到

当EPCnL = 0及ECCAPnL=00H时,PWM固定输出高


确实这个在判断最大值与最小值要将PCA_PWMn这个寄存器设置一下,才可以将毛刺消除

lxa0 发表于 2013-1-1 12:42:09

stc的芯片也就是功能多一点
感觉它的品质根本比不过at的产品

gaoyichuan000 发表于 2013-1-1 13:32:32

12C4052AD的PWM
示波器实测没发现毛刺啊

bbssilverkey 发表于 2013-1-1 16:58:14

12c5a60s2,经常用,没毛刺,估计楼主的没设置好

CANSTAR 发表于 2013-1-1 17:02:36

没用过STC的,不好评价

sco518 发表于 2013-1-1 18:01:59

应该是设置问题。

tonyone 发表于 2013-1-1 21:22:58

mii 发表于 2012-12-31 23:06 static/image/common/back.gif
确实这个在判断最大值与最小值要将PCA_PWMn这个寄存器设置一下,才可以将毛刺消除 ...

不知道你有没有实际试过,我改过,不过没有效果,想当然是没有用的。

lee345 发表于 2013-1-7 16:50:41

这个问题主要是没有设置PCA_PWM0=0;或者PCA_PWM0=3;

xjjiang 发表于 2013-1-7 17:03:21

楼主,设置的问题

dlmaowf 发表于 2013-1-7 17:07:11

用过STC12C5A60S2的PWM当DA用,反正DA精度要求不高,马马虎虎可以用

WangF 发表于 2013-3-27 22:56:13

同样也发现这个问题!
页: [1]
查看完整版本: 坑爹的STC PWM ,设置全灭时,居然还有毛刺。