关闭PWM输出后,电压不会立刻下降的问题。
我使用的芯片是STC8H1K08,用pwm2p脚输出38k的pwm波形来调节灯的亮度。外面有接RC滤波电路。1.现在的问题是,我用
PWMA_CC2E_Disable(); //关闭输入捕获/比较输出
PWMA_ENO &= ~ENO2P;
关闭pwm输出后,电压是缓慢下降而不是立刻下降0v。
2.去掉滤波电路后,关闭pwm输出后,电压可以立刻下降到0v,没有问题。但是这个滤波电路以前后使用过,接其它的pwm发生器验证没有问题。
3.附件是滤波电路截图及关闭pwm后的波形图。请帮忙看看是什么问题。
关闭pwm2p后,软件上如何将该脚强制拉低? 这是因为你的IO没有设置正确导致。
使用ENO禁止PWM输出,引脚就变成普通IO,你用普通IO的操作方式,将IO输出0,可以初始化时先将IO输出0,设置为推挽输出模式。 或者 如果你只是想要这个引脚为低电平,可以设置强制输出无效电平?(如果你设置有效电平为高电平)
这样虽然不是关闭PWM,但是也能让引脚输入0V, https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=8120&pid=76069
可以看看这个,, 谢谢,刚才验证了一下。强制输出无效电平是可行的。 duam 发表于 2024-6-4 14:35
谢谢,刚才验证了一下。强制输出无效电平是可行的。
或者你直接让CCR寄存器的值赋个0试一试。 duam 发表于 2024-6-4 14:35
谢谢,刚才验证了一下。强制输出无效电平是可行的。
您好,我想问一下,我关闭PWM(用的语句是TIM_CCxChannelCmd(TIM15, TIM_CHANNEL_1, TIM_CCx_DISABLE);)也出现了这样的问题,看您强制输出无效电平解决了,请问具体的语句或者方式是什么呢 星辰0520 发表于 2024-10-22 11:16
您好,我想问一下,我关闭PWM(用的语句是TIM_CCxChannelCmd(TIM15, TIM_CHANNEL_1, TIM_CCx_DISABLE);) ...
STC8H系列的高级PWM,连续输出0或1有2种方法(以PWM1P为例):
1、使用PWMx_ENO禁止输出PWM,对应IO成为普通IO(要设置IO为输出模式),禁止PWM输出后,由这个IO直接输出高或低电平。
PWMA_ENO |= 0x01; // 允许PWM1P输出
delay_ms(5); // P1.0输出PWM 5ms
P10 = 1; // P1.0输出高电平
PWMA_ENO &= ~0x01;// 关闭PWM输出
delay_ms(5); // P1.0输出高电平5ms
PWMA_ENO |= 0x01; // 允许PWM1P输出
delay_ms(5); // P1.0输出PWM 5ms
P10 = 0; // P1.0输出低电平
PWMA_ENO &= ~0x01;// 关闭PWM输出
delay_ms(5); // P1.0输出高电平5ms
2、设置PWMx_CCMRn,强制PWM输出有效(高)电平/无效(低)电平。
PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x60;// PWM正常输出
delay_ms(5); // PWM输出5ms
PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x40;// 强制PWM输出无效(低)电平
delay_ms(5); // PWM输出低电平5ms
PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x60;// PWM正常输出
delay_ms(5); // PWM输出5ms
PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x50;//强制PWM输出有效(高)电平
delay_ms(5); // PWM输出高电平5ms 梁工 发表于 2024-10-22 12:34
STC8H系列的高级PWM,连续输出0或1有2种方法(以PWM1P为例):
1、使用PWMx_ENO禁止输出PWM,对应IO成为 ...
非常感谢博主,学到了。我是使用的第二种办法,原来它是通过控制CCMR寄存器的OC1M的三位去强制拉低或者拉高,开启PWM时再通过这三位产生PWM模式。
页:
[1]