6DSP原理與應(yīng)用教案ADC_第1頁(yè)
6DSP原理與應(yīng)用教案ADC_第2頁(yè)
6DSP原理與應(yīng)用教案ADC_第3頁(yè)
6DSP原理與應(yīng)用教案ADC_第4頁(yè)
6DSP原理與應(yīng)用教案ADC_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《DSP原理與應(yīng)用》教案〔6〕教學(xué)課時(shí):4學(xué)時(shí)六、A/D轉(zhuǎn)換模塊A/D轉(zhuǎn)換模塊概述F2407A/D轉(zhuǎn)換模塊〔ADC〕具有以下特性:〔S/H〕10ADC。16個(gè)的模擬輸入通道〔ADCIN0~ADCIN1。、自動(dòng)排序的力量。一次可執(zhí)行最多16個(gè)通道的“自動(dòng)轉(zhuǎn)換道都可以通過(guò)編程來(lái)選擇?!睸EQ1SEQ2〕可以獨(dú)立16個(gè)模擬轉(zhuǎn)換通道的排序器模式。5、在給定的排序方式下,4個(gè)排序掌握器〔CHSELSEQn〕打算了模擬通道轉(zhuǎn)換的挨次。A/D轉(zhuǎn)換:軟件:軟件馬上啟動(dòng)〔SOCSEQn;E〔EAA/D轉(zhuǎn)換;EV〔EVBA/D轉(zhuǎn)換外部:ADCSOC引腳。8、敏捷的中斷掌握,允許在每一個(gè)或每隔一個(gè)序列的完畢時(shí)產(chǎn)生中斷懇求。9、排序器可工作在啟動(dòng)/停頓模式,允很多個(gè)按時(shí)間排序的觸發(fā)源同步轉(zhuǎn)換。圖6-1 F2407xAADC模塊方框圖、圖6-1 F2407xAADC模塊方框圖11、采樣和保持獵取時(shí)間窗口有單獨(dú)的預(yù)定標(biāo)掌握。12、內(nèi)置校驗(yàn)?zāi)J健?3、內(nèi)置自測(cè)試模式。自動(dòng)排序器的工作原理ADC的排序器包括兩個(gè)獨(dú)立的最多可選擇8個(gè)模擬轉(zhuǎn)換通道的排序器〔SEQ1和16〔SEQ。6-2ADC模塊工作在最多可選擇16〔SEQ〕模式下6-3ADC模塊工作在兩個(gè)最多可選擇8〔SEQ1SEQ2〕模式下的構(gòu)造框圖。6-2級(jí)聯(lián)工作方式下自動(dòng)排序ADC的構(gòu)造框圖在這兩種工作方式下,ADC模塊都能夠進(jìn)展序列轉(zhuǎn)換并自動(dòng)排序??赏ㄟ^(guò)模擬輸入通道的多路選擇器來(lái)選擇要轉(zhuǎn)換的通道。轉(zhuǎn)換完畢后,轉(zhuǎn)換后的數(shù)值結(jié)果保存在該通道相應(yīng)的結(jié)果存放器〔RESULTn〕0RESULT0中,第1RESULT1A/DA/DSEQ2的操信號(hào)后,A/DSEQ2的操作之后馬上開頭響應(yīng)SEQ1的懇求。8166-1列出了它們之間的比照狀況。圖圖6-3 雙排序工作方式下自動(dòng)排序ADC的構(gòu)造框圖表6-1 雙排序器和單排序器工作比較為了描述便利,以后描述排序器時(shí)作如下規(guī)定:1〔SEQ1〕CONV00~CONV07;2〔SEQ2〕CONV08~CONV15;〔SEQ〕CONV00~CONV15。連續(xù)的自動(dòng)排序模式8個(gè)通道的自動(dòng)轉(zhuǎn)換排序器SEQ1SEQSEQ1/SEQ2在一次排序過(guò)程中,對(duì)多達(dá)8個(gè)的任意通道進(jìn)展排序轉(zhuǎn)換,每次轉(zhuǎn)換結(jié)果被RESULT8~RESULT15。MAXCONVn〔MAXCONV3位段域或4位段域〕掌握,該值在自動(dòng)排序的轉(zhuǎn)換開頭時(shí),被裝載到自動(dòng)排序狀態(tài)存放器〔AUTO_SEQ_S〔SEQCNTR3~0MAXCONVn開頭有挨次地轉(zhuǎn)換時(shí),SEQCNTRn段域的值從裝載值開頭向下計(jì)數(shù)直到SEQCNTRn為0。一次自動(dòng)排序完成的轉(zhuǎn)換數(shù)為MAXCONVn+1。例6-1SEQ1A/D轉(zhuǎn)換?!?、3、2、3、6、712需要排序自動(dòng)轉(zhuǎn)換MAXCONV16CHESELQn6-2所列的值。6-26-1CHESELQn存放器填入值連續(xù)的自動(dòng)排序方式A/D轉(zhuǎn)換流程圖如圖6-4所示。SEQCNTR0CONTRUN1〔即SEQCNTRnMAXCONV1的值,并且SEQ1CONV0ADC模ADC模塊的仲裁規(guī)律保證在發(fā)生這種沖突時(shí)不會(huì)崩潰。6-1CONV06SEQCNTRn0。SEQCNTRn0時(shí),中斷標(biāo)志位都被置為1,所以假設(shè)需要,用戶可ADCTRL2RSTSEQn位將排序器手動(dòng)復(fù)位。復(fù)位CONV00,此特點(diǎn)在啟動(dòng)/停頓操作發(fā)生中格外有用。上述例子也適用于SEQ2和SEQ。排序器的啟動(dòng)/停頓模式除了連續(xù)的自動(dòng)排序模式外,任何一個(gè)排序器〔SEQ1、SEQ2SEQ〕都可工作在啟動(dòng)/6-1一樣,可實(shí)現(xiàn)在時(shí)間上單獨(dú)與多個(gè)啟動(dòng)信號(hào)觸發(fā)源同步即排序器初始指針不需要指到CONV00就可以被重觸發(fā)。因此一個(gè)轉(zhuǎn)換序列之后,排序器指針指到當(dāng)前的通道。在這種方式下,CONTRUN位必需被設(shè)置為0。圖圖6-4 連續(xù)的自動(dòng)排序方式A/D轉(zhuǎn)換流程圖6-2排序器工作在啟動(dòng)/停頓方式。要求:觸發(fā)源1個(gè)自動(dòng)轉(zhuǎn)換〔I1、I2I2〔定時(shí)器周期〕3個(gè)V12在時(shí)間上是分開的,即間隔25us,如圖6-5所示。只有SEQ1被用到。圖6-5 大事治理器A〔EVA圖6-5 大事治理器A〔EVA〕啟動(dòng)排序器EVA,外部引腳或軟件的SOC信號(hào)。例6-2中需要的兩個(gè)觸發(fā)源可以用同一個(gè)觸發(fā)源發(fā)生兩次來(lái)滿足。6-3所列的值。6-36-2ADC模塊的輸入通道選擇排序掌握存放器填入值一旦復(fù)位和初始化之后,SEQ1就開頭等待觸發(fā)源的到來(lái)。第一個(gè)觸發(fā)源來(lái)到之后,CONV00〔I、CONV01〔I〕CONV0〔I〕3個(gè)轉(zhuǎn)換被執(zhí)行。轉(zhuǎn)換完成之后,SEQ1等待另一個(gè)觸發(fā)源的到來(lái)。25us之后另一個(gè)觸發(fā)源來(lái)到,ADC模塊3CONV0〔VCONV0〔V2〕CONV0〔V〕CONV1SEQCNTR1中。假設(shè)其次個(gè)觸發(fā)源要求轉(zhuǎn)換的個(gè)數(shù)與第一個(gè)不一樣,那么用戶必需在其次個(gè)觸發(fā)源來(lái)到之前,MAXCONV1ADC模塊將重使用原來(lái)的MAXCONV1中的值。用戶可以在第一個(gè)觸發(fā)源引起的轉(zhuǎn)換完成之后的中斷效勞程序中轉(zhuǎn)變MAXCONV1的值,為其次個(gè)觸發(fā)源引起的轉(zhuǎn)換個(gè)數(shù)作預(yù)備。在其次個(gè)轉(zhuǎn)換序列完成之后,ADC模塊的結(jié)果存放器中得到如表6-4所列的值。SEQ1CONV00,并重復(fù)同樣的12轉(zhuǎn)換操作。6-46-2ADC模塊的結(jié)果存放器所得值輸入觸發(fā)源6-5。6-5排序器有效輸入觸發(fā)源注:1、排序器處于空閑狀態(tài)是指:在接收到一個(gè)觸發(fā)源之前,排序器指針指到CONV00或者排序器已經(jīng)完成一個(gè)轉(zhuǎn)換序列〔即SEQCNTR0在空閑狀態(tài),一個(gè)啟動(dòng)信號(hào)觸發(fā)就可啟動(dòng)一個(gè)自動(dòng)轉(zhuǎn)換序列。2、假設(shè)一個(gè)的啟動(dòng)觸發(fā)信號(hào)來(lái)到時(shí),當(dāng)前轉(zhuǎn)換序列正在進(jìn)展,則將ADCTRL2存放SOCSEQn〔0SOC1,則該啟動(dòng)觸發(fā)信號(hào)將喪失。停頓信號(hào)再連續(xù)操作,或者對(duì)排序器進(jìn)展復(fù)位。復(fù)位使排序器馬上返回到空閑的起始狀態(tài)〔SEQ1CONV0,SEQ2CONV0。SEQ2SEQ1的觸發(fā)源SEQ1168個(gè)轉(zhuǎn)換通道。在排序轉(zhuǎn)換時(shí)的中斷操作ADCTRL2存放器中的中斷模式掌握位打算。12的用6-6所示。1:第一個(gè)序列和其次個(gè)序列中采樣的個(gè)數(shù)不一樣在這種狀況下使用中斷方式1〔即在每次EOS到來(lái)時(shí),產(chǎn)生中斷懇求。CONVn=1I1I2。在中斷效勞子程序b中完成以下操作:CONVn1I1I2;結(jié)果存放器中讀出;排序器被復(fù)位。重復(fù)第〔2〕步和第〔3〕步。留意:中斷標(biāo)志位在每次SEQCNTR到0時(shí)都被置1,且產(chǎn)生兩次中斷。2:兩個(gè)序列的采樣個(gè)數(shù)相等在這種狀況下使用中斷方式2〔即在每次EOS到來(lái)時(shí),產(chǎn)生中斷懇求。MAXCONVn=2I、I2I〔V、V2V3。bd完成以下操作:ADC結(jié)果存放器中讀出;排序器被復(fù)位。重復(fù)第〔2〕步。留意:SEQCNTR01ADCI1、I2和1V1、V2V3之后才產(chǎn)生中斷。狀況3:兩個(gè)序列的采樣個(gè)數(shù)不相等〔帶虛讀〕MAXCONVn=2I1、I2x。bd完成以下操作:ADC結(jié)果存放器中讀出;排序器被復(fù)位。重復(fù)第〔2〕步。留意:第3個(gè)x采樣為一個(gè)假采樣,并未要求采樣。然而,為了使中斷效勞程序的CPU2的中斷懇求特性。圖圖6-6 在排序轉(zhuǎn)換時(shí)的中斷操作圖ADC時(shí)鐘預(yù)定標(biāo)的采樣/保持模塊,來(lái)適應(yīng)輸入信號(hào)阻抗的變化??蛇x用ACQPS3~ACQPS0CPSA/D轉(zhuǎn)換可被分6-7。01CPS0PS都會(huì)被放大〔即增加采樣/保持窗口的時(shí)間。PS6-8ACQPS3~ACQPS0位段域的描2S/H窗口再加上被預(yù)定標(biāo)器拉長(zhǎng)的倍數(shù)才是最終的PS。圖6-8說(shuō)明白各個(gè)預(yù)定標(biāo)位的作用。留意:在CPS為0時(shí),PS和A 將和CPU時(shí)鐘相等。CLK圖6-7 A/D圖6-7 A/D轉(zhuǎn)換時(shí)間圖6-7 F240xAADC模塊的時(shí)鐘預(yù)定標(biāo)校準(zhǔn)模式BRGENA位〔橋使能〕和HI/LO位VREFHI/VREFLO。這兩換。校準(zhǔn)模式可計(jì)算ADC模塊的零點(diǎn)、中點(diǎn)和最大值時(shí)的偏移誤差。該偏移誤差值的二負(fù)的狀況。在此根底上,ADC硬件自動(dòng)地將偏移誤差量加到轉(zhuǎn)換值上。校準(zhǔn)存放器〔CALIBRATION〕---地址70B8h結(jié)果的輸出。以下舉一個(gè)校準(zhǔn)實(shí)例。取CALIBRATION存放器的值,以推斷該值對(duì)抱負(fù)值的偏移量有多大,然后在離開這種CALIBRATION存放器中。在后來(lái)的轉(zhuǎn)換值被送到結(jié)果存放器之前,此值將被加到轉(zhuǎn)換值上(不是在校服模式)。應(yīng)當(dāng)馬上啟動(dòng)其次個(gè)校準(zhǔn)操作〔這將掩蓋第一次枝準(zhǔn)操作的結(jié)果。3FFhCALIBRATION存放器讀出的校淮轉(zhuǎn)換結(jié)果為3PDh,那么用戶應(yīng)當(dāng)在離開校準(zhǔn)模式之前,將值0002h寫CALIBRATION2個(gè)數(shù)的調(diào)整。2VREFLO0000h0003h0003h寫到CALIBRATION3個(gè)數(shù)的調(diào)整。量結(jié)果進(jìn)展平均,而另一些用戶則只關(guān)心某一點(diǎn),如中點(diǎn)。這依據(jù)用戶需要而定。自測(cè)試模式ADC引腳的短路/開路。在這種狀況下,采樣周期為正常模式的兩倍。在采樣周期的前半局部,除了用戶供給的模擬輸入信號(hào)外,VREFHI或者VRKFLOADC轉(zhuǎn)換器的輸入;在采樣周期的后半局部,只有用戶供給的信號(hào)被ADC轉(zhuǎn)換器的輸入。假設(shè)使用VREFHI作自測(cè)試,且ADC引腳為開路,則結(jié)果存放VREFHI的數(shù)字值。和自測(cè)試模式不能同時(shí)使用。ADC模塊的存放器ADC6-6所示。70ABh70AChRESULT3RESULT4370ABh70AChRESULT3RESULT43470B8hCALIBRATION正轉(zhuǎn)換結(jié)果地址存放器名稱地址存放器名稱70A0hADCTRL1ADC170ADhRESULT5570A1hADCTRL2ADC270AEhRESULT6670A2hMAXCONV最大轉(zhuǎn)換通道存放器70AFhRESULT7770A3hCHSELSEQ1通道選擇排序掌握存放器170B0hRESULT8870A4hCHSELSEQ2通道選擇排序掌握存放器270B1hRESULT9970A5hCHSELSEQ3通道選擇排序掌握存放器370B2hRESULT101070A6hCHSELSEQ4通道選擇排序掌握存放器470B3hRESULT111170A7hAUTO_SEQ_SR自動(dòng)排序狀態(tài)存放器70B4hRESULT121270A8hRESULT0070B5hRESULT131370A9hRESULT1170B6hRESULT141470AAhRESULT2270B7hRESULT15151〔ADCTRL1〕--70A0h15:保存位。14:復(fù)位位。ADCADC模塊的主動(dòng)復(fù)位。狀態(tài)。0 無(wú)影響; 1 復(fù)位整個(gè)ADC模塊。1來(lái)實(shí)現(xiàn),在任何ADCTRL1存放器中寫入相應(yīng)的值。SPLK #01xxxxxxxxxxxxxxb,ADCTRL1;復(fù)位整個(gè)ADC模塊〔RESET=1〕NOP 的延時(shí)SPLK #00xxxxxxxxxxxxxxb,ADCTRL1;去除ADC的復(fù)位位〔RESET=0〕在缺省設(shè)置足夠時(shí),復(fù)位ADC模塊之后,也可不向ADCTRL1中寫數(shù)。13~12:SOFTFREE位。這兩位打算仿真懸掛時(shí),ADC模塊的工作狀況。在自可馬上停頓或者完成當(dāng)前操作之后停頓。SOFT0FREE0仿真懸掛時(shí),ADC模塊馬上停頓;10仿真懸掛時(shí),ADC模塊完成當(dāng)前轉(zhuǎn)換后停頓;x1自由運(yùn)行,連續(xù)運(yùn)行而不管仿真懸掛。11~8ACQPS3~ACQPS0ADC時(shí)鐘的預(yù)定標(biāo)系數(shù),6-7。7:CPS位。轉(zhuǎn)換時(shí)鐘預(yù)定標(biāo)位。該位打算了ADC轉(zhuǎn)換規(guī)律時(shí)鐘的預(yù)定標(biāo)。FCLK=CLK/1;FCLK=CLK/2。 其中CLK為CPU時(shí)鐘頻率。6CONTRUN。該位打算排序器工作在連續(xù)轉(zhuǎn)換模式或者啟動(dòng)/停頓模式。用戶可在當(dāng)前轉(zhuǎn)換序列正被執(zhí)行時(shí)向該位寫數(shù),但是只有在當(dāng)前轉(zhuǎn)換序列完成之后才生/CONV00。啟動(dòng)/停頓模式;連續(xù)轉(zhuǎn)換模式。5:ADCINTPRI位。高優(yōu)先級(jí);低優(yōu)先級(jí)。4SEQCASC。8個(gè)轉(zhuǎn)換通道的排序器;SEQ。表6-7 A/D模塊的預(yù)定標(biāo)系數(shù)3CALENA。制止校準(zhǔn)模式;使能校準(zhǔn)模式。2BRGENA6-8。ADC輸入;參考的中點(diǎn)電壓被接到ADC輸入。VREFLOHI/LO6-8。VREFLOADC輸入的值;0STESTENA。制止自測(cè)試模式;使能自測(cè)試模式。表6-8 參考電壓位選擇定義2〔ADCTRL2〕--70A1h15:EVBSOCSEQ位。EVBSOC信號(hào)使能級(jí)聯(lián)排序器位。不起作用;允許級(jí)聯(lián)的排序器SEQ被大事治理器B的信號(hào)啟動(dòng)。14:RSTSEQ1/STRTCAL1/啟動(dòng)校準(zhǔn)轉(zhuǎn)換方式位。在校準(zhǔn)轉(zhuǎn)換方式制止的狀況下:不起作用;。在校準(zhǔn)轉(zhuǎn)換方式使能的狀況下:不起作用;啟動(dòng)校準(zhǔn)轉(zhuǎn)換方式。位13:SOCSEQ1位。啟動(dòng)SERQ1轉(zhuǎn)換位。以下觸發(fā)源可引起此位置1:S/W 軟件向該位寫1;EVA A;EVB 大事治理器〔僅在級(jí)聯(lián)模式下EXT 外部引腳〔即ADCSOC引腳。當(dāng)一個(gè)觸發(fā)源到來(lái)時(shí),有3種狀況可能發(fā)生:10,允許后來(lái)的觸發(fā)源被懸掛。01以表示一個(gè)觸發(fā)源懇求正被懸掛;SEQ10?!颯EQ1SOC1時(shí),此時(shí)來(lái)到的觸發(fā)源被無(wú)視。去除一個(gè)懸掛的SOC懇求;SEQ1。注:當(dāng)RSTSEQ1位和SOCSEQ1位在同一個(gè)指令中被設(shè)置時(shí),將復(fù)位排序器而不正確的操作挨次應(yīng)當(dāng)是先設(shè)置RSTSEQ1SOCSEQ1RSTSEQ2位和SOCSEQ2位的操作也是如此。12:SEQ1BSY位。SEQ1忙狀態(tài)位。SEQ1處于空閑狀態(tài);SEQ1處于忙狀態(tài),一個(gè)轉(zhuǎn)換序列正在進(jìn)展。。表6-9 位11~10中斷方式9:INTFLAGSEQ1位。ADCSEQ1的中斷標(biāo)志位。無(wú)中斷大事發(fā)生;有中斷大事發(fā)生。8:EVASOCSEQ1ASEQ1SOC信號(hào)的屏蔽位。SEQ1EVA的觸發(fā)源啟動(dòng);SEQ1/SEQEVA的觸發(fā)源啟動(dòng)。7:EXTSOCSEQ1SEQ1的啟動(dòng)轉(zhuǎn)換位。不起作用;ADC自動(dòng)轉(zhuǎn)換序列。6:RSTSEQ22。不起作用;CONV00。5:SOCSEQ2位。啟動(dòng)SEQ2轉(zhuǎn)換位〔僅適用于雙排序器模式。1:S/W 1;EVB B。當(dāng)一個(gè)觸發(fā)源到來(lái)時(shí),有3種狀況可能發(fā)生:10,允許后來(lái)的觸發(fā)源被懸掛。01以表示一個(gè)觸發(fā)源懇求正被懸掛;SEQ20?!颯EQ2SOC1時(shí),此時(shí)來(lái)到的觸發(fā)源被無(wú)視。去除一個(gè)懸掛的SOC懇求;SEQ2。4:SEQ2BSY位。SEQ2忙狀態(tài)位。SEQ2處于空閑狀態(tài);SEQ2處于忙狀態(tài),一個(gè)轉(zhuǎn)換序列正在進(jìn)展。3~2:SEQ26-10。表6-10 位3~2中斷方式1:INTFLAGSEQ2位。ADCSEQ2的中斷標(biāo)志位。無(wú)中斷大事發(fā)生;有中斷大事發(fā)生。SEQ2EVB的觸發(fā)源啟動(dòng);SEQ2EVB的觸發(fā)源啟動(dòng)?!睲AXCONV〕--70A2h15~7:保存位。6~0:MAXCONVn位域。該位域打算了一次自動(dòng)轉(zhuǎn)換最多轉(zhuǎn)換的通道個(gè)數(shù)。該位域及其操作隨著排序器工作模式的變化模式的變化而變化。10-2MAXCONV存放器位的編程。6-115個(gè)轉(zhuǎn)4SEQ1SEQ時(shí),排序器指針依次從CONV00CONV04,并且這5個(gè)轉(zhuǎn)換結(jié)果依次被存放在轉(zhuǎn)換結(jié)果存放器00~04中。在雙排序器模式下使用SEQ2時(shí),排序器指針依次從CONV08指508~12中。當(dāng)SEQ1MAXCONV17SEQCNTRn6-11。6-11MAXCONV1的位定義和轉(zhuǎn)換個(gè)數(shù)之間的關(guān)系MAXCONV1_3~0?!睞UTO_SEQ_SR〕--70A7h15~12:保存位。11~8:SEQCNTR3~SEQCNTR06-12。7:保存位。位6~4:SEQ2-State2~SEQ2-State0。這幾位反映了SEQ2排序器指針的狀態(tài)。假設(shè)需要,那么用戶可以依據(jù)這幾位的值,在完畢轉(zhuǎn)換〔EOS〕信號(hào)來(lái)到之前,讀取中間結(jié)果。位3~0:SEQ1-State3~SEQ1-State0。這幾位反映了SEQ1排序器指針的狀態(tài)。假設(shè)需要,那么用戶可以依據(jù)這幾位的值,在完畢轉(zhuǎn)換〔EOS〕信號(hào)來(lái)到之前,讀取中間結(jié)果。每一個(gè)4位域都可為自動(dòng)轉(zhuǎn)換選擇16個(gè)模擬輸入通道中的任意一個(gè),見表6-13。表6-12 SEQCNTRn位定義表6-13 ADC輸入通道選擇定義〔CHSELSEQn〕--70A3h~70A6hADC轉(zhuǎn)換時(shí)鐘周期5個(gè)階段,見表6-14?!睸OS同步SOS同步只在一個(gè)轉(zhuǎn)換序列的第一個(gè)通道轉(zhuǎn)換時(shí)需要;·采樣時(shí)間(ACQ);·轉(zhuǎn)換時(shí)間(CONV);·完畢轉(zhuǎn)換時(shí)間(EOC),ACQ、CONVEOC在每個(gè)轉(zhuǎn)換中都需要;EOS,該時(shí)間僅在—個(gè)序列的最終一個(gè)轉(zhuǎn)換時(shí)需要。表6-14 ADC轉(zhuǎn)換各個(gè)階段需要的CLKOUT時(shí)鐘周期表6-15 ACQPS=1,2,3時(shí)ACQ的值圖圖6-8 ADC模塊的內(nèi)部時(shí)序圖ADC轉(zhuǎn)換應(yīng)用舉例這里介紹一個(gè)A/DB的定時(shí)器4定時(shí)時(shí)間到來(lái)觸160~15。A/DA/D采樣。1、匯編源程序st0_temp.usect“.b20“,1;60st1_temp.usect“.b20“,1;61context.usect“.b20“,7;62-68STACK .usect “.stack“,40ADCOUNT .usect “.data0“,1 ADRESULT.usect “.data0“,1 ;289.include “F2407REGS.H“ ;引用頭部文件.def _c_int0;#################################################;(1)建立中斷向量表.sect “.vectors“ ;定義主向量段RSVECT B _c_int0 ;PM0 ResetVector1INT1 B GISR1 ;PM2 Intlevel1 INT2 B PHANTOM ;PM4 Intlevel2 5INT3 B PHANTOM ;PM6 Intlevel3 6INT4 B PHANTOM ;PM8 Intlevel4 7INT5 B PHANTOM ;PMA Intlevel5 8INT6 B PHANTOM ;PMC Intlevel6 9RESERVED B PHANTOM ;PME (AnalysisInt) 10SW_INT8 B PHANTOM ;PM10 UserS/Wint-SW_INT31 B PHANTOM ;PM3E UserS/Wint-;pvecs.sect “.pvecs“ ;定義子向量段PVECTORSBPHANTOM;Reservedpvectoraddroffset-00HBPHANTOM;Reservedpvectoraddroffset-01HBPHANTOM;Reservedpvectoraddroffset-02HBPHANTOM;Reservedpvectoraddroffset-03HB ADCINT_ISR ;Reservedpvectoraddroffset-04H ADC中斷B PHANTOM ;Reservedpvectoraddroffset-05HB PHANTOM ;Reservedpvectoraddroffset-41H〔2〕主程序:.text_c_int0SETCINTMCLRCSXMCLRCOVMCLRCCNFLDP#0E0HSPLK#81FEH,SCSR1;CLKIN=6M,CLKOUT=24MSPLK#0E8h,WDCR;關(guān)看門狗LDP#0SPLK#0001h,IMR;INT1中斷SPLK#0FFFFh,IFR;清全部中斷標(biāo)志CALLADINIT;ADC程序CLRCINTM;開總中斷CALLAD;啟動(dòng)模數(shù)轉(zhuǎn)換程序WAIT:NOPB WAIT〔3ADC初始化程序ADINIT:LDP #225 SPLK #0000H,T4CNT ;T4計(jì)數(shù)器清零SPLK#170CH,T4CON;T4為連續(xù)增計(jì)數(shù)模式,128分頻,且選用內(nèi)部時(shí)鐘源SPLK#075H,T4PR ;設(shè)置T4的周期存放器SPLK#0400H,GPTCONB;T4AD轉(zhuǎn)換;EVB中斷標(biāo)志,寫“1“0SPLK#0000H,EVBIMRB;LDP#DP_PF2;設(shè)置ADC掌握存放器SPLK #0010H,ADCCTRL1;ACQPS3-ACQPS00,;CPS0,AD為啟動(dòng)/停頓模式,SPLK#8404H,ADCCTRL2;排序器為級(jí)連工作方式,;且制止特別的兩種工作模式SPLK#000FH,MAXCONV;16通道SPLK#3210H,CHSELSEQ1;SPLK#7654H,CHSELSEQ2SPLK#0BA98H,CHSELSEQ3SPLK#0FEDCH,CHSELSEQ4LDP#DP_SARAM2 SPLK #ADRESULT,ADCOUNTRET〔4〕啟動(dòng)模數(shù)轉(zhuǎn)換程序AD:LDP #225LACL T4CONOR #40H ;4SACL RET〔5〕中斷程序GISR1: INT1中斷子程序入口;保護(hù)現(xiàn)場(chǎng)LDP#0;保存機(jī)器上下文SST#0,st0_temp;使用自動(dòng)尋址,DP-0SST#1,st1_temp;保存狀態(tài)存放器到B2DARAM.LDP#0SACLcontextACC16位SACHcontext+1ACC16位SAR AR1,context+2SAR AR2,context+3SAR AR3,context+4SAR AR4,context+5SAR AR5,context+6LDP #0E0HLACC PIVR,1 ;讀取外設(shè)中斷向量存放〔PIV并左移一ADD #PVECTORS ;加上外設(shè)中斷人口地址BACC ;跳到相應(yīng)的中斷效勞子程序ACC(15:0) ADCINT_ISR:CLRC SXMLDP #DP_SARAM2LAR AR1,ADCOUNTLAR AR0,#15LAR AR2,#RESULT0MAR *,AR2ADC1:LACC SACH *ADRK #32 MAR *,AR0BANZ ADC1,*-,AR2 移LDP #DP_PF2LACL ADCCTRL2OR #4000H ;復(fù)位SEQ1AND #0FFDFH SACL ADCCTRL2LDP #DP_SARAM2LACL ADCOUNTSUB #ADRESULT+31BCND ADC2,GEQADD #ADRESULT+32 SACL ADCOUNTB GISR1_RETADC2:

SPLK #ADRESULT,ADCOUNT LACL T4CONAND #0FFBFH ;4AD轉(zhuǎn)換SACL T4CONB GISR1_RETGISR1_RET:;中斷返回出口;恢復(fù)現(xiàn)場(chǎng)LDP#DP_EVASPLK#0FFFFH,EVAIFRALDP#0LARAR5,context+6LARAR4,context+5LARAR3,context+4LARAR2,context+3LARAR1,context+2LACCcontext+1,16ADDScontextLST#1,st1_tempLST #0,st0_tempCLRC INTM RET〔6〕假中斷程序PHANTOMKICK_DOG RETEND2、C語(yǔ)言源程序中,A/D轉(zhuǎn)換的結(jié)果#include “register.h“int ADRESULT[16]; 的結(jié)果volatile unsigned int j; //定義一個(gè)指針變量jint i=0x00,cesi;// 屏蔽中斷子程序voidinlinedisable{asm(“setcINTM“);}//開總中斷子程序voidinlineenable{asm(“clrcINTM“);}//系統(tǒng)初始化子程序void initial{asm(“setcSXM“);//符號(hào)位擴(kuò)展有效asm(“clrcOVM“);//累加器

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論