找回密码
 立即注册
查看: 23|回复: 4

ai8051u的PCA输出10位PWM 如何写高2位

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-10-30 17:14:18
已绑定手机

2

主题

5

回帖

30

积分

新手上路

积分
30
发表于 昨天 17:14 | 显示全部楼层 |阅读模式
我在使用ai8051u的PCA模块输出PWM时发现10位PWM的高2位 在手册中叫做XCCAPnL
但在实际使用过程中未找到这个寄存器的名字 求助:我该如何写这两位寄存器

截图202510301712037386.jpg

截图202510301713271288.jpg

截图202510301713594791.jpg

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:549
  • 最近打卡:2025-10-30 09:59:42

33

主题

2641

回帖

5855

积分

论坛元老

积分
5855
发表于 昨天 17:57 | 显示全部楼层
要不换一个?直接看看PWM?
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:549
  • 最近打卡:2025-10-30 09:59:42

33

主题

2641

回帖

5855

积分

论坛元老

积分
5855
发表于 昨天 17:58 | 显示全部楼层
我记得是16位的,还带16位的预分频
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-10-30 17:14:18
已绑定手机

2

主题

5

回帖

30

积分

新手上路

积分
30
发表于 昨天 18:26 | 显示全部楼层
_奶*** 发表于 2025-10-30 17:58
我记得是16位的,还带16位的预分频

PWMA和PWMB吗 这两个我用作编码器功能了 输出PWM好像会有问题
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:599
  • 最近打卡:2025-10-30 07:14:21
已绑定手机

87

主题

6407

回帖

1万

积分

超级版主

积分
12064
发表于 昨天 21:10 | 显示全部楼层
XCCAPnH是寄存器PCA_PWMn中的两个位
截图202510302109203450.jpg
程序如下:
  1. void PWM_Out(unsigned int pwm_0,pwm_1,pwm_2)
  2. {
  3.         unsigned char temp_l,temp_h,temp;
  4.         
  5.         temp_l=pwm_0&0x00ff;                //读pwm_0低8位赋值给temp_l
  6.         temp_h=(pwm_0&0x0300)>>4;        //读pwm_0高2位,移动到XCCAP0H(PCA_PWM0[5:4])位置,赋值给temp_h
  7.         temp=PCA_PWM0&0xcd;                        //读PCA_PWM0,XCCAP2H(PCA_PWM0[5:4])、EPC0H(PCA_PWM0[1])清零后赋值给temp
  8.         temp_h|=temp;                                //写其他位到temph
  9.         if(pwm_0==0x03ff)                        //如果pwm_0最大
  10.                 temp_h|=0x02;                        //设置EPC0H(PCA_PWM0[1])为1
  11.         PCA_PWM0=temp_h;                        //写PCA_PWM0(先写高2位)
  12.         CCAP0H=temp_l;                                //写CCAP0H(再写低8位)
  13.         
  14.         temp_l=pwm_1&0x00ff;                //读pwm_1低8位赋值给temp_l
  15.         temp_h=(pwm_1&0x0300)>>4;        //读pwm_1高2位,移动到XCCAP1H(PCA_PWM1[5:4])位置,赋值给temp_h
  16.         temp=PCA_PWM1&0xcd;                        //读PCA_PWM1,XCCAP1H(PCA_PWM2[5:4])、EPC1H(PCA_PWM1[1])清零后赋值给temp
  17.         temp_h|=temp;                                //写其他位到temph
  18.         if(pwm_1==0x03ff)                        //如果pwm_1最大
  19.                 temp_h|=0x02;                        //设置EPC1H(PCA_PWM1[1])为1
  20.         PCA_PWM1=temp_h;                        //写PCA_PWM1(先写高2位)
  21.         CCAP1H=temp_l;                                //写CCAP1H(再写低8位)
  22.         
  23.         temp_l=pwm_2&0x00ff;                //读pwm_2低8位赋值给temp_l
  24.         temp_h=(pwm_2&0x0300)>>4;        //读pwm_2高2位,移动到XCCAP2H(PCA_PWM2[5:4])位置,赋值给temp_h
  25.         temp=PCA_PWM2&0xcd;                        //读PCA_PWM2,XCCAP2H(PCA_PWM2[5:4])、EPC2H(PCA_PWM2[1])清零后赋值给temp
  26.         temp_h|=temp;                                //写其他位到temph
  27.         if(pwm_2==0x03ff)                        //如果pwm_2最大
  28.                 temp_h|=0x02;                        //设置EPC2H(PCA_PWM2[1])为1
  29.         PCA_PWM2=temp_h;                        //写PCA_PWM2(先写高2位)
  30.         CCAP2H=temp_l;                                //写CCAP2H(再写低8位)
  31. }
复制代码

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-31 00:27 , Processed in 0.119369 second(s), 76 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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