关不了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;
}
关于使用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的官方支持团队或手册。
[本文内容由国芯人工智能辅助生成,仅供参考] PWM关闭(禁止)后,不可能再有PWM输出,如果你发现仍有输出,则你实际没有关闭(禁止)PWM功能。
更新占空比最好在PWN中断里进行,避免在临界状态操作(即,外部程序刚操作了占空比高字节,此时PWM更新,就会将新写入的高字节与旧的低字节组合而出现错误)。
建议改为STC8A8K64D4,已经改进PWM:
1、计数器到达设置的PWMnT1、PWMnT2不是取反输出,是输出1、输出0,避免占空比反转。
2、写入占空比时,先写高字节,再写低字节,会一起写入,避免临界问题。
或者改为STC8H系列的高级PWM,有更多的功能。 好的,后面将PWM输出直接写0了,解决了这个问题
页:
[1]