找回密码
 立即注册
查看: 389|回复: 7

8051U 10位PWM 问题

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-05-01 11:24:23

13

主题

95

回帖

294

积分

中级会员

积分
294
发表于 2024-8-20 15:23:02 | 显示全部楼层 |阅读模式
本帖最后由 DebugLab 于 2024-8-22 12:41 编辑

10位PWM如下
截图202408201517301792.jpg
10位由两个部分组成{XCCAPnL[1:0],CCAPnL[7:0]},XCCAPnL位置如下:
截图202408201520354345.jpg

测试代码如下
  1. void PWM_init()
  2. {
  3.     //P11 推挽输出
  4.     P1M0 |= 0x02; P1M1 &= ~0x02;
  5.     CCON = 0x00; //初始化 具体见下图
  6.     CMOD = 0x08; //设置时钟是系统时钟
  7.     CL = 0x00;   //这两个计数器清零
  8.     CH = 0x00;
  9.    
  10.     CCAPM2 = 0x42;      //PCA 模块 2 为 PWM 工作模式
  11.     PCA_PWM2 = 0xc0;    //PCA 模块 2 输出 10 位 PWM
  12.     CCAP2L = 62;      //PWM 占空比为 96.875%[(400H-20H)/400H]
  13.     CCAP2H = 62;      
  14.     CCON |= 0x40;
  15. }
  16. //范围 0 - 1024
  17. void PWM_Set(u16 value)
  18. {
  19.     CCAP2H = value & 0xff;
  20.     PCA_PWM2 |= (value & 0x300) >> 4;
  21. }
复制代码

随着value增加,占空比不是一直减小,在256时突然减小,然后增加
有大佬知道为啥吗?
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-05-01 11:24:23

13

主题

95

回帖

294

积分

中级会员

积分
294
发表于 2024-8-20 15:23:58 | 显示全部楼层
PCA_PWM2 |= (value & 0x300) >> 4;
value 是16位的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:436
  • 最近打卡:2025-05-06 08:38:18

33

主题

2355

回帖

4874

积分

论坛元老

积分
4874
发表于 2024-8-20 15:42:11 | 显示全部楼层
截图202408201542074650.jpg
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:436
  • 最近打卡:2025-05-06 08:38:18

33

主题

2355

回帖

4874

积分

论坛元老

积分
4874
发表于 2024-8-20 15:42:43 | 显示全部楼层
看看是不是这个原因0.0
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:436
  • 最近打卡:2025-05-06 08:38:18

33

主题

2355

回帖

4874

积分

论坛元老

积分
4874
发表于 2024-8-20 15:45:40 | 显示全部楼层
还有一件事,,我记得好像用PCA的话 没有预装载功能,,最好是在PCA计数器的归零中断中 修改占空比,防止出现异常情况balabala
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-05-01 11:24:23

13

主题

95

回帖

294

积分

中级会员

积分
294
发表于 2024-8-20 18:03:31 | 显示全部楼层

这个是8位PWM的:
截图202408201752276075.jpg

这个是10位PWM的:
截图202408201753263417.jpg

这样就可实现无干扰地更新 PWM。
我可能对这句话有误解,其实不能预装载


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-05-01 11:24:23

13

主题

95

回帖

294

积分

中级会员

积分
294
发表于 2024-8-20 18:05:58 | 显示全部楼层
_奶*** 发表于 2024-8-20 15:42
看看是不是这个原因0.0

确实是这个原因。当时没有注意到这个问题,修改一下就可以了。感谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:436
  • 最近打卡:2025-05-06 08:38:18

33

主题

2355

回帖

4874

积分

论坛元老

积分
4874
发表于 2024-8-21 09:11:04 | 显示全部楼层

emmm  那可能是之前用的 其他片子上增强型15bitPWM的问题,,没有预装载功能,,只能在归零中断中改变占空比,,STC8015U可能就没有这个问题了
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-7 12:23 , Processed in 0.168748 second(s), 94 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表