




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第14講PWM青島科技大學(xué)王澤料清單+5v電源最小系統(tǒng)板面包板插線若干本章重點(diǎn)掌握PWM的作用掌握快速PWM編程方法掌握相位修正的PWM編程方法PWMPWM(PulseWidthModulation)脈沖寬度調(diào)制 簡稱脈寬調(diào)制技術(shù),是一種利用微處理器的數(shù)字技術(shù)進(jìn)行模擬電路的控制得一種有效技術(shù),廣泛應(yīng)用于測量、通訊、功率控制和變換等領(lǐng)域。ATMega16的PWM產(chǎn)生方式(三種)
快速PWM(T/C0,T/C1,T/C2)
相位修正的PWM(T/C0,T/C1,T/C2)
相位與頻率修正的PWM(T/C1)ATMega16的PWM輸出引腳(共4個(gè))
OC0(T/C0)
OC1A,OC1B(T/C1)
OC2(T/C2)
T/C0的PWM快速PWM模式 用來產(chǎn)生高頻的PWM波形,適合于功率調(diào)節(jié),整流和DAC應(yīng)用??焖貾WM模式是單斜坡工作。計(jì)數(shù)器從BOTTOM計(jì)到MAX,然后立即回到BOTTOM重新開始。
普通比較輸出模式:輸出比較引腳OC0在TCNT0與OCR0匹配時(shí)清零,在BOTTOM時(shí)置位。
反向比較輸出模式:
OC0的動(dòng)作正好相反。 計(jì)時(shí)器數(shù)值達(dá)到MAX時(shí)T/C溢出標(biāo)志TOV0置位。如果中斷使能,在中斷服務(wù)程序可以更新比較值(OCR0中的值)。T/C0寄存器T/C控制寄存器TCCR0
WGM01:0:bit6,bit3。PWM模式選擇,如下表所示
COM01:0:bit5:4比較匹配輸出模式
CS02:0:分頻選擇T/C寄存器-TCNT0和輸出比較寄存器-OCR0
PWM模式下,TCNT0在T/C時(shí)鐘作用下不斷進(jìn)行+1或-1運(yùn)算,OCR0存放一個(gè)確定的比較值。一旦TCNT0的數(shù)據(jù)與OCR0中的值相等,將在OC0引腳上產(chǎn)生PWM波形。
PWM模式下,OCR0是雙緩沖的。使用雙緩沖時(shí),CPU訪問的是OCR0緩沖寄存器,T/C0使用的是OCR0本身。雙緩沖可以將更新OCR0寄存器與top或bottom時(shí)刻同步起來,從而防止產(chǎn)生不對稱的PWM脈沖,消除了干擾脈沖。T/C中斷屏蔽寄存器-TIMSK
當(dāng)TOIE0和狀態(tài)寄存器SREG的全局中斷使能位I都為”1”時(shí),T/C0的溢出中斷使能。當(dāng)T/C0發(fā)生溢出,即TIFR中的TOV0位置位時(shí),中斷服務(wù)程序得以執(zhí)行??梢栽谥袛喾?wù)程序中更改OCR0中的數(shù)據(jù)。T/C中斷標(biāo)志寄存器-TIFR
TOV0在TCNT0達(dá)到MAX時(shí),置位。當(dāng)SREG的I位,TIMSK的TOIE0位,TOV0位都為1,中斷發(fā)生。在相位修正PWM模式中,當(dāng)T/C0在0x00改變記數(shù)方向時(shí),TOV0置位。快速PWM波的頻率和占空比計(jì)算
PWM波占空比計(jì)算 占空比=高電平時(shí)間/PWM周期 =(255-OCR0)/256
5、采用1024分頻(CS02:0=101),故方波周期為32768us,方波頻率為31Hz。
總之:在8MHz時(shí)鐘下,PWM波的頻率可以是31Hz到31KHz之間變化快速PWM模式下,產(chǎn)生基本的PWM波任務(wù)描述:
產(chǎn)生3906Hz的PWM波,要求占空比為30%。采用反向比較輸出模式。
3906Hz對應(yīng)8分頻。 根據(jù)占空比計(jì)算公式,由 (255-OCR0)/256=30%,得
OCR0的值為178。#defineF_CPU8000000UL#include<avr/io.h>#definepwmDDRDDRB //pwm方向寄存器#definepwmPORTPORTB //pwm數(shù)據(jù)寄存器#defineoPwm3 //pwm針腳3#define_NOP()__asm____volatile__("nop"::)/********** 端口初始化*****************************/voidinitPin(){PORTA=0xFF; //A口上拉電阻使能
DDRA=0x00;PORTB=0xFF; //B口上拉電阻使能
DDRB=0x00;PORTC=0xFF; //C口上拉電阻使能
DDRC=0x00;PORTD=0xFF; //D口上拉電阻使能
DDRD=0x00;_NOP();}/***********************pwm寄存器及輸出針腳初始化**********************/voidinitPwm() { TCCR0|=(1<<WGM01)|(1<<WGM00); //快速PWM模式
TCCR0|=(1<<COM01)|(1<<COM00); //反向比較輸出
pwmPORT&=~(1<<oPwm); //pwm針腳輸出0 pwmDDR|=(1<<oPwm); //pwm針腳定義為輸出
TCCR0|=(1<<CS01); //8分頻,啟動(dòng)pwm}intmain(void){ initPin(); initPwm(); OCR0=178; while(1); return(0);}快速PWM模式下,產(chǎn)生可變占空比的PWM波任務(wù)描述:
產(chǎn)生3906Hz的PWM波,要求占空比在30%和50%之間跳變,跳變由PA0的按鍵來控制。采用反向比較輸出模式。
3906Hz對應(yīng)8分頻。 根據(jù)占空比計(jì)算公式,由(255-OCR0)/256=30%,得OCR0的值為178。 由(255-OCR0)/256=50%,得OCR0的值為127。#defineF_CPU8,000,000UL#include<avr/io.h>#include<avr/interrupt.h>//定義鍵盤使用的端口PA0#definekey_DDRDDRA#definekey_PORTPORTA#definekey_PINPINA//鍵盤狀態(tài)機(jī)#defineState_NoKey 0 //無鍵按下狀態(tài)#defineState_KeyPress 1 //有鍵按下狀態(tài)#defineState_ValidKey 2 //有效按鍵狀態(tài)#defineState_KeyRelease 3 //鍵盤釋放狀態(tài)intState_Key=State_NoKey; //鍵狀態(tài),初始為無鍵按下狀態(tài)volatilecharvalue_keyscan=0;#definepwmDDRDDRB //pwm方向寄存器#definepwmPORTPORTB //pwm數(shù)據(jù)寄存器#defineoPwm3 //pwm針腳3(PB3)#define_NOP()__asm____volatile__("nop"::)charflagPWM=0;//偶數(shù)時(shí)為占空比為30%,否則50%/********** 端口初始化*****************************/voidinitPin(){PORTA=0xFF; //A口上拉電阻使能
DDRA=0x00;PORTB=0xFF; //B口上拉電阻使能
DDRB=0x00;PORTC=0xFF; //C口上拉電阻使能
DDRC=0x00;PORTD=0xFF; //D口上拉電阻使能
DDRD=0x00;_NOP();}/******************鍵盤掃描**********************************/charkey_scan(){ key_DDR&=0xFE;
key_PORT|=0x01;//PA0輸入,內(nèi)部上拉,這樣PA0引腳高電平,一旦按鍵按下,PA變?yōu)榈碗娖?/p>
_NOP(); if(key_PIN&0x01) //無鍵按下
return(0); //返回PA0端口值
else //有鍵按下
return(1);}charFsm_KeyDither(charevent_trig){ staticcharf_key_release; staticcharkey_value; switch(State_Key) { caseState_NoKey: if(event_trig)//key_scan!=0,轉(zhuǎn)到有鍵按下狀態(tài)
State_Key=State_KeyPress;
else //key_scan=0,在無鍵狀態(tài)下循環(huán)
State_Key=State_NoKey; f_key_release=0; key_value=0; break; caseState_KeyPress: if(event_trig)//key_scan!=0,轉(zhuǎn)到有效按鍵狀態(tài)
State_Key=State_ValidKey; else //key_scan=0,無效按鍵,轉(zhuǎn)無鍵狀態(tài)
State_Key=State_NoKey; f_key_release=0; key_value=0; break;
caseState_ValidKey: if(event_trig)//key_scan!=0,在狀態(tài)中循環(huán),存儲(chǔ)鍵值
{ State_Key=State_ValidKey; key_value=event_trig; } else //key_scan=0,轉(zhuǎn)鍵釋放狀態(tài)
State_Key=State_KeyRelease; f_key
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)市場分析與趨勢預(yù)測
- IT運(yùn)維管理標(biāo)準(zhǔn)流程及實(shí)施指南
- 催收進(jìn)度款函模板及寫作技巧
- 高考哲學(xué)思辨作文高分寫作策略
- 基于QGIS的遙感影像控制點(diǎn)管理軟件:設(shè)計(jì)理念與實(shí)踐應(yīng)用
- 基于PFMEA的M公司生產(chǎn)管理風(fēng)險(xiǎn)深度剖析與優(yōu)化策略研究
- 物業(yè)公司電梯安全巡檢記錄表
- 電力設(shè)備巡檢維護(hù)工作流程
- 綜合英語語法難點(diǎn)講解與練習(xí)
- 2025年大學(xué)《大學(xué)德語》專業(yè)題庫-德國當(dāng)代設(shè)計(jì)風(fēng)格的展望與挑戰(zhàn)
- 資陽產(chǎn)業(yè)投資集團(tuán)有限公司第三輪一般員工市場化招聘筆試參考題庫附答案解析
- 2025年淮南市大通區(qū)和壽縣經(jīng)開區(qū)公開招聘社區(qū)“兩委”后備干部30名筆試備考題庫及答案解析
- 《文獻(xiàn)檢索與科技論文寫作入門》課件(共八章)
- 2025云南紅河紅家眾服經(jīng)營管理有限公司社會(huì)招聘工作人員8人筆試參考題庫附帶答案詳解
- 2025年浙江高考真題化學(xué)試題(解析版)
- 牛羊布氏桿菌課件
- 共享實(shí)驗(yàn)室合作協(xié)議書
- DBJ04-T 290-2012 袖閥管注漿加固地基技術(shù)規(guī)程
- 客服人員安全操作培訓(xùn)課件
- 城管協(xié)管員面試題目及答案
- DL-T 794-2024 火力發(fā)電廠鍋爐化學(xué)清洗導(dǎo)則
評(píng)論
0/150
提交評(píng)論