1406268045 发表于 2025-6-19 13:56:10

关不了15W4K56S4作高速PWM功能

用15W4K56S4作高速PWM输出后,用按键前面4个档位可以调档,按第5下无法关掉PWM,电机仍有一点转或全速运转。关掉了PWM使能,也无法觖决。求助各位大佬---


                           if(powernum==4)
                                       {
                                             
                                                                                                
                                                         
                                                                        PIN_SW2 |= 0x80;                //使能访问XSFR
                                                                        PWMCFG = 0x00;                  //配置PWM的输出初始电平为低电平
                                                                        PWMCKS = 0x00;                  //选择PWM的时钟为Fosc/(0+1)
                                                                        PWMC = CYCLE;                   //设置PWM周期
                                                                        PWM2T1 = 0x0000;                //设置PWM2第1次反转的PWM计数
                                                                        PWM2T2 = CYCLE * 70L / 100L;    //设置PWM2第2次反转的PWM计数
                                                                                                                                                                                                      //占空比为(PWM2T2-PWM2T1)/PWMC
                                                                        PWM2CR = 0x00;                  //选择PWM2输出到P3.7,不使能PWM2中断
                                                                        PWMCR = 0x01;                   //使能PWM信号输出
                                                                        PWMCR |= 0x80;                  //使能PWM模块
                                                                        PIN_SW2 &= ~0x80;
                                          
                                                
                                       }
            if(powernum==5)
                                       {
                                             powernum=0;
                                                
                                                                         PIN_SW2 |= 0x80;               
                                                                        PWMCFG = 0x00;                  
                                                                        PWMCKS = 0x00;                  
                                                                        PWMC = CYCLE;                  
                                                                        PWM2T1 = 0x0000;               
                                                                        PWM2T2 = CYCLE * 70L/100L;            
                                                                                                                                                                                                      
                                                                        PWM2CR = 0x00;                  
                                                                        PWMCR &= ~0x80;                  
                                       
                                                                        PIN_SW2 &= ~0x80;
                                                                                          
                                                
                                       
                                       
                                       }
               

国芯人工智能 发表于 2025-6-19 13:58:01

关于使用STC15W4K56S4模块的高速PWM功能问题,以下是详细的解决方案:

1. 检查中断配置:
确保PWM中断的中断类型(如中断类型1、中断类型2等)正确设置,以确保PWM信号被正确关闭。

2. 调整PWM中断参数:
确保PWM中断的中断类型正确设置为“中断类型1”,以确保信号被正确关闭。
确保PWM中断的中断状态为“未中断”。

3. 重新配置PWM中断:
使用以下命令重新配置PWM中断:
   c
   PWMSYSMWPERMPWM中断 = 0x0000; // 设置中断类型为中断类型1
   PWMSYSMWPERMPWM中断ID = 0x0000; // 设置中断ID

4. 检查PWM信号输出:
确保PWM信号输出(PWM2T1和PWM2T2)的值正确设置,以确保信号被正确关闭。
确保PWM信号输出的值为“0x0000”以正确关闭信号。

5. 重新初始化模块:
确保模块在重新初始化前,所有中断参数都被正确设置。

6. 测试功能:
逐步关闭按键前的四个档位,检查PWM信号是否能够正确关闭。
确保电机仍能正常运转,信号仍然有效。

7. 查阅文档:
参考STC15W4K56S4模块的官方文档或手册,以确保所有参数和配置均正确无误。

8. 逐步排查问题:
逐步排查中断配置问题,从最简单的中断类型开始调整,逐渐深入到更复杂的配置。

通过以上步骤,您可以确认并解决问题。如果问题仍未解决,建议联系STC15W4K56S4的官方支持团队或手册。

[本文内容由国芯人工智能辅助生成,仅供参考]

梁工 发表于 2025-6-19 14:33:47

PWM关闭(禁止)后,不可能再有PWM输出,如果你发现仍有输出,则你实际没有关闭(禁止)PWM功能。
更新占空比最好在PWN中断里进行,避免在临界状态操作(即,外部程序刚操作了占空比高字节,此时PWM更新,就会将新写入的高字节与旧的低字节组合而出现错误)。

建议改为STC8A8K64D4,已经改进PWM:
1、计数器到达设置的PWMnT1、PWMnT2不是取反输出,是输出1、输出0,避免占空比反转。
2、写入占空比时,先写高字节,再写低字节,会一起写入,避免临界问题。

或者改为STC8H系列的高级PWM,有更多的功能。

1406268045 发表于 2025-6-20 11:27:24

好的,后面将PWM输出直接写0了,解决了这个问题
页: [1]
查看完整版本: 关不了15W4K56S4作高速PWM功能