AVR單片機入門系列(26)AVR PWM OC2
AVR內(nèi)部脈寬調(diào)制OC2輸出實驗,用LED指示PWM的頻率,在PWM速度較低時,可觀察到LED的閃爍。
本文引用地址:http://butianyuan.cn/article/201612/325270.htm硬件設(shè)計
AVR主控電路原理圖
軟件設(shè)計
//目標系統(tǒng):基于AVR單片機
//應用軟件: ICC AVR
/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
實驗內(nèi)容:
AVR內(nèi)部脈寬調(diào)制輸出實驗,用LED指示PWM的頻率,在PWM速度較低時,可觀察到LED的閃爍。
----------------------------------------------------------------------
硬件連接:
將UserLed指示燈連接至PWM的端口PD7/OC2。
----------------------------------------------------------------------
注意事項:
(1)若有加載庫程序,請將光盤根目錄下的“庫程序”下的“ICC_H”文件夾拷到D盤
(2)請詳細閱讀:光盤根目錄下的“產(chǎn)品資料開發(fā)板實驗板SMK系列SMK1632說明資料”
----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/
#include
#include
#define OC2_OUT_EN DRD |= 0b10000000
/*--------------------------------------------------------------------
程序名稱:定時器2初始化程序
程序功能:定時器作PWM使用,設(shè)置PWM的工作模式
注意事項:
提示說明:
輸入:
返回:
--------------------------------------------------------------------*/
void timer2_init(void)
{
TCCR2 = (1< /* WGM21=1; WGM20=1; --> fast PWM modle COM21=1; COM20=0; -->比較匹配時set OC2 pin CS20=1; --> timer2 source不經(jīng)過任何分頻,直接為Clk,使得PWM可以工作得足夠快 */ TCNT2 = 0x00;//設(shè)置TC2計數(shù)寄存器初值 OCR2 = 0xE0;//輸出比較寄存器初值,設(shè)置該值可用于調(diào)節(jié)OC2占空比 } /*-------------------------------------------------------------------- 程序名稱: 程序功能: 注意事項: 提示說明: 輸入: 返回: --------------------------------------------------------------------*/ void main(void) { OC2_OUT_EN;//為允許PWM工作,需設(shè)置PD7為輸出 timer2_init(); SEI(); while(1); } 系統(tǒng)調(diào)試 改變PWM初始化代碼的如下兩個語句的賦值: TCNT2 = 0x00;//設(shè)置TC2計數(shù)寄存器初值 OCR2 = 0xE0;//輸出比較寄存器初值,設(shè)置該值可用于調(diào)節(jié)OC2占空比 從LED的閃爍頻率可以看出,改變了PWM的頻率。
評論