本帖最后由 DebugLab 于 2024-8-22 12:41 编辑
10位PWM如下
10位由两个部分组成{XCCAPnL[1:0],CCAPnL[7:0]},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时突然减小,然后增加
有大佬知道为啥吗?
|