简清 发表于 2025-9-12 12:57:43

乘风飞扬 发表于 2025-9-12 10:11
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 14:11:55

简清 发表于 2025-9-12 12:57
CCON = 0x00;
        //CMOD = 0x04; //PCA 时钟为定时器0的溢出脉冲
        CMOD = 0x08; //PCA 时钟为系统时钟


用示波器将上电时PWM脚产生的信号抓出来看看

简清 发表于 2025-9-12 14:59:22

乘风飞扬 发表于 2025-9-12 14:11
用示波器将上电时PWM脚产生的信号抓出来看看
上电的时候第一个是P3.2脚,第二是P3.2脚

乘风飞扬 发表于 2025-9-12 17:07:19

简清 发表于 2025-9-12 14:59
上电的时候第一个是P3.2脚,第二是P3.2脚

占空比寄存器不修改的话脉冲是不会变化的,后面的占空比改变应该是软件修改了相关寄存器。
PCA初始化后就进入死循环,不再执行其他代码应该就能固定占空比了。
此外示波器设置上升沿,单次触发模式,可以抓取上电后第一次产生的脉冲信号。

简清 发表于 2025-9-12 17:34:55

乘风飞扬 发表于 2025-9-12 17:07
占空比寄存器不修改的话脉冲是不会变化的,后面的占空比改变应该是软件修改了相关寄存器。
PCA初始化后就 ...

P3.2脚
页: 1 [2]
查看完整版本: 请问这样设置PWM为什么上电会自己亮?