AVR單片機入門(mén)系列(25)AVR PWM OC0
系統功能
本文引用地址:http://dyxdggzs.com/article/201612/325269.htmAVR內部脈寬調制OC0輸出實(shí)驗,用LED指示PWM的頻率,在PWM速度較低時(shí),可觀(guān)察到LED的閃爍。
硬件設計
AVR主控電路原理圖
軟件設計
//目標系統:基于AVR單片機
//應用軟件: ICC AVR
/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
實(shí)驗內容:
AVR內部脈寬調制輸出實(shí)驗,用LED指示PWM的頻率,在PWM速度較低時(shí),可觀(guān)察到LED的閃爍。
----------------------------------------------------------------------
硬件連接:
將UserLed指示燈連接至PWM的端口PB3/OC0。
----------------------------------------------------------------------
注意事項:
(1)若有加載庫程序,請將光盤(pán)根目錄下的“庫程序”下的“ICC_H”文件夾拷到D盤(pán)
(2)請詳細閱讀:光盤(pán)根目錄下的“產(chǎn)品資料開(kāi)發(fā)板實(shí)驗板SMK系列SMK1632說(shuō)明資料”
----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/
#include
#include
#define OC0_OUT_ENDDRB |= 0b00001000
/*--------------------------------------------------------------------
程序名稱(chēng):定時(shí)器0初始化程序
程序功能:定時(shí)器作PWM使用,設置PWM的工作模式
注意事項:
提示說(shuō)明:
輸入:
返回:
--------------------------------------------------------------------*/
void timer0_init(void)
{
TCCR0 = (1<
/*
WGM01=1; WGM00=1; --> fast PWM modle
COM01=1; COM00=0; -->比較匹配時(shí)set OC0 pin
CS00=1; --> timer0 source不經(jīng)過(guò)任何分頻,直接為Clk,使得PWM可以工作得足夠快
*/
TCNT0 = 0x00;//設置TC0計數寄存器初值
OCR0 = 0x10;//輸出比較寄存器初值,設置該值可用于調節OC0輸出占空比
}
/*--------------------------------------------------------------------
程序名稱(chēng):
程序功能:
注意事項:
提示說(shuō)明:
輸入:
返回:
--------------------------------------------------------------------*/
void main(void)
{
OC0_OUT_EN;//為允許PWM工作,需設置PB3為輸出
timer0_init();
SEI();
while(1);
}
系統調試
改變PWM初始化代碼的如下兩個(gè)語(yǔ)句的賦值:
TCNT0 = 0x00;//設置TC0計數寄存器初值
OCR0 = 0x10;//輸出比較寄存器初值,設置該值可用于調節OC0輸出占空比
從LED的閃爍頻率可以看出,改變了PWM的頻率。
評論