|
|
回复 #27 1老头 的帖子
因为是以前的程序了,我当时也没有保存源程序,回忆大致是这样的.由于2051内部只有两个TIMER且不具备支持PWM操作,所以当时我的思路是使用一个TIMER作为SPWM的载波时基发生器.当每次TIMER中断时对三个端口设定不同的脉宽.脉宽由另一TIMER来输出.由于当初设计载波频率是不可改变的,另一方面利用该特征进行正弦查表得出SIN脉宽值.另外变频器的V/F曲线来控制不同频率下的输出电压,因此在存储器内有两块表格,一块是SIN,一块是V/F曲线.其目的在于尽可能的减少CPU的运算量.尽管如此,PWM载波频率设计为5KHZ(很低了),也就是说200US一次中断.2051的一条指令时间约0.5US(24M CLOCK),也就是说必须在200US中完成一次SPWM周期操作,而且这还没有考虑死区时间的插入,当初是由IR2130来完成死区时间插入.其中还要考虑很多细节问题(我现在想不起来了).总之2051CPU的软件开销很大,其他的事没有办法完成.
[ 本帖最后由 toluoxin 于 2008-2-29 21:04 编辑 ] |
|