版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第八章ATD模塊和PWM模塊
§8-1模數(shù)轉(zhuǎn)換ATD模塊
§8-2脈沖寬度調(diào)制PWM模塊內(nèi)容提要:§8-1模數(shù)轉(zhuǎn)換ATD模塊A/D轉(zhuǎn)換的基本概念模數(shù)轉(zhuǎn)換定義 將時間連續(xù)、幅值也連續(xù)的模擬信號轉(zhuǎn)換為時間離散、幅值也離散的數(shù)字信號。模數(shù)轉(zhuǎn)換精度 模數(shù)轉(zhuǎn)換精度是指二進(jìn)制的位數(shù)。9S12的AD模塊有兩種精度可選,分別為8位精度(0—255)和10位精度(0—1023)。逐次逼近型A/D轉(zhuǎn)換器的原理 逐次逼近型A/D由一個比較器和D/A轉(zhuǎn)換器通過逐次比較邏輯構(gòu)成,就是將輸入模擬信號與不同的參考電壓作多次比較,使轉(zhuǎn)換所得的數(shù)字量在數(shù)值上逐次逼近輸入模擬量對應(yīng)值。
。逐次逼近式A/D轉(zhuǎn)換器的工作原理可用天平秤重過程作比喻來說明。若有四個砝碼共重15克,每個重量分別為8、4、2、1克。設(shè)待秤重量Wx=13克,可以用下表步驟來秤量:順序砝碼重比較判斷暫時結(jié)果
18g8g<13g保留8g2(8+4)g12g<13g保留12g3(8+4+2)g14g>13g撤消12g4(8+4+1)g13g=13g保留13gAD口。ATD子系統(tǒng)輸入或通用輸入引腳。復(fù)位后默認(rèn)為通用I/O輸入引腳并且只能做輸入。ATD模塊使能后,用作模擬輸入。MC9S12DG128有16根AD引腳對應(yīng)于兩個獨(dú)立的ATD模塊:ATDm(m=0或1)
。9S12的A/D模塊主要特性8位/10位可選擇的轉(zhuǎn)換精度;速度快;采樣時間可編程;左對齊/右對齊的數(shù)據(jù)格式,有符號/無符號的轉(zhuǎn)換結(jié)果;轉(zhuǎn)換完畢可產(chǎn)生中斷;可使用AN7外部觸發(fā)A/D轉(zhuǎn)換。9S12XDT512的A/D模塊外部引腳
VRH、VRL:A/D轉(zhuǎn)換模塊的參考高電壓和參考低電壓。實(shí)驗(yàn)板上,VRH和VRL分別接AVDD和AGND。
VDDA、VSSA:A/D模塊提供電源。實(shí)驗(yàn)板上,VDDA接到AVDD,VSSA接到AGND。
AN7/ETRIG/PAD7:模擬量輸入通道7,通用數(shù)字輸入端口。它也可以被配置為A/D轉(zhuǎn)換的外部觸發(fā)引腳。
AN6/PAD6-AN0/PAD0:模擬量輸入通道6-0,通用數(shù)字輸入端口。不可以被用作外部觸發(fā)引腳。注意:兩個獨(dú)立的ATD模塊:ATDm(m=0或1)書上和9S12數(shù)據(jù)手冊上,沒有帶m,實(shí)際用CodeWarrier編程時需帶上m。A/D寄存器轉(zhuǎn)換結(jié)果寄存器控制寄存器狀態(tài)寄存器書上和9S12數(shù)據(jù)手冊上,沒有帶m。實(shí)際用CodeWarrier編程時需帶上m??刂萍拇嫫?—ATDmCTL2(m=0或1)ADPU:A/D模塊的電源管理:1=正常模式,使能A/D模塊;0=低功耗模式,禁止A/D模塊。AFFC:標(biāo)志位是否快速清零:1=對轉(zhuǎn)換結(jié)果寄存器訪問會自動清除轉(zhuǎn)換完成標(biāo)志CCF;0=正常模式,訪問結(jié)果寄存器前讀狀態(tài)寄存器1可以清除轉(zhuǎn)換完成標(biāo)志CCF。AWAI:等待時是否進(jìn)入低功耗模式:1=進(jìn)入,0=正常工作。ETRIGLE、ETRIGP:外部觸發(fā)的邊沿/極性控制。ETRIGE:上兩位的使能位。是否允許在AN7輸入外部觸發(fā)信號。1=允許,0=禁止。ASCIE:A/D隊(duì)列轉(zhuǎn)換完成中斷允許位:1=允許;0=禁止。ASCIF:A/D隊(duì)列轉(zhuǎn)換完成中斷標(biāo)志。BIT76543210RADPUAFFCAWAIETRIGLEETRIGPETRIGEASCIEASCIFWRESET00000000SCAN為ATDmCTL5中的連續(xù)轉(zhuǎn)換隊(duì)列模式選擇位控制寄存器3—ATDmCTL3(m=0或1)BIT76543210R0S8CS4CS2CS1CFIFOFZR1FZR0WRESET00100000S8C、S4C、S2C、S1C:定義轉(zhuǎn)換隊(duì)列的長度。默認(rèn)長度為4。FIFO:結(jié)果寄存器先進(jìn)先出模式。1=FIFO模式,轉(zhuǎn)換結(jié)果是連續(xù)存放的;0=非FIFO模式,轉(zhuǎn)換結(jié)果根據(jù)轉(zhuǎn)換隊(duì)列順序放在對應(yīng)的寄存器中。FRZ1、FRZ0:背景調(diào)試凍結(jié)模式允許。這兩個控制位就決定了,當(dāng)遇到斷點(diǎn)時,A/D模塊怎樣反應(yīng)。轉(zhuǎn)換序列長度當(dāng)調(diào)試程序時,如果遇到斷點(diǎn)轉(zhuǎn)換序列長度就是需要轉(zhuǎn)換的通道數(shù)比如:通道0,1,2作為AD采集通道則轉(zhuǎn)換序列為3,即S2C=1,S1C=1非FIFO模式,在控制寄存器5ATD0CTL5中:設(shè)CCCBCA=000,轉(zhuǎn)換序列從通道0開始;ATD0DR0,ATD0DR1,ATD0DR2存放轉(zhuǎn)換結(jié)果設(shè)CCCBCA=010,轉(zhuǎn)換序列從通道2開始。仍然是ATD0DR0,ATD0DR1,ATD0DR2存放轉(zhuǎn)換結(jié)果控制寄存器4—ATDmCTL4(m=0或1)SRES8:轉(zhuǎn)換精度選擇。1=8位精度,0=10位精度。SMP1、SMP0:采樣時間選擇。可選擇2、4、8、16個A/D時鐘周期。PRS4、PRS3、PRS2、PRS1、PRS0:A/D時鐘分頻因子的選擇。A/D時鐘的計(jì)算公式如下圖。注意,A/D模塊的時鐘頻率要在500KHz和2MHz之間,所以在選擇分頻因子時一定要注意。BIT76543210RSRES8SMP1SMP0PRS4PRS3PRS2PRS1PRS0WRESET00000101?最大A/D時鐘=2.0MHz(最小A/DCLOCK=0.5MHz)采樣時間選擇SMP[1:0]采樣時間002A/D時鐘周期014A/D時鐘周期108A/D時鐘周期1116A/D時鐘周期除25位模數(shù)計(jì)數(shù)器預(yù)分頻器+1PRS0-PRS4系統(tǒng)時鐘A/D時鐘A/D時鐘2,4,8,16
時鐘周期總是2個時鐘周期轉(zhuǎn)換時間計(jì)算舉例:(假設(shè)2MHZA/D時鐘頻率)例1:轉(zhuǎn)換時間=InitialSampleTime+ProgrammedSampleTime+ResolutionPeriod=2+2+10=14A/DClocks=7uSec例2:轉(zhuǎn)換時間=InitialSampleTime+ProgrammedSampleTime+ResolutionPeriod=2+16+10=28A/DClocks=14uSec控制寄存器5—ATDmCTL5(m=0或1)DJM:16位結(jié)果寄存器數(shù)據(jù)的對齊方式。1=右對齊,0=左對齊。DSGN:結(jié)果寄存器中數(shù)據(jù)有無符號。1=有符號,0=無符號。SRES8、DJM和DSGN三位配合起來使用,決定了結(jié)果寄存器中數(shù)據(jù)的格式,一共有8種情況。SCAN:連續(xù)轉(zhuǎn)換隊(duì)列的模式。此位定義了A/D轉(zhuǎn)換是連續(xù)進(jìn)行還是只進(jìn)行一次。1=連續(xù)隊(duì)列轉(zhuǎn)換;0=單次隊(duì)列轉(zhuǎn)換。MULT:當(dāng)這位為0時,ATD的隊(duì)列控制器只從指定的輸入通道進(jìn)行采樣,可以使用ATDCTL5寄存器中的CC、CB和CA三位來指定需要采樣的模擬量輸入通道。當(dāng)這位為1時,則對多個的通道進(jìn)行采樣,每次采樣的通道數(shù)量由S8C、S4C、S2C和S1C控制位來指定,第一個采樣通道由CC、CB和CA控制位來指定,其它采樣通道由通道選擇碼CC、CB和CA的增加來決定。CC、CB、CA:模擬輸入通道選擇碼。和MULT配合使用。BIT76543210RDJMDSGNSCANMULT0CCCBCAWRESET00000000狀態(tài)寄存器0—ATDmSTAT0(m=0或1)SCF:隊(duì)列完成標(biāo)志。置位條件:當(dāng)一個隊(duì)列轉(zhuǎn)換完畢后;如果處在SCAN模式,則每次都置位。清零條件:對此位寫一;寫ATDmCTL5,開始一個新的對列;AFFC=1(標(biāo)志快速清除)且讀結(jié)果寄存器。ETORF:外部觸發(fā)溢出標(biāo)志。置位條件:處于邊沿觸發(fā)模式時,如果第一個邊沿觸發(fā)的隊(duì)列轉(zhuǎn)換正在進(jìn)行,而這時卻檢測到了第二個有效的邊沿。清零條件:對此位寫一;寫控制寄存器2、3或4,終止當(dāng)前隊(duì)列;寫控制寄存器5,開始一個新隊(duì)列。FIFOR:FIFO溢出標(biāo)志。如果轉(zhuǎn)換完成標(biāo)志(CCF)在沒有被清零時結(jié)果寄存器被寫入新值(覆蓋),則置位。清零條件:對此位寫一;寫控制寄存器5,開始一個新隊(duì)列。1=有FIFO溢出,0=無FIFO溢出。CC2、CC1、CC0:轉(zhuǎn)換計(jì)數(shù)器。代表了哪個結(jié)果寄存器將要接收當(dāng)前轉(zhuǎn)換的結(jié)果。非FIFO模式(FIFO=0),這3位的初始值為0,計(jì)數(shù)完成后又會回到初始值。FIFO模式(FIFO=1),轉(zhuǎn)換計(jì)數(shù)器處于循環(huán)計(jì)數(shù)狀態(tài)。BIT76543210RSCF0ETORFFIFOR0CC2CC1CC0WRESET00000000狀態(tài)寄存器1—ATDmSTAT1(m=0或1)CCFx:x通道的轉(zhuǎn)換完成標(biāo)志。1=完成隊(duì)列中的第x個轉(zhuǎn)換;0=轉(zhuǎn)換未完成。清零條件:寫控制寄存器5,開始一個新隊(duì)列;AFFC=1,對結(jié)果寄存器訪問;AFFC=0,先讀狀態(tài)寄存器1,然后再訪問結(jié)果寄存器。BIT76543210RCCF7CCF6CCF5CCF4CCF3CCF2CCF1CCF0WRESET00000000輸入允許寄存器--ATDmDIEN(m=0或1)IENx:通道x輸入數(shù)字允許。這8個控制位控制了從模擬量輸入端口到數(shù)據(jù)寄存器的數(shù)字輸入緩沖區(qū)。1=緩沖區(qū)有效,AD模塊當(dāng)作數(shù)字IO接口使用(只作為輸入);0=無效。 當(dāng)端口作為模擬量輸入端口時,也可以打開數(shù)字緩沖區(qū),但是會增加功耗。BIT76543210RIEN7IEN6IEN5IEN4IEN3IEN2IEN1IEN0WRESET00000000端口數(shù)據(jù)寄存器PORTADm(m=0或1)PTADx:A/D模塊的第x個通道(ANx)的數(shù)字輸入。當(dāng)對應(yīng)通道的數(shù)字輸入允許時,此位返回了相應(yīng)引腳上的電平邏輯值。注意,引腳上的電平必須和VRH或VRL匹配,否則將返回一個不確定的值。如果相應(yīng)通道的輸入緩沖區(qū)無效(IENx=0),讀取操作只返回1。復(fù)位后,寄存器值等于$FF。注意,PORTAD端口模擬量和數(shù)字量是可以復(fù)用的。當(dāng)輸入模擬量時,會把模擬信號直接送到A/D轉(zhuǎn)換器;當(dāng)輸入數(shù)字量時,會把外部數(shù)字信號送到PORTAD寄存器以供讀取。BIT76543210RPTAD7PTAD6PTAD5PTAD4PTAD3PTAD2PTAD1PTAD0WRESET11111111A/D轉(zhuǎn)換結(jié)果寄存器—ATDmDRx(m=0或1)ATDmDR0—ATDmDR7:0—7通道的結(jié)果寄存器。A/D轉(zhuǎn)換的結(jié)果需要從這幾個寄存器中讀取。每個16位寄存器可以分成2個8位的寄存器來讀取,分別為ATDmDRxH和ATDmDRxL。注意轉(zhuǎn)換結(jié)果在這8個16位寄存器中的存儲格式。以10位左、右對齊為例:左對齊10位數(shù)據(jù)右對齊10位數(shù)據(jù)另外還要注意有符號數(shù)據(jù)和無符號數(shù)據(jù)的區(qū)別。√√√√√√√√√√××××××××××××√√√√√√√√√√A/D轉(zhuǎn)換綜合舉例使用實(shí)驗(yàn)板上可調(diào)電位器產(chǎn)生模擬量,通過A/D進(jìn)行轉(zhuǎn)換,結(jié)果顯示在數(shù)碼管上。數(shù)碼管字模(共陽)012345670xc00xf90xa40xb00x990x920x820xf889abcdef0x800x900x880x830xc60xa10x860x8e數(shù)碼管字模(共陰)01234567~0xc0~0xf9~0xa4~0xb0~0x99~0x92~0x82~0xf889abcdef~0x80~0x90~0x88~0x83,~0xc6~0xa1~0x86~0x8eunsignedchara[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //共陽極數(shù)碼管的段碼(字模)0123456789ABCDEF#defineSEG8PTT#defineS0PTP_PTP0#defineS1PTP_PTP1#defineS2PTP_PTP2#defineS3PTP_PTP3unsignedintd,d1,d2,d3,d4;voiddisplay(unsignedinta1,unsignedinta2,unsignedinta3,unsignedinta4);voidDelay(unsignedinti){ while(i--);}voidmain(void){ EnableInterrupts; DDRT=0XFF; DDRP=0XFF; //設(shè)置數(shù)碼管輸出IO均為輸出
d=0; ATD1CTL2=0x80;//0b10000000:使能AD,正常清除標(biāo)志,不使用外部觸發(fā)
ATD1CTL3=0x08;//0b00001000:轉(zhuǎn)換隊(duì)列長度設(shè)為1、非FIFO模式
ATD1CTL4=0x25;//0b00100101:10位精度、12分頻
ATD1CTL5=0xA7;//0b10100111:右對齊、無符號、連續(xù)掃描模式、單通道采樣//指定采樣通道為ATD1模塊的通道7。//每次設(shè)置ATD1CTL5即刻重新啟動ATD1模塊的AD轉(zhuǎn)換工作 for(;;) {while(!ATD1STAT0_SCF);//等待當(dāng)前隊(duì)列轉(zhuǎn)換完成
d=ATD1DR0; //讀結(jié)果寄存器中的值以便使用//因前面設(shè)置為非FIFO模式,轉(zhuǎn)換結(jié)果根據(jù)轉(zhuǎn)換隊(duì)列順序放在對應(yīng)的結(jié)果寄存器中,即ATD1//模塊轉(zhuǎn)換隊(duì)列中第一次AD轉(zhuǎn)換的結(jié)果放在第一個結(jié)果寄存器ATD1DR0中,ATD1模塊轉(zhuǎn)換隊(duì)//列中第二次AD轉(zhuǎn)換的結(jié)果放在第二個結(jié)果寄存器ATD1DR1中,以此類推。此處ATD1模塊轉(zhuǎn)換//隊(duì)列長度之前設(shè)置為1。ATD1STAT0_SCF=1; //清除隊(duì)列完成標(biāo)志
d1=d/1000;d2=(d/100)%10; d3=(d/10)%10;d4=d%10; display(d1,d2,d3,d4);}}voiddisplay(unsignedinta1,unsignedinta2,unsignedinta3,unsignedinta4){ S0=0;S1=1; S2=1; S3=1; SEG8=a[a1]; Delay(1000); S0=1;S1=0;S2=1; S3=1; SEG8=a[a2]; Delay(1000); S0=1;S1=1; S2=0; S3=1; SEG8=a[a3]; Delay(1000); S0=1;S1=1; S2=1; S3=0; SEG8=a[a4]; Delay(1000);}§8-2脈沖寬度調(diào)制PWM模塊PWM的基本概念PWM(PulseWidthModulate)即脈寬調(diào)制,脈寬調(diào)制波是一種可用程序來控制波形占空比、周期、相位的波形。它在電動機(jī)驅(qū)動、D/A變換、音調(diào)生成等場合有著廣泛的應(yīng)用。0%10%50%90%99%PWM模塊的外部引腳共8個外部引腳(112腳封裝的單片機(jī))
PWM0—6(4、3、2、1、112、111、110)
PWM7(109)通道7周期和占空比計(jì)數(shù)器通道6周期和占空比計(jì)數(shù)器...通道0周期和占空比計(jì)數(shù)器管腳7使能選擇極性選擇對齊方式選擇管腳6管腳0...極性、對齊方式的區(qū)別CAEx=0:左對齊CAEx=1:居中對齊PWM模塊的極性和對齊方式極性控制:每個PWM通道都對應(yīng)一個極性設(shè)置位,決定了PWM波的輸出首先是高電平還是低電平。當(dāng)PPOLx被置位時,對應(yīng)的通道首先輸出高電平,直到計(jì)數(shù)器計(jì)數(shù)到占空比寄存器的值后變?yōu)榈碗娖?;反之則首先輸出低電平,直到計(jì)數(shù)器計(jì)數(shù)到占空比寄存器的值后變?yōu)楦唠娖?。BIT76543210RPPOL7PPOL6PPOL5PPOL4PPOL3PPOL2PPOL1PPOL0WRESET00000000PWMPOL:PWM極性寄存器對齊方式控制:
此寄存器控制每個PWM通道輸出波形的對齊方式,可以是左對齊或者居中對齊。如果CAEx=1,則對應(yīng)通道的輸出波形為居中對齊方式;如果CAEx=0,則為左對齊方式。注意只有當(dāng)對應(yīng)通道被禁止輸出時,才可以設(shè)置此寄存器。CAEx: 1=對應(yīng)x通道為居中對齊模式
0=對應(yīng)x通道為左對齊模式PWMCAE:居中對齊允許寄存器PWM模塊的波形控制每個通道的寄存器都有一個8位計(jì)數(shù)器、一個8位周期寄存器和一個8位占空比寄存器。輸出波形的周期受周期寄存器的控制,當(dāng)計(jì)數(shù)器的計(jì)數(shù)值等于周期寄存器的值時,PWM波周期結(jié)束。PWM的波形還跟占空比寄存器、輸出極性和對齊方式有關(guān)。PWMCNTx計(jì)數(shù)寄存器在PWM通道工作時也可以被寫入,但是暫時產(chǎn)生無效的波形。x通道計(jì)數(shù)寄存器--PWMCNTx周期寄存器--PWMPERx占空比寄存器--PWMDTYx開始周期TPWMTPWM占空比TDutyPWMDTYxPWMPERxPWMPERxfClock,TClock8-bitCounterPWMCNTx時鐘8-bitCompare=PWMDTYx8-bitCompare=PWMPERx0x000x00Pinx當(dāng)8位計(jì)數(shù)器的值等于PWMDTYx(dutycycle寄存器)時,電平從有效跳到無效;
當(dāng)8位計(jì)數(shù)器的值等于PWMPERx(周期寄存器)時,電平從無效跳到有效,然后計(jì)數(shù)器清0,重新開始計(jì)數(shù)CAEx=0:左對齊開始周期TPWMTPWM占空比TDutyPWMDTYxPWMPERxfClock,TClock0x000x00CAEx=1:居中對齊PWM模塊的時鐘選擇四個時鐘源CLOCKA、CLOCKB、CLOCKSA、CLOCKSB。其中CLOCKA(B)可以把總線時鐘進(jìn)行1、2、4、8、16、32、64、128分頻。Clock
A
的預(yù)分頻因子通過PWMPRCLK寄存器中的PCKA2、PCKA1
和PCKA0
來選擇,Clock
B
的預(yù)分頻因子通過PWMPRCLK
寄存器中的PCKB2、PCKB1
和PCKB0
來選擇。總線時鐘CLOCKACLOCKBCLOCKSACLOCKSB分頻分頻分頻分頻BIT76543210R0PCKB2PCKB1PCKB00PCKA2PCKA1PCKA0WRESET00000000PWMPRCLK:PWM預(yù)分頻時鐘選擇寄存器PCKB2PCKB1PCKB0ClockB時鐘000總線時鐘001總線時鐘/2010總線時鐘/4011總線時鐘/8100總線時鐘/16101總線時鐘/32110總線時鐘/64111總線時鐘/128PCKA2PCKA1PCKA0ClockA時鐘000總線時鐘001總線時鐘/2010總線時鐘/4011總線時鐘/8100總線時鐘/16101總線時鐘/32110總線時鐘/64111總線時鐘/128
CLOCKSA(SB)從CLOCKA(B)進(jìn)行分頻的比例因子可以為2、4、6、8、10、……,最大可以進(jìn)行512分頻(PWMSCLA=0或PWMSCLB=0)。計(jì)算公式為:CLOCKSA=CLOCKA/(2*PWMSCLA)CLOCKSB=CLOCKB/(2*PWMSCLB)BIT76543210RBIT76543210WRESET00000000BIT76543210RBIT76543210WRESET00000000PWMSCLA:PWM比例因子寄存器APWMSCLB:PWM比例因子寄存器B
通道0、1、4、5可選CLOCKA或CLOCKSA;通道2、3、6、7可選CLOCKB或CLOCKSB。時鐘選擇寄存器--PWMCLKPCLK7:PWM通道7時鐘源選擇。1=ClockSB;0=ClockB。PCLK6:PWM通道6時鐘源選擇。1=ClockSB;0=ClockB。PCLK5:PWM通道5時鐘源選擇。1=ClockSA;0=ClockA。PCLK4:PWM通道4時鐘源選擇。1=ClockSA;0=ClockA。PCLK3:PWM通道3時鐘源選擇。1=ClockSB;0=ClockB。PCLK2:PWM通道2時鐘源選擇。1=ClockSB;0=ClockB。PCLK1:PWM通道1時鐘源選擇。1=ClockSA;0=ClockA。PCLK0:PWM通道0時鐘源選擇。1=ClockSA;0=ClockA。PWM模塊的允許控制PWM的允許位相當(dāng)于“開關(guān)”,可以允許和禁止相應(yīng)通道的PWM輸出。每個PWM通道都對應(yīng)一個允許位(PWMEx),只有PWMEx=1時,對應(yīng)的通道才輸出波形。計(jì)數(shù)器計(jì)數(shù)結(jié)束的那一刻,只要PWMEx為高電平,則會自動開始下一個波形的輸出。BIT76543210RPWME7PWME6PWME5PWME4PWME3PWME2PWME1PWME0WRESET00000000PWME:PWM允許寄存器左對齊的輸出波型頻率和占空比計(jì)算PWM波形頻率和占空比的計(jì)算:PWMx頻率=Clock(A,B,SA,orSB)/PWMPERx若Polarity=0(PPOLx=0)DutyCycle=[(PWMPERx-PWMDTYx)/PWMPERx]×100%若Polarity=1(PPOLx=1)DutyCycle=[PWMDTYx/PWMPERx]×100%下面舉一個左對齊輸出的例子:假設(shè)時鐘源頻率=10MHz(周期=100ns),PPOLx=0,PWMPERx=4,PWMDTYx=1。所以,PWMx的頻率=10MHz/4=2.5MHz,PWMx的周期=400ns,PWMx的占空比=3/4×100%=75%。居中對齊的輸出波型頻率和占空比計(jì)算
用時鐘源的頻率除以周期寄存器中值的2倍,得到的結(jié)果就是當(dāng)前PWM輸出波形的頻率。PWMxFrequency=Clock(A,B,SA,orSB)/(2×PWMPERx)若Polarity=0(PPOLx=0)DutyCycle=[(PWMPERx-PWMDTYx)/PWMPERx]×100%若Polarity=1(PPOLx=1)DutyCycle=[PWMDTYx/PWMPERx]×100%下面舉一個居中對齊輸出的例子:假設(shè)時鐘源頻率=10MHz(周期=10ns),PPOLx=0,PWMPERx=4,PWMDTYx=1。所以,PWMx的頻率=10MHz/(2*4)=1.25MHz,PWMx的周期=800ns,PWMx的占空比=3/4×100%=75%。PWM模塊的通道級聯(lián)如果需要PWM輸出波形的精度更高,則可以把2個8位PWM通道級聯(lián)起來組成1個16位通道。PWMCTL寄存器中有4個控制位,可以完成這個級聯(lián)的功能。CON67、CON45、CON23和CON01可以把相應(yīng)的兩個通道級聯(lián)起來。注意級聯(lián)后有高8位和低8位的區(qū)別,控制寄存器的區(qū)別??刂萍拇嫫?-PWMCTL關(guān)斷寄存器--PWMSDNPWM7ENA:PWM緊急關(guān)斷允許 當(dāng)此位為1時,通道7會被強(qiáng)制配置為輸入端口,并且允許緊急關(guān)斷。只有當(dāng)此位為1時,寄存器中的其它位才有意義。PWM7INL: 緊急關(guān)斷通道7的有效電平。1=高電平,0=低電平。PWM7IN: PWM通道7的輸入電平狀態(tài)。PWMLVL: PWM緊急關(guān)斷后的輸出電平。1=高,0=低。PWMRSTRT: PWM重新啟動。只有在當(dāng)PWM通道7處于無效狀態(tài)(非緊急關(guān)閉)時,才可以重新啟動PWM模塊。把PWMRSTRT置一,當(dāng)計(jì)數(shù)器返回0時,PWM通道才開始運(yùn)行。PWMIE: PWM中斷允許。1=允許,0=禁止。PWMIF: PWM中斷標(biāo)志。當(dāng)PWM7ENA被置位時,PWM通道7上電平的任意變化將產(chǎn)生中斷并使PWMIF置位。
1=PWM7IN輸入有變化。0=PWM7IN輸入無變化。PWM模塊的緊急關(guān)斷PWM模塊特性8個周期、占空比可編程的PWM通道;專用的PWM計(jì)數(shù)器;PWM功能的軟件使能和禁止;軟件選擇脈沖極性;PWM波形輸出對齊方式分為左對齊和居中對齊;可以兩個通道級聯(lián)以獲得更高的精度;可選擇4個時鐘源,4個時鐘源均為獨(dú)立的分頻設(shè)置;有緊急關(guān)斷功能;PWM模塊的初始化步驟禁止PWMDisablePWM
PWME選擇時鐘Selectclock(prescalerandscale)forthePWM
PWMPRCLK,PWMSCLA,PWMSCLB,PWMCLK選擇極性Selectpolarity
PWMPOL選擇對齊模式Selectcenterorleftalignedmode
PWMCAE對占空比和周期編程Programdutycycleandperiod
PWMDTYx,PWMPERx使能PWM通道EnableusedPWMchannels
PWMEPWM模塊的應(yīng)用舉例在電子和自動化技術(shù)應(yīng)用中,單片機(jī)和D/A是經(jīng)常需要同時使用的,在一般的應(yīng)用中外接昂貴的D/A轉(zhuǎn)換器則會增加成本??衫脝纹瑱C(jī)的PWM功能實(shí)現(xiàn)D/A轉(zhuǎn)換。PWM模塊的應(yīng)用舉例利用PWM5通道來做DA轉(zhuǎn)換,輸出變化的電壓控制小燈的亮度。燈會從暗逐漸變亮。voidPWMInit(void){PWMPOL=0x20; //脈沖先高后低PWMCLK=0x20; //使用sa時鐘源PWMPRCLK=0x07; //時鐘a為總線8分頻PWMCAE=0x00; //通道5為左對齊輸出模式PWMCTL=0x00; //單獨(dú)使用通道5,非級聯(lián)PWMSCLA=0x05; //ClockSA=ClockA/(2*PWMSCLA),SA為3kHzPWMPER5=0x64; //設(shè)定周期}voidmain(void){ unsignedchari; unsignedlongj=10000; SET_PLL(); //設(shè)置鎖相環(huán)
EnableInterrupts; PWMInit(); //初始化PWM for(i=0;i<0x64;i++) { while(j--); j=10000; while(j--); j=10000; PWMDTY5=i;//設(shè)定占空比
PWME=0x20;//使能PWM }}PWM相關(guān)寄存器匯總允許控制寄存器--PWME
當(dāng)PWMEx被置位后,PWM輸出就會立即開始。但是直到PWM模塊時鐘的下一個周期到來之時,才可以輸出正確的波形,而在這之前的波形可能會是無效的。 當(dāng)處于級聯(lián)模式時,8個8位PWM通道組成4個16位的PWM通道,PWME1、PWME3、PWME5和PWME7對這4個通道進(jìn)行控制,而其它控制位處于無效狀態(tài)。PWMEx:通道有效選擇位。1=允許PWM輸出,0=禁止。極性寄存器--PWMPOL PWMPOL寄存器隨時都可以進(jìn)行設(shè)置。如果某PWM通道在輸出波形的過程中,波形的極性發(fā)生了改變,那么在兩組波形的連接處可能會出現(xiàn)縮短或者拉伸了的不正常波形。PPOLx:通道x的輸出極性。1=先高后低,0=先低后高。時鐘選擇寄存器--PWMCLKPCLK7:PWM通道7時鐘源選擇。1=ClockSB;0=ClockB。PCLK6:PWM通道6時鐘源選擇。1=ClockSB;0=ClockB。PCLK5:PWM通道5時鐘源選擇。1=ClockSA;0=ClockA。PCLK4:PWM通道4時鐘源選擇。1=ClockSA;0=ClockA。PCLK3:PWM通道3時鐘源選擇。1=ClockSB;0=ClockB。PCLK2:PWM通道2時鐘源選擇。1=ClockSB;0=ClockB。PCLK1:PWM通道1時鐘源選擇。1=ClockSA;0=ClockA。PCLK0:PWM通道0時鐘源選擇。1=ClockSA;0=ClockA。預(yù)分頻時鐘選擇寄存器
此寄存器用來選擇ClockA和B的預(yù)分頻因子。
PWMPRCLK寄存器隨時都可以進(jìn)行設(shè)置。如果某PWM通道在輸出波形的過程中,此通道的所使用時鐘的頻率發(fā)生了改變,那么在兩組波形的連接處可能會出現(xiàn)縮短或者拉伸了的不正常波形。PCKB2、PCKB1、PCKB0:ClockB預(yù)分頻因子的選擇PCKA2、PCKA1、PCKA0:ClockA預(yù)分頻因子的選擇居中對齊允許寄存器--PWMCAE
此寄存器控制每個PWM通道輸出波形的對齊方式,可以是左對齊或者居中對齊。如果CAEx=1,則對應(yīng)通道的輸出波形為居中對齊方式;如果CAEx=0,則為左對齊方式。注意只有當(dāng)對應(yīng)通道被禁止輸出時,才可以設(shè)置此寄存器。CAEx: 1=對應(yīng)x通道為居中對齊模式
0=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司勞務(wù)派遣協(xié)議書七篇
- 公司協(xié)議書大全
- 萬能施工安全協(xié)議書
- 面部發(fā)紅發(fā)熱病因介紹
- 進(jìn)行性球麻痹病因介紹
- 29化學(xué)中考真題匯編《溶液》及答案
- 中考政治第一部分知識闖關(guān)能力提升第5課時平等禮貌待人理解寬容他人復(fù)習(xí)課獲
- (范文)卷板機(jī)項(xiàng)目立項(xiàng)報(bào)告
- (2024)吸痰管項(xiàng)目可行性研究報(bào)告寫作范本(一)
- 2023年電子陶瓷材料項(xiàng)目融資計(jì)劃書
- 光伏電站并網(wǎng)調(diào)試方案
- eviews軟件對于我國城鎮(zhèn)居民消費(fèi)性支出和可支配收入的分析
- 2022年檔案管理員資格考試題庫及答案-精簡版
- 堿爐安裝淺談
- 輕鋼龍骨吊頂和隔墻材料介紹和工藝
- 三科變頻器SK說明書
- 光柵衍射實(shí)驗(yàn)報(bào)告.doc
- 腹腔鏡手術(shù)設(shè)備使用說明與注意事項(xiàng)
- 建渣處置-運(yùn)輸方案(共4頁)
- 輪轉(zhuǎn)護(hù)士考評表(精編版)
- 文件交接(模板)
評論
0/150
提交評論