簡單歸納一下:
快速PWM,是由匹配值和TOP 值決定的。而TOP值可以是固定的(方波產生模式5,6,7),又或者可編程(方波產生模式14,15)。方波產生模式5,6,7 分別對應0x00ff,0x01ff,0x03ff 的TOP 值,而模式14,15 的TOP 值分別為1CR1,和OCR1A 來決定。從視頻教程中我們知道模式15 需要犧牲OC1A 作為代價,(OC1A=PD5)OCR1A 決定了PWM 輸出的頻率,而OCR1B 決定了PWM 不同的占空比輸出。換一句話說,OCR1A 是OCR1B 求出占空比的參考值。(上一頁有詳細的介紹),雖然OC1A 被犧牲了,但是,OC1A 還可以很合理的設置依然可以工作于近似CTC 模式(勉強算是吧)。這里打上小小的補充:如果方波產生的模式是5,6,7,僅要稍微修改一下概念就可以了。
在編程的時候需要如下的步驟:
1.設置PD4~5 為輸出(默認為低電平)。DDRD|=BIT(4)|BIT(5);
2.決定方波產生模式,試驗中為15。OCR1A|=BIT(0)|BIT(1); OCR1B|=BIT(3)|BIT(4);
3.決定OC1A,和OC1B 的工作方式,試驗中快速PWM,OC1A 作為犧牲,工作近似CTC 模式。OC1B,卻是匹配時清零,TOP 時置一。OCR1A|=BIT(5)|BIT(6);
4.決定頻率,OCR1A 設初值。
5.決定PWM 輸出占空比,OCR1B 設初值。
|