话说从很久以前就开始了做电调.到现在有3个月的时间了.
这么长时间下来,到底做出了什么东西呢? 恐怕这个问题我实在答不上来.
硬件,软件都没有到点上,这个目标对于我来说可能的确是有点太高了.
从暑假开始搭出了硬件,后来慢慢尝试,到开学一个多月.现在对无刷电机的大概也有个了解了.
由于没有一个正确的软件,也不好测试硬件能不能使用. 而说到软件呢, 由于要单片机的资源对这个任务来说显得有点紧张...至少我认为是有点紧张..所以在开始那段时间,我一直想不通如何来完成这个资源的分配,知道开学前阵子,才突然有了想法..那就是用 TIMER2 在不需要作 PWM 输出的空闲时段,测那个延迟时间. 然后再用 TIMER0 作为倒数的定时器. 这个想法也是从网上看 夏风 的资料看出来的.
按照这个想法,我想,倒数延时然后换相,这个步骤应当需要占用一个定时器. 也就是说,有一个定时器从头到尾都是准备着数这个延时,然后使 PWM 信号换相. ...
而 输出 PWM 就需要3个定时器. 虽然不是在同一个时间3个全开.
那么, TIMER2 就有 2/3 的时间是空闲的. 用 TIMER2 来测量延迟时间也是顺理成章的了.
有了这个想法以后,需要解决的就是一些顺序问题了.
按照 v1.0 的流程图来看,顺序应该是:
INIT --> 等待 ADC 的中断 --> TIMER0 的中断 --> 换相
2 3 4
程序应当在 ADC中断 和换相之间循环.但是这其中,有一些问题,比如说 ADC中断的时间, TIMER0 的设置和 TIMER0 的中断服务进程. 以及换相的动作是否应该放在 TIMER0 的中断服务里面.还有就是程序的循环在过程中会不会出现问题.