简单归纳一下
相位修正PWM 与快速PWM 一样,不同的方波产生模式决定了TOP值是固定的,还是任意的。如在试验中选择11(任意的TOP), OC1A 就要作为牺牲,仅能输出50%占空比的方波,OCR1A 决定了输出频率,而OCR1B 决定了PWM 的占空比。OCR1A可以作为OCR1B 的参考值,相位修正PWM 有低频率而且PWM 精确度高的特性。除此之外,既然OC1A 被牺牲了,那么COM1A1:0 的设置也需要合理。
我们稍微整理一下编程时的步骤:
1. 将PD4~PD5 引脚设置为输出(默认为低电平)。DDRD|=BIT(4)|BIT(5);
2. 设置方波产生模式,WGM12~10,试验中是以模式11 为例。TCCR1A|=BIT(0)|BIT(1); TCCR1B|=BIT(4);
3. 设置OC1A 与OC1B 的引脚规则COM1A1:0=0,1 COM1B1:0=1,0。TCCR1A|=BIT(6)|BIT(5);
4. 设置预分频(时钟源)。TCCR1B|=BIT(0)|BIT(1);
5. 设置OCR1A 初值,决定输出频率。OCR1A=864;
6. 设置OCR1B 初值,决定PWM 方波的占空比。OCR1B=173
7. 编辑相关的中断函数(如果有的话)。
最后补充一下,当OCR1A 最为TOP 值时,OC1A 仅能输出50%占空比的方波,而该输出的频率是OC1B 的一般而已。
注意:PD4 是OC1B,PD5 是OC1A。
|