在AI8H2K32U微控制器中,PWM模块的配置和管脚输出状态的控制需要特别注意,尤其是在停止PWM输出时,确保管脚能够固定输出高电平以关断可控硅。以下是针对您的问题的详细分析和解决方案。
问题分析
1. PWM停止时的管脚状态:当PWM停止时,管脚的状态可能取决于PWM模块的配置和寄存器的状态。如果未正确配置,管脚可能会保持最后一次PWM输出的状态,导致有时输出高电平,有时输出低电平。
2. 可控硅控制逻辑:可控硅电路低电平有效,高电平关断。因此,在停止加热时,必须确保P2.0管脚固定输出高电平。
解决方案
1. PWM停止时的管脚状态控制:在停止PWM输出时,可以通过配置PWM模块的寄存器,强制管脚输出高电平。
2. 管脚模式配置:确保P2.0管脚在PWM停止时能够正确输出高电平。
代码实现
以下是修改后的代码,确保在PWM停止时,P2.0管脚固定输出高电平。
- c
- define HEATCYC 1000
- define HEATDUTY85 850
- define HEATDUTY70 700
- define HEATDUTY55 550
- define HEATDUTY0 0 //始终高电平
- define HEATDUTY100 1000 //始终低电平
- //周期1秒 频率1Hz 晶振11.0592MHz=11059200Hz
- void Heatpwminit(void)
- {
- P2M0 &= 0xFE; //1111 1110
- P2M1 &= 0xFE; //P2.0设置准双向口
- PWMBPSCR = 11058; //预分频 11059200/(11058+1) = 1000.018Hz 周期T大约1ms
- PWMBENO = 0x00;
- PWMBENO |= ENO5P; //使能PWM5输出
- PWMBCCER1 = 0x00;
- PWMBCCMR1 = 0x68; //PWM1 模式1输出 0110 1000
- PWMBCCER1 = 0x03; //低电平有效 0000 0011
- PWMBPSCRL = 0x00; //PWM周期低字节
- PWMBPSCRH = 0x00; //PWM周期高字节
- PWMBARR = HEATCYC; //设置PWM周期
- PWMBCCR1 = HEATDUTY0; //初始设置为高电平
- PWMBCR1 |= 0x01; //使能PWM计数器
- }
- void Heatpwmstop(void)
- {
- PWMBCR1 &= ~0x01; //停止PWM计数器
- P2 &= ~0x01; //强制P2.0输出高电平
- }
复制代码
关键点解释
1. PWM初始化:在Heatpwminit函数中,配置PWM模块的预分频器、周期和占空比,并初始化P2.0管脚为准双向口。
2. PWM停止:在Heatpwmstop函数中,首先停止PWM计数器,然后通过直接操作P2寄存器,强制P2.0管脚输出高电平,确保可控硅关断。
总结
通过上述配置和代码修改,可以确保在PWM停止时,P2.0管脚固定输出高电平,从而可靠地关断可控硅。这种配置方式不仅解决了您当前的问题,还提高了系统的稳定性和可靠性。
[本文内容由国芯人工智能辅助生成,仅供参考] |