昨天终于输出来想要的波形很开心!
单片机确实不好学。
一个输出错误卡了大半个月,总结一下。
首先,必须要有理论先行,然后是算法的单片机实现。
然后是实际输出。
遇到的问题是,上升沿和下降沿一致,都是上升。于是开始找原因。
首先是怀疑PWM输出并没有开启中心对齐模式。
然后寄存器操作,不行,库函数也不行。再进debug,断点,确实可以,已经初始化了。
排除。
第二是死区时间可能太短,
然后研究死区时间,发现修改并没有太大影响,只是稍微变短了一点。
寄存器和库函数都操作一遍,不行。排除。
然后是怀疑PWM上升沿下降沿是否反了或者和模式有关。
然后库函数继续初始化一遍,不行。排除。
然后怀疑引脚初始化不行,查了一遍九年起操作手册,没问题,排除
然后就是怀疑PWM周期太短,导致都是上升沿,后面又推广到了定时器的频率
还有中断的周期,这个到现在还不太会算,这个以后还得学习的方法。各种查手册
又改了预分频的值,还是没有太大效果,只是变短了,并没有反向。排除?
然后研究算法是否出错了,发现有一个函数修改算法,两个一起变化,而且可以一起反向,
于是又认为中心对齐模式有问题。却没发现算法可能有问题。
最后仔细分析单独一条函数,发现因为数值低于ARR为高电平
为什么会突然arr变大?是某个扇区出了问题?
然后又degree++,一度一度的均匀增加
发现三那条曲线都是某个扇区出了问题,再深入,就是某个算法出了问题
然后就想出了单一解决某个算法的方法。
而且还找到了规律,最后问题解决。完美输出SVPWM。
以后学习新算法:
1.先看理论和程序。全部注释好,一个步骤不要落下
慢慢学,有目的的学才是提高的根本,省时间的前提
2.单一变量处理。
就像最后想出来的办法一样,先把算法放在一个理想的情况下,然后单独针对某个
方面研究到底哪里出了问题。
最后再加上其他东西。
只有核心算法对了,其他功能才能谈得上。
3.勤问学长才是硬道理,一起探讨总比一个人闷着头有思路,有想法
发现自己的盲点。
网友评论