8051U 10位PWM 问题
本帖最后由 DebugLab 于 2024-8-22 12:41 编辑10位PWM如下
10位由两个部分组成{XCCAPnL,CCAPnL},XCCAPnL位置如下:
测试代码如下
void PWM_init()
{
//P11 推挽输出
P1M0 |= 0x02; P1M1 &= ~0x02;
CCON = 0x00; //初始化 具体见下图
CMOD = 0x08; //设置时钟是系统时钟
CL = 0x00; //这两个计数器清零
CH = 0x00;
CCAPM2 = 0x42; //PCA 模块 2 为 PWM 工作模式
PCA_PWM2 = 0xc0; //PCA 模块 2 输出 10 位 PWM
CCAP2L = 62; //PWM 占空比为 96.875%[(400H-20H)/400H]
CCAP2H = 62;
CCON |= 0x40;
}
//范围 0 - 1024
void PWM_Set(u16 value)
{
CCAP2H = value & 0xff;
PCA_PWM2 |= (value & 0x300) >> 4;
}
随着value增加,占空比不是一直减小,在256时突然减小,然后增加
有大佬知道为啥吗?
PCA_PWM2 |= (value & 0x300) >> 4;
value 是16位的
看看是不是这个原因0.0 还有一件事,,我记得好像用PCA的话 没有预装载功能,,最好是在PCA计数器的归零中断中 修改占空比,防止出现异常情况balabala
这个是8位PWM的:
这个是10位PWM的:
这样就可实现无干扰地更新 PWM。
我可能对这句话有误解,其实不能预装载
_奶咖君_ 发表于 2024-8-20 15:42
看看是不是这个原因0.0
确实是这个原因。当时没有注意到这个问题,修改一下就可以了。感谢 哈哈哈哈 发表于 2024-8-20 18:03
这个是8位PWM的:
emmm那可能是之前用的 其他片子上增强型15bitPWM的问题,,没有预装载功能,,只能在归零中断中改变占空比,,STC8015U可能就没有这个问题了
页:
[1]