古詩詞大全網 - 成語查詢 - ATmega8芯片三個pwm輸出腳有什麽不同作用?

ATmega8芯片三個pwm輸出腳有什麽不同作用?

OC1A,OC1B用的是定時器1,OC2用的是定時器2.

本質區別就是OC1A,OC1B是用定時器1模擬的PWM輸出而OC2對應的是定時器2他本身可以配置成PWM輸出,妳可以看看數據手冊。

快速PWM 的產生就是先設定壹個TOP值再設定壹個比較值,然後,計數器開始計數,比如保持輸出1,計數到設定的比較值時,電平變為0,並維持,然後繼續計數到TOP

電平再變為1,如此重復循環.

1.T/C1可以產生2路(OC1A即PB1 OC1B即PB2).T/C2產生壹路(OC2即PB3).

2.需要設定T/C1的寄存器有四個 TCCR1A TCCR1B(這兩個寄存器壹起決定了兩路PWM信號的產生方式,頻率和TOP值) OCR1A(此值/TOP就是占空比) OCR1B(設定第二路PWM的占空比)

2.需要設定T/C2的寄存器有2個 TCCR2(同理,這個寄存器決定了第三路PWM信號的產生方式,頻率和TOP值 ) OCR2(這個寄存器決定占空比)

上面所述只能產生幾個固定頻率的PWM信號(占空比可以隨便調),並且前兩路的頻率是壹樣的.如果想產生自己想要頻率的PWM,需要用OCR1A 設定OCR1B的TOP值,由OCR1B產生PWM,此時OCR1A只能產生占空比50%的PWM.

下面是我用ATmega8產生三路頻率31.25K,占空比分別為1/3 1/2 2/3 PWM 的程序. 8M

#include <avr/io.h>

void main(void)

{

PORTB=0x00;

DDRB=0x0E;

// T/C1 初始化

TCCR1A=0xA1;

TCCR1B=0x09; //匹配時清零,TOP:255,頻率:8M/256=31.25K

OCR1A=85; //占空比:1/3

OCR1B=128; //占空比:1/2

// T/C2 初始化

TCCR2=0x69; //匹配時清零,TOP:255,頻率:31.25K

OCR2=170; //占空比:2/3

while (1);

}

本程序參考ouravr論壇!