




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Good is good, but better carries it.精益求精,善益求善。s12dg128寄存器介紹及例程-PWM模塊介紹時間:2009-11-2522:51來源:電子設計吧作者:dzsj8點擊:662次該教程以MC9S12XS128單片機為核心進行講解,全面闡釋該16位單片機資源。本文為第一講,開始介紹該MCU的PWM模塊。PWM調制波有8個輸出通道,每一個輸出通道都可以獨立的進行輸出。每一個輸出通道都有一個精確的計數器(計算脈沖的個數),一個周期控制寄存器和兩個可供選擇的時鐘源。每一個PWM輸出通道都能調制出占空比從0100%變化的波形。PWM的主要特點有:1、它有8個獨
2、立的輸出通道,并且通過編程可控制其輸出波形的周期。2、每一個輸出通道都有一個精確的計數器。3、每一個通道的PWM輸出使能都可以由編程來控制。4、PWM輸出波形的翻轉控制可以通過編程來實現。5、周期和脈寬可以被雙緩沖。當通道關閉或PWM計數器為0時,改變周期和脈寬才起作用。6、8字節(jié)或16字節(jié)的通道協(xié)議。7、有4個時鐘源可供選擇(A、SA、B、SB),他們提供了一個寬范圍的時鐘頻率。8、通過編程可以實現希望的時鐘周期。9、具有遇到緊急情況關閉程序的功能。10、每一個通道都可以通過編程實現左對齊輸出還是居中對齊輸出。PWM寄存器說明1PWME、PWMCLK時間:2009-11-2522:56來源:
3、電子設計吧作者:dzsj8點擊:493次1、PWM啟動寄存器PWMEPWME寄存器每一位如圖1所示:復位默認值:00000000B圖1PWME寄存器每一個PWM的輸出通道都有一個使能位PWMEx。它相當于一個開關,用來啟動和關閉相應通道的PWM波形輸出。當任意的PWMEx位置1,則相關的PWM輸出通道就立刻可用。用法:PWME7=1-通道7可對外輸出波形PWME7=0-通道7不能對外輸出波形注意:在通道使能后所輸出的第一個波形可能是不規(guī)則的。當輸出通道工作在串聯模式時(PWMCTL寄存器中的CONxx置1),那么)使能相應的16位PWM輸出通道是由PWMEx的高位控制的,例如:設置PWMCTL
4、_CON01=1,通道0、1級聯,形成一個16位PWM通道,由通道1的使能位控制PWM的輸出。2、PWM時鐘選擇寄存器PWMCLKPWMCLK寄存器每一位如圖3所示:復位默認值:00000000B圖2PWMCLK寄存器S12的PWM共有四個時鐘源,每一個PWM輸出通道都有兩個時鐘可供選擇(ClockA、ClockSA或ClockB、ClockSB)。其中0、1、4、5通道可選用ClockA和ClockSA,2、3、6、7通道可選用ClockB、ClockSB通道。該寄存器用來實現幾個通道時鐘源的選擇。用法:PCLK0=1-通道0(PTP0)的時鐘源設為ClockSAPCLK2=0-通道2(PT
5、P2)的時鐘源設為ClockBPWM寄存器說明2PWMPRCLK、PWMSCLA/B時間:2009-11-2522:58來源:電子設計吧作者:dzsj8點擊:435次1、PWM預分頻寄存器PWMPRCLKPWMPRCLK寄存器每一位如圖3所示:復位默認值:00000000B圖3PWMPRCLK寄存器PWMPRCLK寄存器包括ClockA預分頻和ClockB預分頻的控制位。ClockA、ClockB的值為總線時鐘的1/2n(0n7),具體設置參照圖4和圖5圖4ClockA預分頻設置圖5ClockB預分頻設置PCKB0PCKB2是對ClockB進行預分頻。PCKA0PCKA2是對ClockA進行預
6、分頻。2、PWM分頻寄存器PWMSCLA、PWMSCLBPWMSCLA寄存器每一位如圖6所示:圖6PWMSCLA寄存器ClockSA是通過對PWMSCLA寄存器的設置來對ClockA進行分頻而產生的。其計算公式為:ClockSA=ClockA/(2*PWMSCLA)PWMSCLB寄存器與PWMSCLA寄存器相似,ClockSB就是通過對PWMSCLB寄存器的設置來對ClockB進行分頻而產生的。其計算公式為:ClockSB=ClockB/(2*PWMSCLB)PWM寄存器說明3PWMPOL、PWMCAE時間:2009-11-2607:09來源:電子設計吧作者:dzsj8點擊:372次1、PWM
7、極性選擇寄存器PWMPOLPWMPOL寄存器每一位如圖7所示:該寄存器是07通道PWM輸出起始極性控制位,用來設置PWM輸出的起始電平。用法:PWMPOL_PPOL0=1-通道0在周期開始時輸出為高電平,當計數器等于占空比寄存器的值時,輸出為低電平。對外輸出波形先是高電平然后再變?yōu)榈碗娖健?、PWM波形對齊寄存器PWMCAEPWMCAE寄存器每一位如圖8所示:圖8PWMCAE寄存器PWMCAE寄存器包含8個控制位來對每個PWM通道設置左對齊輸出或中心對齊輸出。用法:PWMCAE_CAE0=1-通道0中心對齊輸出PWMCAE_CAE7=0-通道7左對齊輸出注意:只有輸出通道被關閉后才能對其進行設
8、置,即通道被激活后不能對其進行設置。圖7PWMPOL寄存器PWM寄存器說明4PWMCTL時間:2009-11-2607:22來源:電子設計吧作者:dzsj8點擊:389次1、PWM控制寄存器PWMCTLPWMCTL寄存器每一位如圖9所示:圖9PWMCTL寄存器該控制寄存器設定通道的級聯和兩種工作模式:等待模式和凍結模式。這兩種模式如圖10和圖11所示。圖10等待模式圖11凍結模式只有當相應的通道關閉后,才能改變這些控制字。用法:PWMCTLCON67=1-通道6、7級聯成一個16位的PWM通道。此時只有7通道的控制字起作用,原通道7的使能位、PWM輸出極性選擇位、時鐘選擇控制位以及對齊方式選擇
9、位用來設置級聯后的PWM輸出特性PWMCTLCON67=0-通道6,7通道不級聯CON45、CON23、CON01的用法同CON67相似。設置此控制字的意義在于擴大了PWM對外輸出脈沖的頻率范圍。PSWAI=1-MCU一旦處于等待狀態(tài),就會停止時鐘的輸入。這樣就不會因時鐘在空操作而費電;當它置為0,則MCU就是處于等待狀態(tài),也允許時鐘的輸入。PFRZ=1-MCU一旦處于凍結狀態(tài),就會停止計數器工作。PWM寄存器說明5PWMCNTx、PWMPERx、PWMDTYx時間:2009-11-2607:30來源:電子設計吧作者:dzsj8點擊:440次1、PWM通道計數寄存器PWMCNTxPWMCNTx
10、寄存器共有8個,每一個通道都有一個8位PWM加/減雙向計數器,通道級聯后可變成16位PWM加/減雙向計數器。下面以PWMCNT0為例對PWMCNTx寄存器進行介紹。PWMCNT0寄存器如圖12所示:圖12PWMCNT0寄存器計數器以所選時鐘源的頻率運行。計數器在任何時候都可以被讀,而不影響計數,也不影響對PWM通道的操作。任何值寫入PWMCNT0寄存器都會導致計數器復位置0,且其計數方向會被設置為向上計數,并且會立刻從緩沖器載入任務和周期值,并會根據翻轉極性的設置來改變輸出。當計數器達到計數值后,會自動清零。只有當通道使能后,計數器才開始計數。2、PWM通道周期寄存器PWMPERxPWMPER
11、x寄存器共有8個,每一個通道都有一個這樣的周期寄存器。這個寄存器的值就決定了相關PWM通道的周期。每一個通道的周期寄存器都是雙緩沖的,因此如果當通道使能后,改變他們的值,將不會發(fā)生任何作用,除非當下列情況之一發(fā)生:*有效的周期結束。*對計數器進行寫操作(計數器復位)*通道不可用(PWMEx=0)這樣就會使PWM輸出波形要么是新波形要么是舊波形,并不會在兩者之間進行交替變換。如果通道不可用,那么對周期寄存器進行寫操作,將會直接導致周期寄存器同緩沖器一起閉鎖。圖13所示的是PWMPER0寄存器:圖13PWMPER0寄存器3、PWM通道占空比寄存器PWMDTYxPWMDTYx寄存器也有8個,每一個通
12、道都有一個這樣的占空比常數寄存器。這個寄存器的值就決定了相關PWM通道輸出波形的占空比。每一個通道的占空比寄存器都是雙緩沖的,因此如果當通道被激活后,改變他們的值將不會發(fā)生任何作用,除非當下列情況之一發(fā)生:*有效的周期結束。*對計數器進行寫操作(計數器復位)*通道不可用(PWMEx=0)這樣就會使PWM輸出波形要么是新波形要么是舊波形,并不會在兩者之間進行交替變換。如果通道沒有被激活,那么對占空比常數寄存器進行寫操作,將會直接導致周期寄存器同緩沖器一起閉鎖。當計數值與占空比常數PWMDTY相等時,則比較輸出器有效,這時就會將觸發(fā)器置位,然后PWMCNT繼續(xù)計數,當計數值與周期常數PWMPER相
13、等時,比較器輸出有效,將觸發(fā)器復位,同時也使PWMCNT復位,結束一個輸出周期。PWM工作原理時間:2009-11-2715:44來源:電子設計吧作者:dzsj8點擊:490次S12微控制器PWM模塊是由獨立運行的8位脈沖計數器PWMCNT、兩個比較寄存器PWMPER和PWMDTY組成。1、左對齊方式在該方式下,脈沖計數器為循環(huán)遞增計數,計數初值為0。當PWM使能后,計數器PWMCNT從0開始對時鐘信號遞增計數,開始一個輸出周期。當計數值與占空比常數寄存器PWMDTY相等時,比較器1輸出有效,將觸發(fā)器置位,而PWMCNT繼續(xù)計數;當計數值與周期常數寄存器PWMPER相等時,比較器2輸出有效,將
14、觸發(fā)器復位,同時PWMCNT也復位,結束一個輸出周期。原理參照圖14:圖14PWM左對齊方式2、中心對齊方式在該方式下,脈沖計數器為雙向計數,計數初值為0。當PWM使能后,計數器PWMCNT從0開始對時鐘信號遞增計數,開始輸出一個周期。當計數器與占空比常數寄存器PWMDTY相等時,比較器1輸出有效,觸發(fā)器翻轉,而PWMCNT繼續(xù)計數,當計數值與周期常數PWMPER相等時,比較器2輸出有效,此時改變PWMCNT的計數方向,使其遞解計數;當PWMCNT再次與PWMDTY相等時,比較器1再一次輸出有效,使觸發(fā)器再次翻轉,而PWMCNT繼續(xù)遞減計數,等待PWMCNT減回至0,完成一個輸出周期。原理參照
15、圖15:圖15中心對齊方式3、周期計算方法左對齊方式:輸出周期=通道周期PWMPERx中心對齊方式:輸出周期=通道周期PWMPERx24、脈寬計算方法左對齊方式:占空比=(PWMPERx-PWMDTYx)/PWMPERx100%中心對齊方式:占空比=PWMDTYx/PWMPERx100%PWM應用實例時間:2009-11-2821:49來源:電子設計吧作者:dzsj8點擊:412次PWM初始化步驟總結1、禁止PWMPWME=02、選擇時鐘PWMPRCLK,PWMSCLA,PWMSCLB,PWMCLK3、選擇極性PWMPOL4、選擇對齊方式PWMCAE5、選擇占空比和周期PWMDTYx,PWMP
16、ERx6、使能PWMPWME=1【例程1】/-/功能說明:MC9S12XS128-PWM例程/使用說明:實現通道3(PTP3)輸出頻率為1KHz,占空比為50%的方波,用示波器觀察/程序設計:電子設計吧【HYPERLINK】/設計時間:2010.01.21/-/#include/*commondefinesandmacros*/#includederivative.h/*derivative-specificdefinitions*/-初始化函數-/-時鐘初始化程序-/voidPLL_Init(void)/PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)/鎖相環(huán)時鐘=2*1
17、6*(2+1)/(1+1)=48MHzREFDV=1;/總線時鐘=48/2=24MHzSYNR=2;while(!(CRGFLG&0 x08);CLKSEL=0 x80;/選定鎖相環(huán)時鐘/-PWM初始化程序-/voidPWM_Init(void)PWME_PWME3=0 x00;/DisablePWM禁止PWMPRCLK=0 x33;/00110011A=B=24M/8=3M時鐘預分頻寄存器設置PWMSCLA=150;/SA=A/2/150=10k時鐘設置PWMSCLB=15;/SB=B/2/15=100k時鐘設置PWMCLK_PCLK3=1;/PWM3-SB時鐘源的選擇PWMPOL_PPOL
18、3=1;/Duty=HighTime極性設置PWMCAE_CAE3=0;/Left-aligned對齊方式設置PWMCTL=0 x00;/noconcatenation控制寄存器設置PWMPER3=100;/Frequency=SB/100=1K周期寄存器設置PWMDTY3=50;/Dutycycle=50%占空比寄存器設置PWME_PWME3=1;/EnablePWM使能/-主函數-/voidmain(void)/*putyourowncodehere*/PLL_Init();PWM_Init();EnableInterrupts;for(;)_FEED_COP();/*feedsthedo
19、g*/*loopforever*/*pleasemakesurethatyouneverleavemain*/A/D轉換模塊介紹1時間:2009-11-3022:10來源:電子設計吧作者:dzsj8點擊:327次1、A/D轉換原理A/D轉換的過程是模擬信號依次通過取樣、保持和量化、編碼幾個過程后轉換為數字格式。a)取樣與保持一般取樣與保持過程是同時完成的,取樣-保持電路的原理圖如圖16所示,由輸入放大器A1、輸出放大器A2、保持電容CH和電子開關S組成,要求AV1*AV2=1。原理是:當開關S閉合時,電路處于取樣階段,電容器充電,由于AV1*AV2=1,所以輸出等于輸入;當開關S斷開時,由于A
20、2輸入阻抗較大而且開關理想,可認為CH沒有放電回路,輸出電壓保持不變。圖16取樣-保持電路取樣-保持以均勻間隔對模擬信號進行抽樣,并且在每個抽樣運算后在足夠的時間內保持抽樣值恒定,以保證輸出值可以被A/D轉換器精確轉換。b)量化與編碼量化的方法,一般有舍尾取整法和四舍五入法,過程是先取頂量化單位,量化單位取值越小,量化誤差的絕對值就越小,具體過程在這里就不做介紹了。將量化后的結果用二進制碼表示叫做編碼。2、A/D轉換器的技術指標a)分辨率分辨率說明A/D轉換器對輸入信號的分辨能力,理論上,n位A/D轉換器能區(qū)分的輸入電壓的最小值為滿量程的1/2n。也就是說,在參考電壓一定時,輸出位數越多,量化
21、單位就越小,分辨率就越高。S12的ATD模塊中,若輸出設置為8位的話,那么轉換器能區(qū)分的輸入信號最小電壓為19.53mV。b)轉換時間A/D轉換器按其工作原理可以分為并聯比較型(轉換速度快ns級)、逐次逼近型(轉換速度適中us級)、雙積分型(速度慢抗干擾能力強)。不同類型的轉化的A/D轉換器轉換時間不盡相同,S12的ATD模塊中,8位數字量轉換時間僅有6us,10位數字量轉換時間僅有7us。A/D轉換模塊介紹2時間:2009-12-0921:32來源:電子設計吧作者:dzsj8點擊:334次S12內置了2組10位/8位的A/D模塊:ATD0和ATD1,共有16個模擬量輸入通道,屬于逐次逼近型A
22、/D轉換器(這個轉換過程與用天平稱物的原理相似)。1、功能結構圖圖17A/D模塊功能結構圖圖17所示的是A/D模塊的功能結構,這個功能模塊被虛線劃分成為圖示所示的虛線所隔離的三個部分:IP總線接口、轉換模式控制/寄存器列表,自定義模擬量。IP總線接口負責該模塊與總線的連接,實現A/D模塊和通用I/O的目的,還起到分頻的作用;轉換模式控制寄存器列表中有控制該模塊的所有的寄存器,執(zhí)行左右對齊運行和連續(xù)掃描。自定義模擬量負責實現模擬量到數字量的轉換。包括了執(zhí)行一次簡單轉換所需的模擬量和數字量。2、HCS12中A/D轉化模塊特點8/10位精度;7us,10-位單次轉換時間.;采樣緩沖放大器;可編程采樣
23、時間;左/右對齊,有符號/無符號結果數據;外部觸發(fā)控制;轉換完成中斷;模擬輸入8通道復用;模擬/數字輸入引腳復用;1到8轉換序列長度;連續(xù)轉換模式;多通道掃描方式。ATD模塊有模擬量前端、模擬量轉換、控制部分及結果存儲等四部分組成。其中模擬前端包括多路轉換開關、采樣緩沖器、放大器等,結果存儲部分主要有8個16位的存儲器和反映工作狀態(tài)的若干標志位。A/D寄存器說明1ATD0CTL2、時間:2009-12-1112:26來源:電子設計吧作者:dzsj8點擊:339次1、ATD0控制寄存器2-ATD0CTL2ATD0CTL2主要控制ATD0的啟動、狀態(tài)標志以及上電模式,對寄存器進行寫操作時,將中斷當
24、前的轉化過程。寄存器ATD0CTL2如圖18所示:圖18ATD0CTL2寄存器ADPU:A/D使能控制位,相當于一個開關,用來啟動/禁止A/D轉換1=A/D模塊上電0=禁止A/D,以減少功耗AFFC:A/D快速轉換完成標志位清零1=快速標志位清零順序,每次讀取結果寄存器自動清零0=正常標志位清零順序,需要軟件方式對狀態(tài)標志位清零AWAI:A/D等待模式1=等待模式下,ATD繼續(xù)運行0=等待模式下,ATD停止運行,以降低功耗ETRIGP、ETRIGLE、ETRIGE:ETRIGLEETRIGPETRIGE描述xx0忽略外部觸發(fā)001下降沿觸發(fā)011上升沿觸發(fā)101低電平觸發(fā)111高電平觸發(fā)【注意
25、】ETRIGE:外部觸發(fā)使能控制位,該功能借助引腳AN7,當AN7接收到外部觸發(fā)時,啟動A/D轉換,否則不進行轉換。0-忽略外部觸發(fā);1-有外部觸發(fā)時開始轉換,此時AN7不能用于A/D轉換。ASCIE:A/D轉化序列轉換結束中斷使能控制位1=允許ATD轉換序列轉換結束后發(fā)生中斷0=禁止ATD中斷ASCIF:A/D轉換序列轉換結束中斷標志,只用于讀。1=發(fā)生中斷0=為發(fā)生中斷A/D寄存器說明2ATD0CTL3時間:2009-12-1212:06來源:電子設計吧作者:dzsj8點擊:311次2、ATD0控制寄存器3-ATD0CTL3ATD0CTL3主要控制結果寄存器的映射,設置轉換序列的長度,還可
26、以暫時凍結ATD0模塊,尤其確定ATD0在BDM狀態(tài)下的行為。寄存器ATD0CTL3如圖19所示:圖19ATD0CTL3寄存器S1C、S2C、S4C、S8C:轉換序列長度選擇位控制位【注意】ATD的每次啟動要進行若干次掃描循環(huán),每次掃描循環(huán)稱為一個轉換序列。FIFO:結果寄存器FIFO模式控制位,1=結果寄存器映射到轉換序列0=結果寄存器沒有映射到轉換序列FRZ0、FRZ1:背景調試凍結控制位FRZResponse00IgnoreIFREEZE(凍結模式下繼續(xù)轉換)01Reserved(凍結模式下保留)10Finishconversionthenfreeze(完成轉換后凍結)11FreezeI
27、mmediately(凍結模式下立刻凍結)A/D寄存器說明3ATD0CTL4時間:2009-12-1411:50來源:電子設計吧作者:dzsj8點擊:298次3、ATD0控制寄存器4-ATD0CTL4ATD0CTL4用于選擇時鐘,選擇采樣轉換時間以及選擇8位/10位轉換方式。寄存器ATD0CTL4如圖20所示:圖20ATD0CTL4寄存器SRES8:A/D精度選擇控制位1=將采集到的模擬量以8位二進制數表示0=將采集到的模擬量以10位二進制數表示SMP0、SMP1:采樣時間選擇控制位SMP1:0采樣時間002A/D時鐘周期014A/D時鐘周期108A/D時鐘周期1116A/D時鐘周期PPS0:
28、4:5位模數計數器預分頻器-分頻系數從2到64-A/D時鐘計算公式:ATDClock=BusClock/(PRS+1)0.5-A/D時鐘頻率應滿足:【注意】對于AD轉換來說,它的轉換周期包括采樣時間和運算時間。如果頻率太高,則采樣時間過短。這對于輸出阻抗比較大或信號頻率比較高的信號來說,就會產生較大的采樣誤差,那么AD轉換的精度就會受較大的影響。A/D寄存器說明4ATD0CTL5時間:2009-12-1719:39來源:電子設計吧作者:dzsj8點擊:303次4、ATD0控制寄存器4-ATD0CTL5ATD0CTL5用于選擇轉換方式,選擇轉換通道,設置單/多通道轉換和單次/連續(xù)轉換模式以及對齊
29、方式。寄存器ATD0CTL5如圖20所示:圖20寄存器ATD0CTL5【注意】ATDCTRL5設置成多通道轉換后,ATDCTRL3設置采集的通道數,此外ATDCTRL5中還需要設置多通道采集的起始通道。比如采集7個通道,起始通道是1,那么就采集從17通道,如果起始通道是2,就采集27,還有0通道?!咀⒁狻吭赟12系列中,當轉換序列長度設置為1(S8C:S1C=0001),MULT=0時,只對一個通道進行一次轉換。A/D寄存器說明5ATD0START0、ATD0START1時間:2009-12-2700:47來源:電子設計吧作者:dzsj8點擊:263次5、ATD0狀態(tài)寄存器5-ATD0STAR
30、T0、ATD0START1ATD0START0反映當前的轉換通道、A/D轉換是否結束、是否有外部觸發(fā)等;ATD0START1反映轉換序列中相應的轉換是否完成。寄存器ATD0START0、ATD0START1如圖21所示:SCF-轉換序列完成標志在單次轉換模式時,當轉換完成后置位(SCAN=0)在連續(xù)轉換模式時,當第一次轉換完成后置位(SCAN=1),當AFFC=0,寫1清零。ETORF-外部觸發(fā)覆蓋標志如果在轉換過程中高/低電平出現,置位FIFOR當結果寄存器在讀出之前已經被寫入時,置位(CCF沒有清零)CC2:0轉換計數器-3位計數器指向下一個將要轉換的通道CCF7-CCF0-獨立通道轉換完
31、成標志位每個相應的通道轉換結束后置位,當相應的A/D結果寄存器被讀出時,清零,注意當AFFC位不同時的情況A/D轉換應用實例時間:2009-12-2700:51來源:電子設計吧作者:dzsj8點擊:351次第十六講:A/D轉換應用實例要讓ATD開始轉換工作,必須經過以下三個步驟:1.將ADPU置1,使ATD啟動;2.按照要求對轉換為數、掃描方式、采樣時間、時鐘頻率及標志檢查等方式進行設置;3.發(fā)出啟動命令;如果上電默認狀態(tài)即能滿足工作要求,那么只要將ADPU置1,然后通過控制寄存器發(fā)出轉換命令,即可實現轉換。【例程2】程序描述:由通道ATD0進行單通道A/D轉換,轉換值在B口顯示程序如下:#i
32、nclude/*commondefinesandmacros*/#include/*derivativeinformation*/#pragmaLINK_INFODERIVATIVEmc9s12dg128b/*定義變量*/wordAD_wValue;/AD轉換結果/*時鐘初始化*/voidPLL_Init(void)/PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)/鎖相環(huán)時鐘=2*16*(2+1)/(1+1)=48MHzREFDV=1;/總線時鐘=48/2=24MHzSYNR=2;while(!(CRGFLG&0 x08);CLKSEL=0 x80;/*AD初始化*/vo
33、idAD_Init(void)ATD0CTL2=0 xC0;/啟動A/D,快速清零,無等待模式,禁止外部觸發(fā),中斷禁止ATD0CTL3=0 x20;/轉換序列長度為4,NoFIFO,Freeze模式下繼續(xù)轉換ATD0CTL4=0 x85;/8位精度,2個時鐘,ATDClock=BusClock*0.5/PRS+1=2MHz;PRS=5,divider=12ATD0CTL5=0 xA0;/右對齊無符號,單通道采樣,通道0ATD0DIEN=0 x00;/禁止數字輸入/*讀取AD轉換結果*/voidAD_GetValue(word*AD_wValue)*AD_wValue=ATD0DR0;/讀取結果
34、寄存器的值/*主函數*/voidmain(void)PLL_Init();AD_Init();DDRB=0 xFF;PORTB=0 x00;EnableInterrupts;for(;)while(!ATD0STAT1_CCF0);/等待轉換結束while(ATDOSTAT1_CCF0=1)AD_GetValue(&AD_wValue);/讀取轉換結果PORTB=(byte)AD_wValue;/在B口顯示轉換值Timer模塊介紹1時間:2009-12-2911:51來源:電子設計吧作者:dzsj8點擊:324次1、簡述MC9S12XS128定時器模塊與MC9S12DG128ECT部分功能完全
35、類似,以下均以ECT模塊介紹xs128定時器模塊。HC12增強型捕捉計時器模塊在HCS12標準定時器的基礎上增加了一些特點,用以擴展它的應用范圍,特別是在汽車ABS方面。基準計時器的核心仍然是一個16位的可編程計數器,其時鐘源來自一個預分頻器。該計時器可以被應用于多個方面,包括在對輸入波形進行測量的同時產生一個輸出波形。波形的脈寬可以在幾微秒到數秒的范圍內變化。增強型定時器模塊(ECT)的結構框圖如下,ECT功能相當于高速的I/O口,由一個4位預分頻器、一個16位自由運行計數器,8個16位IC/OC通道,2個16位脈沖累加器以及一個16位模數遞減計數器組成。ECT實際上是一個16位的可編程計數
36、器,它的基本時鐘頻率可以通過預分頻器設置,用于產生波形輸出,測量輸入波形,統(tǒng)計脈沖個數,可以作為定時中斷功能和獨立時鐘基準。2、運行模式停止:由于時鐘停止,計時器和計數器均關閉。凍結:計時器和計數器均保持運行,直到TSCR($06)的TSFRZ位被置1。等待:計數器保持運行,直到TSCR($06)的TSWAI位被置1。正常:計時器和計數器均保持運行,直到TSCR($06)的TEN位和MCCTL($26)的MCEN位被分別清0。Timer模塊介紹2時間:2009-12-3022:12來源:電子設計吧作者:dzsj8點擊:314次IC通道組IC通道組由四個標準的緩沖通道IC0-IC3和四個非緩沖通
37、道IC4-IC7組成,兩部分的基本功能都是捕捉外部事件發(fā)生的時刻,但是緩沖通道除了ICOC寄存器TCn外,還設有保持寄存器TCnH,此外還在入口設置了延遲計數器,用來提高抗干擾能力。非緩沖通道沒有保持寄存器,入口也沒有延遲計數器,但每個通道入口設置了一個2輸入端的多路器,事件觸發(fā)信號可以是來自本通道的輸入引腳PORTn,也可以是來自其關聯通道PORT(n-4)的延遲計數器輸出,使用更加靈活。當延遲功能有效時,輸入引腳檢測到一個有效的邊沿后,延遲計數器開始對P時鐘(模塊時鐘)進行計數,當到達設定的計數值后,延遲計數器在其輸出端有條件地產生一個脈沖,這個條件就是延遲前后的引腳電平相反。這樣可以避免
38、對窄輸入脈沖做出反應。延遲計數結束后,計數器自動清除。輸入信號兩個有效邊沿之間的持續(xù)時間必須大于設定的延遲時間。在ECT中,所有IC通道均設置了覆蓋保護功能,可以通過寄存器ICOVW設置是否允許某個通道用新的捕捉結果覆蓋上一個結果。對于緩沖的IC通道PT0-PT3,還具有鎖存與隊列兩種工作方式。在鎖存方式下,每個有效的引腳事件只將自由定時器的值放入捕捉寄存器TCn,而TCn到保持寄存器TCnH的傳送必須依賴遞減模數計數器回0或者其他強制鎖存命令才能實現,這時IC的工作情形與第6章的TIM模塊相似。在隊列方式下(圖7-2),TCn與TCnH形成了一個類似先進先出的隊列,每個捕捉結果從TCn進入,
39、然后隨著下一個捕捉結果的到來移入TCnH,程序可以從TCnH取得結果,然而這個隊列是開放的,即程序也可以直接從TCn取得捕捉結果。隊列方式為CPU提供了充分的響應時間。由于PAC0-3與IC0-3共享相同的引腳,而且共享入口的邏輯,因此在兩種方式下,PAI與IC都可以同時工作,對同一引腳進行記錄,前者記錄脈沖或者邊沿的數量,后者記錄具體的時刻。模數遞減計數器16位遞減模數計數器(MDC)可以用作時鐘基準,產生周期性的中斷請求,也可用于將IC寄存器和脈沖累加器的值鎖存到各自的保持寄存器中。鎖存動作可以通過程序設定為周期性的或一次性的。MDC的時鐘頻率可通過獨立的定標器設定,內部設有定時常數寄存器
40、,可以實現自動重裝載,但MDC的常數寄存器與MDC計數器使用相同的地址,加載時通過特殊的時序實現。每當MDC回0時,將在給定的時間段內控制貯和PAI寄存器的內容向各自的緩沖寄存器傳輸。反映了MDC在IC、PAI系統(tǒng)中的作用。脈沖累加器脈沖累加器由4個8位的通道PAC0-PAC3組成,可以通過級聯形成兩個16位通道PACA、PACB,它可以統(tǒng)計輸入引腳上出現的有效邊沿的數量,也可以統(tǒng)計有效電平出現的累計時間。各個通道的8位保持寄存器是與4個緩沖IC通道相關聯的,它們共享邊沿檢測與延遲電路。當IC工作在兩種不同的隊列方式時,PAC保持寄存器也處于不同的工作狀態(tài),在鎖存方式下,PCnH的加載依靠MD
41、C計數器或者強制命令實現,而在隊列方式下,則依靠IC通道的TCnH讀命令。可見在ECT模塊下,IC與PAI的工作聯系更加緊密。此外,脈沖累加器還有飽和記憶功能,當8位的脈沖累加器計數超過$FF后記憶保持,而不回滾到0,這時,計數值$FF意味著計數已經達到或超過255,如不需要,該功能可以關閉。這可以用來監(jiān)視某個通道的計數值是否已經達到預定的目標值。值得注意的是,PACl、PAC0級聯后,輸入引腳為PT0,而PAC3、PAC2級聯后,輸入引腳并不是PT2,而是PT7,這樣可以與那些無ECT的MCU保持一致性。Timer寄存器說明1TSCR1、2時間:2009-12-3123:42來源:電子設計吧
42、作者:dzsj8點擊:391次1、定時器/計數器系統(tǒng)控制寄存器1(TSCR1)寄存器偏移量:$0006Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0TENTSWAITSFRZTFFCA0000可在任何時候讀或寫。TSCR1寄存器是定時器模塊的總開關,它決定模塊是否啟動以及在中斷等待、BDM方式下的行為,還包括標志的管理方式。其各位的意義如下:TEN:定時器使能位,此外它還控制定時器的時鐘信號源。要使用定時器模塊的ICOC功能,必須將TEN置位。如果因為某種原因定時器沒有使能,脈沖累加器也將得不到ECLK64時鐘,因為ECLK64是由定時器的分頻器產生的,這種情況下,脈沖累加器
43、將不能進行引腳電平持續(xù)時間的累加。0:定時器/計數器被禁止,有利于降低功耗。1:定時器/計數器使能,正常工作。TSWAI:等待模式下計時器關閉控制位?!咀⒁狻慷〞r器中斷不能用于使MCU退出等待模式。0:在中斷等待模式下允許MCU繼續(xù)運行。1:當MCU進入中斷等待模式時,禁止計時器。TSFRZ:在凍結模式下計時器和計數器停止位。0:在凍結模式下允許計時器和計數器繼續(xù)運行。1:在凍結模式下禁止計時器和計數器,用于仿真調試。【注意】TSFRZ不能停止脈沖累加。TFFCA:定時器標志快速清除選擇位。0:定時器標志普通清除方式。1:對于TFLGl($0E)中的各位,讀輸入捕捉寄存器或者寫輸出比較寄存器會
44、自動清除相應的標志位CnF。對于TFLG2($0F)中的各位,任何對TCNT寄存器($04、$05)的訪問均會清除TOF標志;任何對PACN3和PACN2寄存器($22,$23)的訪問都會清除PAFLG寄存器($21)中的PAOVF和PAIF位。任何對PACN1和PACN0寄存器($24,$25)的訪問都會清除PBFLG寄存器($21)中的PBOVF位?!菊f明】這種方式的好處是削減了另外清除標志位的軟件開銷。此外,必須特別注意避免對標志位的意外清除。2、計時器系統(tǒng)控制寄存器2(TSCR2)寄存器偏移量:$000DBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0TOI000TCR
45、EPR2PR1PR0可在任何時候讀或寫。TOI:定時器/計時器溢出中斷使能。0:中斷被禁止。1:當TOF標志被置位時發(fā)出硬件中斷請求?!咀⒁狻縏OF標志位在TFLG中TCRE:定時器/計數器復位使能。該位在通道7成功輸出比較之后允許時鐘計數器復位。該操作模式類似于遞增型計數器。0:計數器復位禁止,計數器自由計數。1:通道7成功輸出比較后計數器將被復位?!菊f明】如果TC7=$0000并且TCRE=1,TCNT將繼續(xù)保持$0000。如果TC7=$FFFF并且TCRE=1,當TCNT從$FFFF到$0000之間被復位后TOF將永遠不被置位。PR2,PR1,PR0:計數器預分頻選擇。這三位所決定的分頻
46、因子如下表所示。分頻因子選擇PR2PR1PR0PrescaleFactor0001001201040118100161013211064111128【說明】新設定的分頻因子不會立即起作用,直到下一個觸發(fā)沿到來那里所有預分頻計數器值均為零。Timer寄存器說明2TCTLl-TCTL4時間:2010-01-0713:03來源:電子設計吧作者:dzsj8點擊:235次3、控制寄存器(TCTLl-TCTL4)TCTLl-TCTL4分為兩組,分別對IC和OC電路進行設定,每組16個二進制位,每兩個二進制位管理一個通道。其中TCTLl、TCTL2設定各個OC通道匹配時的動作,包括切斷OC與輸出引腳的聯系,
47、而TCTL3、TCTL4設定IC響應引腳的何種動作,包括禁止IC的響應。TCTL1寄存器偏移量:$0008Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0OM7OL7OM6OL6OM5OL5OM4OL4TCTL2寄存器偏移量:$0009Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0OM3OL3OM2OL2OM1OL1OM0OL0可在任何時候讀或寫。OMn、OLn分別設定輸出方式和輸出電平,這8對控制位(OM7、OL7-OMO、OL0)編碼后用于指定通道比較成功后的輸出動作。如果每對當中至少有一個為1,對應引腳就固定為相應通道的輸出,而與DDRT中的對應位無關。
48、當二者同時為0時,OC與輸出引腳斷開。輸出比較動作設置OMnOLn動作00定時器與引腳斷開01OCn輸出翻轉10OCn輸出清零11OCn輸出置1TCTL3寄存器偏移量:$000ABit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0EDG7BEDG7AEDG6BEDG6AEDG5BEDG5AEDG4BEDG4ATCTL4寄存器偏移量:$000BBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0EDG3BEDG3AEDG2BEDG2AEDG1BEDG1AEDG0BEDG0A可在任何時候讀或寫。各個控制位的作用如下:EDGnB、EDGnA輸入捕捉邊沿控制位,這8對控制位(E
49、DG7B、EDG7AEDG0B、EDG0A)對輸入捕捉的邊沿檢測電路進行設置。當二者同時為0時,IC與輸入引腳斷開。輸入捕捉邊沿檢測電路設置EDGnBEDGnA邊沿檢測電路設置00禁止捕捉01捕捉上升沿10捕捉下降沿11上升沿下降沿均捕捉【注意】為了使OMn、OLn指定的引腳動作有效,OC7M中的對應位必須清0。若要使用16位脈沖累加器A和B,并使它們分別獨立于ICOC7和ICOC0,必須設置對應的IOSn:1、OMn=0、OLn=0,同時寄存器OC7M中的OC7M7、OC7M0位必須清0。Timer寄存器說明3TFLG1/2、TIE時間:2010-01-0815:10來源:電子設計吧作者:d
50、zsj8點擊:263次4、主定時器中斷標志寄存器(TFLG1、TFLG2)TFLG1寄存器偏移量:$000EBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0C7FC6FC5FC4FC3FC2FC1FC0FTFLG2寄存器偏移量:$000FBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0TOF0000000所示的TFLG1、TFLG2為中斷標志寄存器,其中TFLG1對應8個ICOC通道,當某CnF=1時說明對應的ICOC通道有動作,表明該通道有中斷事件發(fā)生。TFLG2只有一個標志位TOF,作為核心計數器的中斷請求標志。當TOF=1時說明核心計數器溢出。要清除某個標
51、志位,只需向該位寫1,向某位寫0不影響該位的狀態(tài)。當TSCR中的TFFCA位置位時,讀IC通道或寫OC通道($10-$1F)將自動清除該通道標志CnF,對TCNT的任何訪問將自動清除TFLG2。CnF:ICOC通道中斷請求標志。0:上次清除標志以來,ICOC通道沒有有效動作。1:ICOC通道已經出現動作。將寄存器ICSYS($2B)中的TFMOD位和ICOVW寄存器($2A)聯合使用,可以使定時器在兩次捕捉后才產生中斷,而不是每次捕捉均產生動作。兩次捕捉結果分別在捕捉和保持寄存器里面。TOF:定時器溢出標志,當16位自由定時器從$FFFF回滾到$0000時,該位置位。將$80寫入到TFLG2將
52、自動清除該位(寫1清零)。詳見前面關于TMSK2中TCRE控制位的解釋。5、計時器中斷使能寄存器(TIE)寄存器偏移量:$000CBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0C7IC6IC5IC4IC3IC2IC1IC0I可在任何時候讀或寫。TIE寄存器中的位與狀態(tài)寄存器TFLG1中的標志位相對應。如果將TIE中的某位清0,相應的標志位就不能引起硬件中斷。如果被置1,相應的標志位就可以引起中斷。C7I-C0I:輸入捕捉/輸出比較“x”中斷使能。Timer寄存器說明4TIOS、TC0-TC7時間:2010-01-0923:35來源:電子設計吧作者:dzsj8點擊:242次6、
53、ICOC選擇寄存器(TIOS)寄存器偏移量:$0000Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0IOS7IOS6IOS5IOS4IOS3IOS2IOS1IOS0TIOS寄存器用于指定各個通道的功能,即工作于IC還是OC方式。當某位IOSn=0時,對應的通道n為輸入捕捉(1C)通道,否則當IOSn=1時,通道n為輸出比較(OC)通道。其中的各位可以在任何時候寫入或讀出?!菊f明】上電后該寄存器默認為$00,TSCR中的TEN默認也為0,這時所有通道處于通用IO方式,將TEN置位后各個通道進入IC方式,要將某些通道設置成OC方式,必須對TIOS進行設置,即將有關位置1。設置成O
54、C的通道其引腳具有降功率驅動功能,設置成IC的通道具有內部上拉功能,但上電后均處于關閉狀態(tài),可以根據需要啟用。7、ICOC寄存器(TC0-TC7)每個IC或OC通道都設置有一個16位的寄存器,對于IC(輸入捕捉)通道,當通道的邊沿探測器檢測到由EDGnA、EDGnB指定的條件時,將自由定時器的值捕捉到寄存器TCn,隨后程序可以讀取和處理;對于OC(輸出比較)通道,程序將預定的時刻寫入到TCn,當自由定時器的值與其相等時,觸發(fā)由OMn、OLn所指定的輸出動作。定時器模塊共有TC7-TC0等8個16位ICOC寄存器。TC0寄存器偏移量:$0010-$0011Bit15Bit14Bit13Bit12
55、Bit11Bit10Bit9Bit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0TC1寄存器偏移量:$0012-$0013Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0TC2寄存器偏移量:$0014-$0015Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0TC3寄存器偏移量:$0016-$0017Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8Bit7Bit6B
56、it5Bit4Bit3Bit2Bit1Bit0TC4寄存器偏移量:$0018-$0019Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0TC5寄存器偏移量:$001A-$001BBit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0TC6寄存器偏移量:$001C-$001DBit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0TC7寄
57、存器偏移量:$001E-$001FBit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0Timer寄存器說明5TCNT、OC7M時間:2010-01-1219:43來源:電子設計吧作者:dzsj8點擊:326次8、定時器核心寄存器(TCNT)寄存器偏移量:$0004-$0005Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0TCNT是遞增計數器,它不停地對內部時鐘信號計數、程序可隨時讀取,但在普通模式下禁止寫入。TCN
58、T應按字訪問,分別訪問高、低字節(jié)可能得到錯誤的結果?!菊f明】在特殊模式下,TCNT可寫,但因為寫操作與預分頻器時鐘不同步,TCNT寄存器寫入后,其第一個周期可能是一個不同的值。9、輸出比較通道7屏蔽寄存器(OC7M)寄存器偏移量$0002Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0OC7M7OC7M6OC7M5OC7M4OC7M3OC7M2OC7M1OC7M0可在任何時候讀或寫。前面已經說明,OC7具有特殊地位,它匹配時可以直接改變其他7個輸出引腳的狀態(tài),并覆蓋各個引腳原來的匹配動作結果,寄存器OC7M決定哪些通道將處于OC7的管理之下。OC7M中的各位與PORTT口寄存器
59、的各位一一對應。當通過TIOS將某個通道設定為輸出比較時,將OC7M中的相應位置1,對應的引腳就是輸出狀態(tài),與DDR中的對應位的狀態(tài)無關。但OC7Mn并不改變DDR相應位的狀態(tài)。OC7M具有更高的優(yōu)先級,它優(yōu)于通過TCTL1和TCTL2寄存器中的OMn和OLn設定的引腳動作,若OC7M中某個位置1,就會阻止相應引腳上由OM和OL設定的動作。10、輸出比較通道7數據寄存器(OC7D)寄存器偏移量:$0003Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0OC7D7OC7D6OC7D5OC7D4OC7D3OC7D2OC7D1OC7D0可在任何時候讀或寫。OC7M對于其他OC輸出引腳
60、的管理限于將某個二進制值送到對應引腳,這個值保存在寄存器OC7D中的對應位中。當OC7匹配成功后,若某個OC7Mn=1,則內部邏輯將OC7Dn送到對應引腳。OC7D中的各位與PORTT口寄存器的各位一一對應。當通道7比較成功時,如果OC7M中的某個位為1,OC7D中的對應位將被輸出到PORTT的對應引腳。當OC7M中的某個位為1時,通道7匹配成功的動作如果與通道6-0的動作發(fā)生在同一個周期,前者將覆蓋后者。因此各個通道的動作將依賴于OC7D中各個位的設置。Timer模塊應用實例1時間:2010-01-1320:43來源:電子設計吧作者:dzsj8點擊:285次輸入捕捉(IC)編程步驟:初始化函
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北軟件職業(yè)技術學院《建筑數字技術》2023-2024學年第二學期期末試卷
- 2025年陜西省建筑安全員考試題庫及答案
- 山東城市建設職業(yè)學院《建筑工程概預算實驗》2023-2024學年第二學期期末試卷
- 四川工商學院《生態(tài)環(huán)境學》2023-2024學年第二學期期末試卷
- 南京工業(yè)大學浦江學院《用戶研究與設計定義》2023-2024學年第二學期期末試卷
- 陽江職業(yè)技術學院《材料形變加工新技術》2023-2024學年第二學期期末試卷
- 青島濱海學院《設備安裝》2023-2024學年第二學期期末試卷
- 新鄉(xiāng)學院《建筑設備》2023-2024學年第二學期期末試卷
- 新疆職業(yè)大學《有機化學理論教學》2023-2024學年第二學期期末試卷
- 徐州醫(yī)科大學《數字化版面設計ndesgn》2023-2024學年第二學期期末試卷
- GB/T 45083-2024再生資源分揀中心建設和管理規(guī)范
- 新教材人教版高中化學選擇性必修3全冊各章節(jié)知識點考點重點難點歸納總結
- 病假學生追蹤記錄表
- 生產組織供應能力說明
- 碳酸丙烯酯法脫碳工藝工程設計
- 手榴彈使用教案
- 廣東中小學教師職稱評審申報表初稿樣表
- 城市支路施工組織設計
- 北師大七年級數學下冊教學工作計劃及教學進表
- 菜肴成本核算(課堂PPT)
- 光纖通信原理課件 精品課課件 講義(全套)
評論
0/150
提交評論