PCA_PWMx 与 CCAPxH 跟PWM占空比有关,初始化时不要重复设置
CCON = 0x00;
//CMOD = 0x04; //PCA 时钟为定时器0的溢出脉冲
CMOD = 0x08; //PCA 时钟为系统时钟
CL = 0x00;
CH = 0x00;
//-- 10 位 PWM--
if(LorH)
{
CCAPM0 = 0x42; //PCA 模块 0 为 PWM 工作模式
PCA_PWM0 = 0xc0; //PCA 模块 0 输出 10 位 PWM
//CCAP0L = 0;
//CCAP0H = 0;
}
CCAPM1 = 0x42; //PCA 模块 1 为 PWM 工作模式
PCA_PWM1 = 0xc0; //PCA 模块 1 输出 10 位 PWM
//CCAP1L = 0;
//CCAP1H = 0;
//CR = 1; //启动 PCA 计时器
UpdatePcaPwm(PCA1,1023);
if(LorH)
UpdatePcaPwm(PCA0,1023);
P3M0 |= 0x08; P3M1 &= ~0x08; //P3.3推挽模式
if(LorH)
P3M0 |= 0x04; P3M1 &= ~0x04; //P3.2推挽模式
CR = 1; //启动 PCA 计时器
很奇怪,按你这样去设置了,但是上电的时候LED还是会达到最亮后再降到eeprom记忆的亮度 简清 发表于 2025-9-12 12:57
CCON = 0x00;
//CMOD = 0x04; //PCA 时钟为定时器0的溢出脉冲
CMOD = 0x08; //PCA 时钟为系统时钟
用示波器将上电时PWM脚产生的信号抓出来看看 乘风飞扬 发表于 2025-9-12 14:11
用示波器将上电时PWM脚产生的信号抓出来看看
上电的时候第一个是P3.2脚,第二是P3.2脚
简清 发表于 2025-9-12 14:59
上电的时候第一个是P3.2脚,第二是P3.2脚
占空比寄存器不修改的话脉冲是不会变化的,后面的占空比改变应该是软件修改了相关寄存器。
PCA初始化后就进入死循环,不再执行其他代码应该就能固定占空比了。
此外示波器设置上升沿,单次触发模式,可以抓取上电后第一次产生的脉冲信号。 乘风飞扬 发表于 2025-9-12 17:07
占空比寄存器不修改的话脉冲是不会变化的,后面的占空比改变应该是软件修改了相关寄存器。
PCA初始化后就 ...
P3.2脚
页:
1
[2]