c8051f應(yīng)用筆記用片內(nèi)定時(shí)器實(shí)現(xiàn)16位_第1頁(yè)
c8051f應(yīng)用筆記用片內(nèi)定時(shí)器實(shí)現(xiàn)16位_第2頁(yè)
c8051f應(yīng)用筆記用片內(nèi)定時(shí)器實(shí)現(xiàn)16位_第3頁(yè)
c8051f應(yīng)用筆記用片內(nèi)定時(shí)器實(shí)現(xiàn)16位_第4頁(yè)
c8051f應(yīng)用筆記用片內(nèi)定時(shí)器實(shí)現(xiàn)16位_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C8051F000C8051F001C8051F002C8051F005C8051F006C8051F007C8051F010C8051F011C8051F012C8051F015C8051F016C8051F017C8051F220C8051F221C8051F226C8051F230C8051F231C8051F236注C8051F0xx器件有一個(gè)更適于產(chǎn)生PCA本文說明介紹如何實(shí)現(xiàn)一個(gè)16位的脈沖寬度調(diào)制器 數(shù)/模轉(zhuǎn)換器DAC該 一個(gè)與一個(gè)低通濾波器結(jié)合可以用作簡(jiǎn)單廉價(jià)的數(shù)/模轉(zhuǎn)換器DAC其輸出可用于驅(qū)動(dòng)電壓控制器件或用于需要模/數(shù)轉(zhuǎn)換器ADC采樣受控參數(shù)的反饋控制系統(tǒng)中常用本應(yīng)用筆記討論實(shí)現(xiàn)C8051F226-TB目標(biāo)板上的片內(nèi)定時(shí)器和低通濾波器實(shí)現(xiàn)ADC對(duì)輸出進(jìn)行采樣這一DAC實(shí)現(xiàn)方案可用于評(píng)估C8051F220/1/6ADCC8051F2xx系列SoC有三個(gè)可用于產(chǎn)生 的16位定時(shí)器本例使用定時(shí)器0產(chǎn)生波形輸出到一個(gè)通用端口引腳C8051F2xx系列SoC有一個(gè)8位 DAC的輸C8051F226-TB目標(biāo)板提供了一個(gè)低通濾波器該濾波器可很容易地用于 配置為用片內(nèi)ADC對(duì)其采樣而不需要另外連線或焊接本例假定使用目標(biāo)板產(chǎn)生一個(gè)輸入波脈沖寬度調(diào)制是通過改變一個(gè)脈沖的寬度或周期波形的占空度來對(duì)數(shù)據(jù)進(jìn)行編碼的/模轉(zhuǎn)換器DAC 在本例中我們使用定時(shí)器0對(duì)一個(gè)通用端口引腳的高低電平切換進(jìn)行定時(shí)以產(chǎn)生所要求的波形為了按用戶規(guī)定的占空度產(chǎn)生一個(gè)016位計(jì)數(shù)器/定時(shí)器方式為此我們用下面的代碼設(shè)置定時(shí)器方式寄存器TMOD和時(shí)鐘控制寄存器CKCON將定時(shí)器0配置為使用系統(tǒng)時(shí)鐘不分頻; TMOD,;設(shè)置定時(shí)器0使用系統(tǒng)時(shí)鐘/1 CKCON,#08h0用于設(shè)置一個(gè)周期內(nèi)務(wù)程序ISR使某個(gè)端口引腳變高或變低從而產(chǎn)生波形我們通過將ET0設(shè)置為1來允許定時(shí)器0中斷;允許定時(shí)器0中斷 另外還必須置1; ;啟動(dòng)定時(shí)器0 pulse_width的變量定義波形的占空度其值大小決定了在一個(gè)周期內(nèi)波形為016019個(gè)時(shí)鐘周期由于同樣的原因中斷服務(wù)程序?qū)?4個(gè)時(shí)鐘周期因此65522變量pulse_width定義如下;定義變量;輸入到低通濾器的 pulse_width3500053.4%占空度%pulsewidth1.pulse_widthVoutputVDD.端口引腳P2.7用于輸 波形 濾波器我們通過設(shè)置端口2配置寄存 ;P2.7 另外如果使用Cygnal的C8051F226-TB目標(biāo)板必須用跨接片將 以使端口引腳P2.7連接到低通濾波器定時(shí)器0ISR0溢出中斷服務(wù)程序用于產(chǎn)生波形這是通過對(duì)端口引腳P2.7斷這是最常見的作法但是當(dāng)ISR用于產(chǎn)生波形時(shí)會(huì)因中斷響應(yīng)延遲時(shí)間的微小變化而出現(xiàn)不希望的微小時(shí)序抖動(dòng)中斷響應(yīng)延遲時(shí)間不同是因?yàn)镃8051在完成當(dāng)前指令后才能轉(zhuǎn)向MCU處于雙周期轉(zhuǎn)移指令C8051MCU時(shí)MCU會(huì)被自動(dòng)從等待方式喚醒由于CPU內(nèi)核始終處于同一狀態(tài)這就消除了中斷延遲的不一致性注意在等待方式下所有外設(shè)例如定時(shí)器都照樣工作將電源控制寄存器PCON中的等待方式選擇位置1C8051進(jìn)入等待方式在從中斷服務(wù)程序返回時(shí)用一條轉(zhuǎn)移語(yǔ)句將程序計(jì)數(shù)器送回到設(shè)置等待方式的那條指令處; PCON, ISR返回reti指令時(shí)MCUsjmp設(shè)置等待方式位的那條指令然后等待下一個(gè)中斷條件發(fā)生0ISR產(chǎn)生波形是中斷服務(wù)程序ISR通過切換端口引腳電平產(chǎn)生的該ISR是具有兩個(gè)狀態(tài)的狀態(tài)機(jī)在一個(gè)狀態(tài)輸出引腳為高電平波形的高電平部分在該狀態(tài)定時(shí)器0被裝入pulse_width值MCU退出ISR在下一個(gè)狀態(tài)端口引腳變?yōu)榈碗娖酵ㄟ^P2.7位0被裝入-pulse_width值這就設(shè)置了波形的低電平時(shí)間在下一次溢出時(shí)測(cè)試P2.7位然后將其置1進(jìn)入到下一周期波形的高電平狀態(tài)在這種方式下占空度是可以改變的但波形的周期保持不變; P2.7, ;設(shè) ;在裝入前停止定時(shí)器0 TH0,#HIGH(-pulse_width) TL0,#LOW(-pulse_width);重新啟動(dòng)定時(shí)器0 ;轉(zhuǎn)向reti語(yǔ)句 ;設(shè) ;停止定時(shí)器0 TH0,#HIGH(pulse_width) TL0,#LOW(pulse_width);重新啟動(dòng)定時(shí)器0 ;RETURN:按給定占空度生成的波形被輸入到一個(gè)低通濾波器該濾波器將消除波形的大分高頻成分從時(shí)域角度看 RC電路被充電到一個(gè)與波形高電平占整個(gè)周期百分比占空度成正比的電壓電平簡(jiǎn)言之低通濾波器將波形的高電平時(shí)間轉(zhuǎn)換成系統(tǒng)輸出端的電壓由于系統(tǒng)輸入的是一個(gè)數(shù)值而輸出是一個(gè)所要求的電壓因此與低通濾波器可以被認(rèn)為是一種數(shù)/模轉(zhuǎn)換器DAC在示例中我們使用C8051F226-TB目標(biāo)板上的一階RC濾波器用跨接片將IN 線短接所用的濾波器如圖1所示圖1.低通濾波器1Vout(s) ,

1

sc

RC為了能充分消除波形的高頻成分以得到相對(duì)平滑的直流電壓電平RC濾波器必須有相對(duì)低的截止頻率但是如果RC常數(shù)太大則RC電壓上升到平滑電平的時(shí)間就會(huì)過長(zhǎng)即建立時(shí)間長(zhǎng)用計(jì)算機(jī)模擬或?qū)嶒?yàn)測(cè)試可以容易地在兩者之間進(jìn)行折衷選擇出合適的電阻/電容值該濾波器只有一個(gè)極點(diǎn)因此不能濾出矩形波的所有高頻成分電容要經(jīng)歷交替的充電和放電周期所以輸出不可能是一個(gè)恒定的直流電壓見圖2輸出電壓中會(huì)有一些與濾波器時(shí)間常數(shù)=RC相關(guān)的紋波圖2中的Vripple在頻域電壓紋波可以被認(rèn)為反映濾波器截止頻率=1/RC與波形頻率的關(guān)系我們把這一偏差電壓稱為電壓紋波VrippleVrippleRC電路中電容兩端2示出輸入的波形和低通濾波器的輸出波形為了表現(xiàn)RC電路中電容的充放電過程輸出波形是經(jīng)過放大的對(duì)于50%的占空度情況的紋波給定RC及波形的周期T該濾波器輸出的紋波由下式計(jì)算 T 2e2VrippleVDD1 T, 1e2 4.方程4是在描述RC電路中電容兩端電壓的的基礎(chǔ)上利用波形即50%占空度的對(duì)稱性而導(dǎo)出的 注意情況的紋波由頻率f=1/T 和RC時(shí)間常數(shù) RC組合決定了低通濾波器的截止頻率而波形頻率已知的這就可以表征出有多少波形的高頻成分能夠被濾出RC220k0.47μF用8位ADC采樣時(shí)能得到一個(gè)相對(duì)平滑的電壓電平而又維持一個(gè)合理的建立時(shí)間如果理想輸出是一個(gè)恒定的直流電壓則輸出電壓中的紋波可以被認(rèn)為是誤差為了能在設(shè)計(jì)濾波器或求簡(jiǎn)單RC濾波器元件值時(shí)計(jì)算這個(gè)誤差須知道波形的頻率和時(shí)間常數(shù)使用目標(biāo)板上的RC取值時(shí)=RC=0.1034秒如果定時(shí)器工作于16位方式并且使用16MHz的系統(tǒng)時(shí)鐘速度則本例中周期為T 2

16

圖 用片內(nèi)ADC采 C8051F226-TB目標(biāo)板包含一個(gè)C8051F226SoC它有一個(gè)8位模/數(shù)轉(zhuǎn)換器ADC在本例中我們要用該ADC對(duì)輸出電壓采樣也可以用電壓表對(duì)測(cè)試點(diǎn) 為了使用ADC 須為ADC輸入配置一個(gè)端口并對(duì)ADC初始化使其能以我們希望的速率測(cè)量輸出C8051F2xx系列器件可以用任意一個(gè)通用端口引腳作為模擬信號(hào)輸入AMX0SL寄存器用于設(shè)置ADC的多路開關(guān)AMUX以選擇一個(gè)端口引腳作為ADC輸入本例中所用的目標(biāo)板提供的電路能很容易地將輸出接到端口引腳P3.0將P3.0設(shè)置為ADC輸入的代碼如下;; AMUX0SL,ADC0CFSAR轉(zhuǎn)換時(shí)鐘還設(shè)置可編程增益放大器PGASAR2MHz16MHzSAR轉(zhuǎn)換時(shí)鐘設(shè)置為系統(tǒng)時(shí)鐘頻率的1/8即SAR轉(zhuǎn)換頻率=sysclk/8我們用如下語(yǔ)句將PGA的增益設(shè)置為1;; ADC2溢出時(shí)啟動(dòng)轉(zhuǎn)換ADC工作于低功耗方式在定時(shí)器2溢出時(shí)啟動(dòng)SARSYSCLKPGA=;2; , 最后我們?cè)试SADC工作這一控制位在 寄存器中而該寄存器是可以位尋址的因此我們使用setb;; 在本例中我們使用VDDADC的電壓基準(zhǔn)這是在;; ,在能利用定時(shí)器2溢出啟動(dòng)ADC轉(zhuǎn)換之前須設(shè)置和啟動(dòng)定時(shí)器2一個(gè)稱為ADCsampl的值裝入到定時(shí)器2對(duì)其進(jìn)行初始化將同樣的值裝入定時(shí)器2的捕捉寄存器RCAP2H:RCAP2L使其按所希望的采樣頻率溢出定時(shí)器2的自動(dòng)重裝載功能為這一應(yīng)用提供了方便采樣頻率最好與波形的頻率無關(guān)因?yàn)闉V波器不是理想的電容的充電和放電過程導(dǎo)致Vripple在直流電平中會(huì)有一個(gè)周期性的偏差電壓采樣頻率與頻率不同使我們能通ADC觀察這個(gè)電壓紋波在本例中我們使用的采樣頻率為1.6kHz;初始化T2使得在16MHz系統(tǒng)時(shí)鐘時(shí)ADC采樣頻率為1.6kHz TL2,#LOW(ADCsampl) TH2,;裝入對(duì)應(yīng)于ADC采樣頻率的重載值movRCAP2L,#LOW(ADCsampl)movRCAP2H;設(shè)置定時(shí)器2使用sysclk/1 CKCON,#20h;啟動(dòng)定時(shí)器2 ADC轉(zhuǎn)換結(jié)束中斷以便處理ADC樣本為了允許ADC中斷我們要設(shè)置擴(kuò)展中斷允許2寄存器EIE2;ADC EIE2, ADCP3.02所述設(shè)置端口引腳P3.0為模擬輸入并將其連到低通濾波器的輸出ADC已經(jīng)被設(shè)置為從P3.0輸入模擬信號(hào)現(xiàn)在須將該端口設(shè)置為模擬用端口引腳在復(fù)位后的缺省設(shè)置是數(shù)字輸入方式我們通過設(shè)置端口3數(shù)字/模擬端口方式寄存器P3MODE將端口引腳P3.0配置為模擬輸入方式;P3.0; P3MODE,注意須對(duì)輸出和ADC輸入進(jìn)行物理連接可以通過焊線或設(shè)計(jì)PCB來提供這種連接本例中使用的目標(biāo)板提供了方便連接的跳線可以很容易地用跨接片將板上提供的低通濾波器與端口引腳P3.0連接在一起對(duì)于本例而言不需進(jìn)行焊接或額外的連線為了配置外部電路使輸出信號(hào)輸入到端口引腳P3.0設(shè)置為ADC輸入用一個(gè)短路J6上就可以將腳連接到P3.0AINP3.0AINP3.0端口引腳已在片內(nèi)連在我們的例子中ADCADC中斷標(biāo)志即ADCINT位該標(biāo)志必須用軟件清除程序如下clr ;用ADC_ISR從ADC數(shù)據(jù)寄存器采樣數(shù)據(jù)和進(jìn)行數(shù)據(jù)處理是很方便的在本例中數(shù)據(jù)保留在字寄存器ADC0H 中并可被新樣本覆蓋該數(shù)據(jù)可以用Cygnal的集成開發(fā)環(huán)境IDE工具通過查看特殊功能寄存器ADC0H該寄存器保持ADC轉(zhuǎn)換結(jié)果來觀察輸出一個(gè)與pulse_width變量它決定波形的占空度對(duì)應(yīng)的電壓電平如前所述該輸出電壓可用第三頁(yè)中的2計(jì)算VDD是指器件的供電電壓數(shù)字6553616位數(shù)所能表示的最大值定時(shí)器是一個(gè)16位的計(jì)數(shù)器/定時(shí)器Voutput是低通濾波器的輸出電壓需要注意的是0pulse_width19VoutputVDD0.028%19pulse_width值都將產(chǎn)生與19相同的結(jié)果類似地處理014個(gè)時(shí)鐘周期因此可以使用的pulse_width的最大值是6552265536-14對(duì)應(yīng)的輸出電壓為VDD的99.98%在0.028%-99.98%范圍內(nèi)除了16位定時(shí)器分辨率帶來的量化誤差外再?zèng)]有因軟件引起的其它限制例如如果VDD=3.0V46μV0.87V到在我們的例子中我們用片內(nèi)ADC測(cè)量 的輸出ADC寄存器ADC0H 將是0和2558位ADC之間的一個(gè)值本例使用VDD作為ADC轉(zhuǎn)換的基準(zhǔn)電壓ADC輸出VresultVDD注意Vresult不可能與計(jì)算得到的 輸出值Voutput完全一致這是因?yàn)榇婷嬗懻撨^的Vripple見低通濾波器一節(jié);;;8A/D轉(zhuǎn)換器ADC;

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論