手把手教你寫S12程序_第1頁
手把手教你寫S12程序_第2頁
手把手教你寫S12程序_第3頁
手把手教你寫S12程序_第4頁
手把手教你寫S12程序_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目錄第一章PWM模塊3第一節(jié)PWM模塊介紹3第二節(jié)PWM寄存器說明31、PWM啟動寄存器PWME32、PWM時鐘選擇寄存器PWMCLK43、PWM預分頻寄存器PWMPRCLK44、PWM分頻寄存器PWMSCLA、PWMSCLB55、PWM極性選擇寄存器PWMPOL66、PWM波形對齊寄存器PWMCAE67、PWM控制寄存器PWMCTL78、PWM通道計數寄存器 PWMCNTx89、PWM通道周期寄存器PWMPERx910、PWM通道占空比寄存器PWMDTYx9第三節(jié)PWM工作原理101、左對齊方式102、中心對齊方式103、周期計算方法114、脈寬計算方法11第四節(jié)應用實例11第二章A/D轉換

2、模塊13第一節(jié)A/D轉換模塊介紹131、取樣與保持132、量化與編碼133、分辨率134、轉換時間145、功能結構圖146、HCS12 中A/D轉化模塊特點14第二節(jié)A/D寄存器說明151、ATD0控制寄存器2-ATD0CTL2152、ATD0控制寄存器3-ATD0CTL3163、ATD0控制寄存器4-ATD0CTL4174、ATD0控制寄存器5-ATD0CTL5185、ATD0狀態(tài)寄存器5-ATD0START0、ATD0START019第三節(jié)A/D轉換應用實例19第三章Timer模塊22第一節(jié)Timer模塊介紹221、簡述222、運行模式233、通道組234、模數遞減計數器245、脈沖累加器

3、24第二節(jié)寄存器說明241、定時器/計數器系統(tǒng)控制寄存器 1(TSCR1)242、計時器系統(tǒng)控制寄存器 2(TSCR2)253、控制寄存器(TCTLl-TCTL4)264、主定時器中斷標志寄存器(TFLG1、TFLG2)285、計時器中斷使能寄存器(TIE)286、ICOC 選擇寄存器(TIOS)297、ICOC 寄存器(TC0-TC7)298、定時器核心寄存器(TCNT)309、輸出比較通道 7 屏蔽寄存器(OC7M)3010、輸出比較通道 7 數據寄存器(OC7D)30第三節(jié)Timer模塊應用實例311、輸入捕捉(IC)編程步驟:312、輸出比較(OC)編程步驟:33第四章SCI模塊36第

4、一節(jié)SCI寄存器說明361、波特率控制寄存器(SCIBDH、SCIBDL)362、數據寄存器(SCIDRH、SCIDRL)363、控制寄存器(SCICR1)374、控制寄存器2(SCICR2)385、狀態(tài)寄存器 1(SCISR1)396、狀態(tài)寄存器2(SCISR2)41第二節(jié)SCI模塊應用41聲明:以上資源來自電子設計吧,作者僅對其進行了整理43第一章 PWM模塊第一節(jié) PWM模塊介紹該教程以MC9S12DG128單片機為核心進行講解,全面闡釋該16位單片機資源。本文為第一講,開始介紹該MCU的PWM模塊。PWM 調制波有 8 個輸出通道,每一個輸出通道都可以獨立的進行輸出。每 一個輸出通道都

5、有一個精確的計數器(計算脈沖的個數),一個周期控制寄存器 和兩個可供選擇的時鐘源。每一個 PWM 輸出通道都能調制出占空比從 0100% 變化的波形。PWM 的主要特點有:1、它有 8 個獨立的輸出通道,并且通過編程可控制其輸出波形的周期。2、每一個輸出通道都有一個精確的計數器。3、每一個通道的 PWM 輸出使能都可以由編程來控制。4、PWM 輸出波形的翻轉控制可以通過編程來實現。5、周期和脈寬可以被雙緩沖。當通道關閉或 PWM 計數器為 0 時,改變周期和脈寬才起作用。6、8 字節(jié)或 16 字節(jié)的通道協議。7、有 4 個時鐘源可供選擇(A、SA、B、SB),他們提供了一個寬范圍的時 鐘頻率。

6、8、通過編程可以實現希望的時鐘周期。9、具有遇到緊急情況關閉程序的功能。10、每一個通道都可以通過編程實現左對齊輸出還是居中對齊輸出。第二節(jié) PWM寄存器說明1、 PWM啟動寄存器PWMEPWME 寄存器每一位如圖 1 所示: 復位默認值:0000 0000B圖 1 PWME 寄存器每一個PWM 的輸出通道都有一個使能位 PWMEx 。它相當于一個開關,用來啟動和關閉相應通道的 PWM 波形輸出。當任意的 PWMEx 位置 1,則相關的 PWM 輸出通道就立刻可用。用法: PWME7=1 - 通道7 可對外輸出波形PWME7=0 - 通道7 不能對外輸出波形 注意:在通道使能后所輸出的第一個波

7、形可能是不規(guī)則的。當輸出通道工作在串聯模式時(PWMCTL 寄存器中的 CONxx 置1),那么)使能相應的 16 位 PWM 輸出通道是由 PWMEx 的高位控制的,例如 :設置 PWMCTL_CON01 = 1,通道0、1級聯,形成一個16位 PWM 通道,由通道 1 的使能位控制 PWM 的輸出。2、 PWM時鐘選擇寄存器PWMCLKPWMCLK 寄存器每一位如圖3 所示:復位默認值:0000 0000B圖2 PWMCLK 寄存器S12的PWM 共有四個時鐘源,每一個 PWM 輸出通道都有兩個時鐘可供選擇(ClockA、ClockSA 或Clock B、ClockSB)。其中0、1、4、

8、5 通道可選用ClockA和ClockSA,2、3、6、7 通道可選用ClockB、ClockSB 通道。該寄存器用來實現幾個通道時鐘源的選擇。用法: PCLK0 = 1 - 通道0(PTP0)的時鐘源設為ClockSA PCLK2 = 0 - 通道2(PTP2)的時鐘源設為ClockB3、 PWM預分頻寄存器PWMPRCLKPWMPRCLK 寄存器每一位如圖3 所示:復位默認值:0000 0000B圖 3 PWMPRCLK 寄存器PWMPRCLK 寄存器包括ClockA預分頻和ClockB預分頻的控制位。ClockA、ClockB的值為總線時鐘的1/2n (0n7),具體設置參照圖4和圖5圖

9、 4 Clock A 預分頻設置圖5 Clock B 預分頻設置PCKB0PCKB2 是對ClockB進行預分頻。PCKA0PCKA2 是對ClockA進行預分頻。4、 PWM分頻寄存器PWMSCLA、PWMSCLBPWMSCLA 寄存器每一位如圖 6 所示:圖6 PWMSCLA寄存器Clock SA 是通過對 PWMSCLA 寄存器的設置來對ClockA 進行分頻而產生的。其計算公式為:Clock SA=Clock A /(2*PWMSCLA)PWMSCLB 寄存器與PWMSCLA 寄存器相似,Clock SB 就是通過對PWMSCLB 寄存器的設置來對 ClockB 進行分頻而產生的。其計

10、算公式為:Clock SB=Clock B /(2*PWMSCLB)。5、 PWM極性選擇寄存器PWMPOLPWMPOL 寄存器每一位如圖7 所示:該寄存器是07通道PWM輸出起始極性控制位,用來設置PWM輸出的起始電平。用法:PWMPOL_PPOL0=1- 通道 0 在周期開始時輸出為高電平,當計數器等于占空比寄存器的值時,輸出為低電平。對外輸出波形先是高電平然后再變?yōu)榈碗娖健?、 PWM波形對齊寄存器PWMCAEPWMCAE 寄存器每一位如圖 8 所示:圖 8 PWMCAE 寄存器PWMCAE 寄存器包含 8 個控制位來對每個 PWM 通道設置左對齊輸出或中心對齊輸出。用法: PWMCAE

11、_CAE0 = 1 - 通道0 中心對齊輸出 PWMCAE_CAE7 = 0 - 通道7 左對齊輸出注意:只有輸出通道被關閉后才能對其進行設置,即通道被激活后不能對其進行設置。7、 PWM控制寄存器PWMCTLPWMCTL 寄存器每一位如圖 9 所示:圖 9 PWMCTL 寄存器該控制寄存器設定通道的級聯和兩種工作模式:等待模式和凍結模式。這兩種模式如圖10和圖11所示。圖10 等待模式圖11 凍結模式只有當相應的通道關閉后,才能改變 這些控制字。用法:PWMCTLCON67=1 - 通道 6、7 級聯成一個16位的PWM通道。此時只有 7 通道的控制字起作用,原通道7的使能位、PWM輸出極性

12、選擇位、時鐘選擇控制位以及對齊方式選擇位用來設置級聯后的PWM輸出特性PWMCTLCON67=0 - 通道 6,7 通道不級聯CON45、CON23、CON01 的用法同 CON67 相似。設置此控制字的意義在于擴大了 PWM 對外輸出脈沖的頻率范圍。PSWAI=1 - MCU 一旦處于等待狀態(tài),就會停止時鐘的輸入。這樣就不會因時鐘在空操作而費電;當它置為 0,則 MCU 就是處于等待狀態(tài),也允許時鐘的輸入。PFRZ=1 - MCU 一旦處于凍結狀態(tài),就會停止計數器工作。8、 PWM通道計數寄存器 PWMCNTxPWMCNTx 寄存器共有 8個,每一個通道都有一個8位PWM加/減雙向計數器,通

13、道級聯后可變成16位PWM加/減雙向計數器。下面以PWMCNT0為例對 PWMCNTx 寄存器進行介紹。PWMCNT0 寄存器如圖 12 所示:圖 12 PWMCNT0 寄存器計數器以所選時鐘源的頻率運行。計數器在任何時候都可以被讀,而不影響計數,也不影響對 PWM 通道的操作。任何值寫入 PWMCNT0 寄存器都會導致計數器復位置 0,且其計數方向會 被設置為向上計數,并且會立刻從緩沖器載入任務和周期值,并會根據翻轉極性的設置來改變輸出。當計數器達到計數值后,會自動清零。只有當通道使能后,計數器才開始計數。9、 PWM通道周期寄存器PWMPERxPWMPERx 寄存器共有 8 個,每一個通道

14、都有一個這樣的周期寄存器。這個 寄存器的值就決定了相關 PWM 通道的周期。每一個通道的周期寄存器都是雙緩 沖的,因此如果當通道使能后,改變他們的值,將不會發(fā)生任何作用,除非當下列情況之一發(fā)生:*有效的周期結束。*對計數器進行寫操作(計數器復位)*通道不可用(PWMEx = 0)這樣就會使 PWM 輸出波形要么是新波形要么是舊波形,并不會在兩者之間 進行交替變換。如果通道不可用,那么對周期寄存器進行寫操作,將會直接導致 周期寄存器同緩沖器一起閉鎖。圖 13 所示的是 PWMPER0 寄存器:圖 13 PWMPER0 寄存器10、 PWM通道占空比寄存器PWMDTYxPWMDTYx 寄存器也有

15、8 個,每一個通道都有一個這樣的占空比常數寄存 器。這個寄存器的值就決定了相關 PWM 通道輸出波形的占空比。每一個通道的 占空比寄存器都是雙緩沖的,因此如果當通道被激活后,改變他們的值將不會發(fā)生任何作用,除非當下列情況之一發(fā)生:*有效的周期結束。*對計數器進行寫操作(計數器復位)*通道不可用(PWMEx = 0)這樣就會使 PWM 輸出波形要么是新波形要么是舊波形,并不會在兩者之間 進行交替變換。如果通道沒有被激活,那么對占空比常數寄存器進行寫操作,將會直接導致周期寄存器同緩沖器一起閉鎖。當計數值與占空比常數 PWMDTY 相等時,則比較輸出器有效,這時就會將觸發(fā)器置位,然后 PWMCNT

16、繼續(xù)計數,當計數值與周期常數 PWMPER 相等時,比較器輸出有效,將觸發(fā)器復位,同時也使 PWMCNT 復位,結束一個輸出周期。第三節(jié) PWM工作原理S12微控制器PWM模塊是由獨立運行的8位脈沖計數器PWMCNT、兩個比較寄存器PWMPER和PWMDTY組成。1、 左對齊方式在該方式下,脈沖計數器為循環(huán)遞增計數,計數初值為0 。當PWM使能后,計數器PWMCNT從0開始對時鐘信號遞增計數,開始一個輸出周期。當計數值與占空比常數寄存器PWMDTY相等時,比較器1輸出有效,將觸發(fā)器置位,而PWMCNT繼續(xù)計數;當計數值與周期常數寄存器PWMPER相等時,比較器2輸出有效,將觸發(fā)器復位,同時PW

17、MCNT也復位,結束一個輸出周期。原理參照圖14:圖14 PWM左對齊方式2、 中心對齊方式在該方式下,脈沖計數器為雙向計數,計數初值為0 。當PWM使能后,計數器PWMCNT從0開始對時鐘信號遞增計數,開始輸出一個周期。當計數器與占空比常數寄存器PWMDTY相等時,比較器1輸出有效,觸發(fā)器翻轉,而PWMCNT繼續(xù)計數,當計數值與周期常數PWMPER相等時,比較器2輸出有效,此時改變PWMCNT的計數方向,使其遞解計數;當PWMCNT再次與PWMDTY相等時,比較器1再一次輸出有效,使觸發(fā)器再次翻轉,而PWMCNT繼續(xù)遞減計數,等待PWMCNT減回至0,完成一個輸出周期。原理參照圖15:圖15

18、 中心對齊方式3、 周期計算方法左對齊方式:輸出周期 = 通道周期 PWMPERx中心對齊方式:輸出周期 = 通道周期 PWMPERx 24、 脈寬計算方法左對齊方式:占空比 = (PWMPERx - PWMDTYx) / PWMPERx 100%中心對齊方式:占空比 = PWMDTYx / PWMPERx 100%第四節(jié) 應用實例PWM 初始化步驟總結1、禁止PWM PWME = 02、選擇時鐘 PWMPRCLK,PWMSCLA,PWMSCLB,PWMCLK3、選擇極性 PWMPOL4、選擇對齊方式 PWMCAE5、選擇占空比和周期 PWMDTYx, PWMPERx6、使能PWM PWME

19、= 1/-/功能說明:MC9S12XS128-PWM例程/使用說明:實現通道3(PTP3)輸出頻率為1KHz,占空比為50%的方波,用示波器觀察/程序設計:電子設計吧【】/設計時間:2010.01.21/-/#include /* common defines and macros */#include derivative.h /* derivative-specific definitions */-初始化函數-/-時鐘初始化程序-/void PLL_Init(void) /PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) /鎖相環(huán)時鐘=2*16*(2+1)/(1+1)

20、=48MHz REFDV=1; /總線時鐘=48/2=24MHz SYNR=2; while(!(CRGFLG&0x08); CLKSEL=0x80; /選定鎖相環(huán)時鐘/-PWM初始化程序-/void PWM_Init(void) PWME_PWME3=0x00; / Disable PWM 禁止 PWMPRCLK=0x33; / 0011 0011 A=B=24M/8=3M 時鐘預分頻寄存器設置 PWMSCLA=150; / SA=A/2/150=10k 時鐘設置 PWMSCLB=15; / SB=B/2/15 =100k 時鐘設置 PWMCLK_PCLK3=1; / PWM3-SB 時鐘源

21、的選擇 PWMPOL_PPOL3=1; / Duty=High Time 極性設置 PWMCAE_CAE3=0; / Left-aligned 對齊方式設置 PWMCTL=0x00; / no concatenation 控制寄存器設置 PWMPER3=100; / Frequency=SB/100=1K 周期寄存器設置 PWMDTY3=50; / Duty cycle = 50% 占空比寄存器設置 PWME_PWME3=1; / Enable PWM 使能/-主函數-/void main(void) /* put your own code here */ PLL_Init(); PWM_I

22、nit(); EnableInterrupts; for(;) _FEED_COP(); /* feeds the dog */ /* please make sure that you never leave main */第二章 A/D轉換模塊第一節(jié) A/D轉換模塊介紹A/D轉換的過程是模擬信號依次通過取樣、保持和量化、編碼幾個過程后轉換為數字格式。1、 取樣與保持一般取樣與保持過程是同時完成的,取樣-保持電路的原理圖如圖16所示,由輸入放大器A1、輸出放大器A2、保持電容CH和電子開關S組成,要求 AV1 * AV2 = 1。原理是:當開關S閉合時,電路處于取樣階段,電容器充電,由于 A

23、V1 * AV2 = 1,所以輸出等于輸入;當開關S斷開時,由于A2輸入阻抗較大而且開關理想,可認為CH沒有放電回路,輸出電壓保持不變。圖16 取樣-保持電路取樣-保持以均勻間隔對模擬信號進行抽樣,并且在每個抽樣運算后在足夠的時間內保持抽樣值恒定,以保證輸出值可以被 A/D 轉換器精確轉換。2、 量化與編碼量化的方法,一般有舍尾取整法和四舍五入法,過程是先取頂量化單位,量化單位取值越小,量化誤差的絕對值就越小,具體過程在這里就不做介紹了。將量化后的結果用二進制碼表示叫做編碼。3、 分辨率分辨率說明A/D轉換器對輸入信號的分辨能力,理論上,n位A/D轉換器能區(qū)分的輸入電壓的最小值為滿量程的1/2

24、n 。也就是說,在參考電壓一定時,輸出位數越多,量化單位就越小,分辨率就越高。S12的ATD模塊中,若輸出設置為8位的話,那么轉換器能區(qū)分的輸入信號最小電壓為19.53mV。4、 轉換時間A/D轉換器按其工作原理可以分為并聯比較型(轉換速度快ns級)、逐次逼近型(轉換速度適中us級)、雙積分型(速度慢抗干擾能力強)。不同類型的轉化的A/D轉換器轉換時間不盡相同,S12的ATD模塊中,8位數字量轉換時間僅有6us,10位數字量轉換時間僅有7us。5、 功能結構圖S12內置了2組10位/8位的A/D模塊:ATD0和ATD1,共有16個模擬量輸入通道,屬于逐次逼近型A/D轉換器(這個轉換過程與用天平

25、稱物的原理相似)。圖17 A/D 模塊功能結構圖 圖17所示的是 A/D 模塊的功能結構,這個功能模塊被虛線劃分成為圖示所示的虛線所隔離的三個部分:IP 總線接口、轉換模式控制/寄存器列表,自定義模擬量。IP 總線接口負責該模塊與總線的連接,實現 A/D 模塊和通用 I/O 的目的, 還起到分頻的作用;轉換模式控制寄存器列表中有控制該模塊的所有的寄存器,執(zhí)行左右對齊運 行和連續(xù)掃描。自定義模擬量負責實現模擬量到數字量的轉換。包括了執(zhí)行一次簡單轉換所 需的模擬量和數字量。6、 HCS12 中A/D轉化模塊特點8/10 位精度;7 us, 10-位單次轉換時間.;采樣緩沖放大器;可編程采樣時間;

26、左/右對齊, 有符號/無符號結果數據;外部觸發(fā)控制;轉換完成中斷;模擬輸入8 通道復用;模擬/數字輸入引腳復用;1 到 8 轉換序列長度;連續(xù)轉換模式;多通 道掃描方式。ATD 模塊有模擬量前端、模擬量轉換、控制部分及結果存儲等四部分組成。其中模擬前端包括多路轉換開關、采樣緩沖器、放大器等,結果存儲部分主要有8個 16 位的存儲器和反映工作狀態(tài)的若干標志位。第二節(jié) A/D寄存器說明1、 ATD0控制寄存器2-ATD0CTL2ATD0CTL2主要控制ATD0的啟動、狀態(tài)標志以及上電模式,對寄存器進行寫操作時,將中斷當前的轉化過程。寄存器ATD0CTL2如圖18所示:圖18 ATD0CTL2寄存器

27、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ā)【注意】ETRIGE:外部觸發(fā)使能控制位,該功

28、能借助引腳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ā)生中斷2、 ATD0控制寄存器3-ATD0CTL3ATD0CTL3主要控制結果寄存器的映射,設置轉換序列的長度,還可以暫時凍結ATD0模塊,尤其確定ATD0在BDM狀態(tài)下的行為。寄存器ATD0CTL3如圖19所示:圖19 ATD0CTL3寄存器

29、S1C、S2C、S4C、S8C:轉換序列長度選擇位控制位【注意】ATD的每次啟動要進行若干次掃描循環(huán),每次掃描循環(huán)稱為一個轉換序列。FIFO:結果寄存器 FIFO模式控制位,1 = 結果寄存器映射到轉換序列0 = 結果寄存器沒有映射到轉換序列FRZ0、FRZ1:背景調試凍結控制位FRZResponse00IgnoreIFREEZE(凍結模式下繼續(xù)轉換)01Reserved(凍結模式下保留)10Finishconversionthenfreeze(完成轉換后凍結)11FreezeImmediately(凍結模式下立刻凍結)3、 ATD0控制寄存器4-ATD0CTL4ATD0CTL4用于選擇時鐘,

30、選擇采樣轉換時間以及選擇8位/10位轉換方式。寄存器ATD0CTL4如圖20所示:圖20 ATD0CTL4寄存器SRES8 : A/D 精度選擇控制位1 = 將采集到的模擬量以8位二進制數表示0 = 將采集到的模擬量以10位二進制數表示SMP0、SMP1 : 采樣時間選擇控制位SMP 1:0采樣時間002A/D 時鐘周期014A/D 時鐘周期108A/D 時鐘周期1116A/D時鐘周期PPS0:4 : 5 位 模數計數器預分頻器- 分頻系數從 2 到 64- A/D時鐘計算公式 :ATDClock = BusClock/(PRS + 1) 0.5- A/D時鐘頻率應滿足:【注意】對于AD轉換來

31、說,它的轉換周期包括采樣時間和運算時間。如果頻率太高,則采樣時間過短。這對于輸出阻抗比較大或信號頻率比較高的信號來說,就會產生較大的采樣誤差,那么AD轉換的精度就會受較大的影響。4、 ATD0控制寄存器5-ATD0CTL5ATD0CTL5用于選擇轉換方式,選擇轉換通道,設置單/多通道轉換和單次/連續(xù)轉換模式以及對齊方式。寄存器ATD0CTL5如圖20所示: 圖20 寄存器ATD0CTL5【注意】ATDCTRL5設置成多通道轉換后,ATDCTRL3設置采集的通道數,此外ATDCTRL5中還需要設置多通道采集的起始通道。比如采集7個通道,起始通道是1,那么就采集從17通道,如果起始通道是2,就采集

32、27,還有0通道?!咀⒁狻吭赟12系列中,當轉換序列長度設置為1(S8C:S1C=0001),MULT=0時,只對一個通道進行一次轉換。5、 ATD0狀態(tài)寄存器5-ATD0START0、ATD0START0ATD0START0反映當前的轉換通道、A/D轉換是否結束、是否有外部觸發(fā)等;ATD0START1反映轉換序列中相應的轉換是否完成。寄存器ATD0START0、ATD0START1如圖21所示:SCF -轉換序列完成標志 在單次轉換模式時,當轉換完成后置位 (SCAN = 0) 在連續(xù)轉換模式時,當第一次轉換完成后置位 (SCAN = 1),當AFFC = 0,寫 1 清零。ETORF -外

33、部觸發(fā)覆蓋標志如果在轉換過程中高/低電平出現,置位 FIFOR當結果寄存器在讀出之前已經被寫入時,置位 ( CCF 沒有清零) CC2:0轉換計數器-3位計數器指向下一個將要轉換的通道 CCF7 -CCF0 -獨立通道轉換完成標志位每個相應的通道轉換結束后置位,當相應的 A/D 結果寄存器被讀出時,清零,注意當 AFFC 位不同時的情況第三節(jié) A/D轉換應用實例要讓 ATD 開始轉換工作,必須經過以下三個步驟:1.將 ADPU 置 1,使 ATD 啟動;2.按照要求對轉換為數、掃描方式、采樣時間、時鐘頻率及標志檢查等方式 進行設置;3.發(fā)出啟動命令;如果上電默認狀態(tài)即能滿足工作要求,那么只要將

34、 ADPU 置 1,然后通過控 制寄存器發(fā)出轉換命令,即可實現轉換。程序描述:由通道ATD0進行單通道A/D轉換,轉換值在B口顯示程序如下:#include /* common defines and macros */#include /* derivative information */#pragma LINK_INFO DERIVATIVE mc9s12dg128b/*定義變量*/word AD_wValue;/AD轉換結果/*時鐘初始化*/void PLL_Init(void) /PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) /鎖相環(huán)時鐘=2*16*(2+1)

35、/(1+1)=48MHzREFDV=1; /總線時鐘=48/2=24MHz SYNR=2; while(!(CRGFLG&0x08); CLKSEL=0x80;/*AD初始化*/void AD_Init(void) ATD0CTL2=0xC0; / 啟動A/D, 快速清零, 無等待模式, 禁止外部觸發(fā), 中斷禁止 ATD0CTL3=0x20; / 轉換序列長度為4, No FIFO, Freeze模式下繼續(xù)轉換 ATD0CTL4=0x85; / 8位精度, 2個時鐘, ATDClock=BusClock*0.5/PRS+1=2MHz;PRS=5,divider=12 ATD0CTL5=0xA0

36、; / 右對齊無符號,單通道采樣,通道0 ATD0DIEN=0x00; / 禁止數字輸入 /*讀取AD轉換結果*/void AD_GetValue(word *AD_wValue) *AD_wValue=ATD0DR0; /讀取結果寄存器的值/*主函數*/void main(void) PLL_Init(); AD_Init(); DDRB=0xFF; PORTB=0x00; EnableInterrupts; for(;) while(!ATD0STAT1_CCF0); / 等待轉換結束while(ATDOSTAT1_CCF0=1)AD_GetValue(&AD_wValue); / 讀取轉

37、換結果 PORTB = (byte)AD_wValue; / 在B口顯示轉換值 第三章 Timer模塊第一節(jié) Timer模塊介紹1、 簡述MC9S12XS128定時器模塊與MC9S12DG128 ECT部分功能完全類似,以下均以ECT模塊介紹xs128定時器模塊。HC12 增強型捕捉計時器模塊在HCS12標準定時器的基礎上增加了一些特點,用以擴展它的應用范圍,特別是在汽車 ABS 方面。基準計時器的核心仍然是一個 16 位的可編程計數器,其時鐘源來自一個預分頻器。該計時器可以被應用于多個方面,包括在對輸入波形進行測量的同時產生一個輸出波形。波形的脈寬可以在幾微秒到數秒的范圍內變化。增強型定時器

38、模塊(ECT)的結構框圖如下,ECT功能相當于高速的I/O口,由一個4位預分頻器、一個16位自由運行計數器,8個16位IC/OC通道,2個16位脈沖累加器以及一個16位模數遞減計數器組成。ECT實際上是一個16位的可編程計數器,它的基本時鐘頻率可以通過預分頻器設置,用于產生波形輸出,測量輸入波形,統(tǒng)計脈沖個數,可以作為定時中斷功能和獨立時鐘基準。2、 運行模式 停止:由于時鐘停止,計時器和計數器均關閉。凍結:計時器和計數器均保持運行,直到 TSCR($06)的 TSFRZ 位被置 1。 等待:計數器保持運行,直到 TSCR($06)的 TSWAI 位被置 1。正常:計時器和計數器均保持運行,直

39、到 TSCR($06)的 TEN 位和 MCCTL($26)的MCEN 位被分別清 0。3、 通道組IC 通道組由四個標準的緩沖通道 IC0-IC3 和四個非緩沖通道 IC4-IC7 組成, 兩部分的基本功能都是捕捉外部事件發(fā)生的時刻,但是緩沖通道除了 ICOC 寄存器 TCn 外,還設有保持寄存器 TCnH,此外還在入口設置了延遲計數器,用來提高抗干擾能力。非緩沖通道沒有保持寄存器,入口也沒有延遲計數器,但每個通道入口設置了一個 2 輸入端的多路器,事件觸發(fā)信號可以是來自本通道的輸入引腳 PORTn,也可以是來自其關聯通道 PORT(n-4)的延遲計數器輸出,使用更 加靈活。當延遲功能有效時

40、,輸入引腳檢測到一個有效的邊沿后,延遲計數器開 始對 P 時鐘(模塊時鐘)進行計數,當到達設定的計數值后,延遲計數器在其輸出 端有條件地產生一個脈沖,這個條件就是延遲前后的引腳電平相反。這樣可以避免對窄輸入脈沖做出反應。延遲計數結束后,計數器自動清除。輸入信號兩個有 效邊沿之間的持續(xù)時間必須大于設定的延遲時間。在 ECT 中,所有 IC 通道均設置了覆蓋保護功能,可以通過寄存器 ICOVW設置是否允許某個通道用新的捕捉結果覆蓋上一個結果。對于緩沖的 IC 通道 PT0-PT3,還具有鎖存與隊列兩種工作方式。在鎖存方 式下,每個有效的引腳事件只將自由定時器的值放入捕捉寄存器 TCn,而 TCn

41、到保持寄存器 TCnH 的傳送必須依賴遞減模數計數器回 0 或者其他強制鎖存命令 才能實現,這時 IC 的工作情形與第 6 章的 TIM 模塊相似。在隊列方式下(圖 7-2), TCn 與 TCnH 形成了一個類似先進先出的隊列,每個捕捉結果從 TCn 進入,然 后隨著下一個捕捉結果的到來移入 TCnH,程序可以從 TCnH 取得結果,然而這 個隊列是開放的,即程序也可以直接從 TCn 取得捕捉結果。隊列方式為 CPU 提 供了充分的響應時間。由于 PAC0-3 與 IC0-3 共享相同的引腳,而且共享入口的邏輯,因此在兩種 方式下,PAI 與 IC 都可以同時工作,對同一引腳進行記錄,前者記

42、錄脈沖或者 邊沿的數量,后者記錄具體的時刻。4、 模數遞減計數器16 位遞減模數計數器(MDC)可以用作時鐘基準,產生周期性的中斷請求, 也可用于將 IC 寄存器和脈沖累加器的值鎖存到各自的保持寄存器中。鎖存動作 可以通過程序設定為周期性的或一次性的。MDC 的時鐘頻率可通過獨立的定標 器設定,內部設有定時常數寄存器,可以實現自動重裝載,但 MDC 的常數寄存 器與 MDC 計數器使用相同的地址,加載時通過特殊的時序實現。每當 MDC 回 0 時,將在給定的時間段內控制貯和 PAI 寄存器的內容向各自 的緩沖寄存器傳輸。反映了 MDC 在 IC、PAI 系統(tǒng)中的作用。5、 脈沖累加器脈沖累加器

43、由 4 個 8 位的通道 PAC0-PAC3 組成,可以通過級聯形成兩個 16 位通道 PACA、PACB,它可以統(tǒng)計輸入引腳上出現的有效邊沿的數量,也可以統(tǒng)計有效電平出現的累計時間。各個通道的 8 位保持寄存器是與 4 個緩沖 IC 通 道相關聯的,它們共享邊沿檢測與延遲電路。當 IC 工作在兩種不同的隊列方式 時, PAC 保持寄存器也處于不同的工作狀態(tài),在鎖存方式下,PCnH 的加載依 靠 MDC 計數器或者強制命令實現,而在隊列方式下,則依靠 IC 通道的 TCnH 讀命令??梢娫?ECT 模塊下, IC 與 PAI 的工作聯系更加緊密。此外,脈沖累加器還有飽和記憶功能,當 8 位的脈

44、沖累加器計數超過$FF 后 記憶保持,而不回滾到 0,這時,計數值$FF 意味著計數已經達到或超過 255, 如不需要,該功能可以關閉。這可以用來監(jiān)視某個通道的計數值是否已經達到預 定的目標值。值得注意的是,PACl、PAC0 級聯后,輸入引腳為 PT0,而 PAC3、PAC2 級 聯后,輸入引腳并不是 PT2,而是 PT7,這樣可以與那些無 ECT 的 MCU 保持一 致性。第二節(jié) 寄存器說明1、 定時器/計數器系統(tǒng)控制寄存器 1(TSCR1)寄存器偏移量:$0006Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0TENTSWAITSFRZTFFCA0000可在任何時候讀或寫

45、。TSCR1 寄存器是定時器模塊的總開關,它決定模塊是否啟動以及在中斷等待、BDM 方式下的行為,還包括標志的管理方式。其各位的意義如下:TEN:定時器使能位,此外它還控制定時器的時鐘信號源。要使用定時器模塊的 ICOC 功能,必須將 TEN 置位。如果因為某種原因定時器沒有使能,脈沖累加器也將得不到 ECLK64 時鐘,因為 ECLK64 是由定時器的分頻器產生的,這種情況下,脈沖累加器將不能進行引腳電平持續(xù)時間的累加。0:定時器/計數器被禁止,有利于降低功耗。1:定時器/計數器使能,正常工作。TSWAI:等待模式下計時器關閉控制位?!咀⒁狻慷〞r器中斷不能用于使 MCU 退出等待模式。0:在

46、中斷等待模式下允許 MCU 繼續(xù)運行。1:當 MCU 進入中斷等待模式時,禁止計時器。TSFRZ:在凍結模式下計時器和計數器停止位。0:在凍結模式下允許計時器和計數器繼續(xù)運行。1:在凍結模式下禁止計時器和計數器,用于仿真調試。 【注意】TSFRZ 不能停止脈沖累加。 TFFCA:定時器標志快速清除選擇位。0:定時器標志普通清除方式。1:對于 TFLGl($0E)中的各位,讀輸入捕捉寄存器或者寫輸出比較寄存器會自動清除相應的標志位 CnF。對于 TFLG2($0F)中的各位,任何對 TCNT 寄存器($04、$05)的訪問均會清除 TOF 標志;任何對 PACN3 和 PACN2 寄存器($22

47、,$23)的訪問都會清除 PAFLG 寄存器($21)中的 PAOVF 和 PAIF 位。任何對 PACN1 和 PACN0 寄存器($24,$25)的訪問都會清除 PBFLG 寄存器($21)中的 PBOVF 位?!菊f明】這種方式的好處是削減了另外清除標志位的軟件開銷。此外,必須特別注意避免對標志位的意外清除。2、 計時器系統(tǒng)控制寄存器 2(TSCR2)寄存器偏移量:$000DBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0TOI000TCREPR2PR1PR0可在任何時候讀或寫。TOI:定時器/計時器溢出中斷使能。0:中斷被禁止。1:當 TOF 標志被置位時發(fā)出硬件中斷請求

48、?!咀⒁狻縏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:計數器預分頻選擇。 這三位所決定的分頻因子如下表所示。分頻因子選擇PR2PR1PR0PrescaleFactor000100120104

49、0118100161013211064111128【說明】新設定的分頻因子不會立即起作用,直到下一個觸發(fā)沿到來那里所有預分頻計數器值均為零。3、 控制寄存器(TCTLl-TCTL4)TCTLl-TCTL4 分為兩組,分別對 IC 和 OC 電路進行設定,每組 16 個二進制位,每兩個二進制位管理一個通道。其中 TCTLl、TCTL2 設定各個 OC 通道 匹配時的動作,包括切斷 OC 與輸出引腳的聯系,而 TCTL3、TCTL4 設定 IC 響 應引腳的何種動作,包括禁止 IC 的響應。TCTL1寄存器偏移量:$0008Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0OM7OL

50、7OM6OL6OM5OL5OM4OL4TCTL2寄存器偏移量:$0009Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0OM3OL3OM2OL2OM1OL1OM0OL0可在任何時候讀或寫。OMn、OLn 分別設定輸出方式和輸出電平,這 8 對控制位(OM7、OL7-OMO、 OL0)編碼后用于指定通道比較成功后的輸出動作。如果每對當中至少有一個為1,對應引腳就固定為相應通道的輸出,而與 DDRT 中的對應位無關。 當二者同時為 0 時,OC 與輸出引腳斷開。輸出比較動作設置OMnOLn動作00定時器與引腳斷開01OCn輸出翻轉10OCn輸出清零11OCn輸出置1TCTL3寄存器

51、偏移量:$000A Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0EDG7BEDG7AEDG6BEDG6AEDG5BEDG5AEDG4BEDG4ATCTL4寄存器偏移量:$000B Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0EDG3BEDG3AEDG2BEDG2AEDG1BEDG1AEDG0BEDG0A可在任何時候讀或寫。各個控制位的作用如下:EDGnB、EDGnA 輸入捕捉邊沿控制位,這 8 對控制位(EDG7B、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、OC7M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論