數(shù)字信號處理技術(shù)_05電壓信號的采集(交流電機(jī)的模擬參數(shù)輸入)_第1頁
數(shù)字信號處理技術(shù)_05電壓信號的采集(交流電機(jī)的模擬參數(shù)輸入)_第2頁
數(shù)字信號處理技術(shù)_05電壓信號的采集(交流電機(jī)的模擬參數(shù)輸入)_第3頁
數(shù)字信號處理技術(shù)_05電壓信號的采集(交流電機(jī)的模擬參數(shù)輸入)_第4頁
數(shù)字信號處理技術(shù)_05電壓信號的采集(交流電機(jī)的模擬參數(shù)輸入)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第3章 交流電機(jī)的模擬參數(shù)輸入3.1交流電機(jī)的模擬參數(shù)輸入3.1.1交流電機(jī)的模擬參數(shù)輸入硬件電路的組成3.1 交流電機(jī)的模擬參數(shù)輸入硬件電路3.1.2交流電機(jī)的模擬參數(shù)輸入過程3.2 MCP6043.2.1 MCP604簡介3.2.2 MCP604的引腳與引腳功能3.3 TMS320LF2407 A/D轉(zhuǎn)換模塊3.3.1 模數(shù)轉(zhuǎn)換模塊(ADC)工作原理3.3.2 模數(shù)轉(zhuǎn)換模塊(ADC)工作方式模數(shù)轉(zhuǎn)換模塊(ADC)有兩種不同的工作方式:連續(xù)自動排序模式、啟動/停止模式。3.3.3 ADC模塊的寄存器1. ADC控制寄存器1(ADCTRL1)2. ADC控制寄存器2(ADCTRL2)3. 最大

2、轉(zhuǎn)換通道寄存器(MAXCONV)4. 自動排序狀態(tài)寄存器(AUTO_SEQ_SR)5. ADC輸入通道選擇排序控制寄存器(CHSEL SEQn)6. ADC轉(zhuǎn)換結(jié)果緩沖寄存器(RESULTn)3.3.4 ADC轉(zhuǎn)換舉例此例中用事件管理器A的定時器2定時時間到來觸發(fā)A/D采樣的啟動。采樣時采用級連模式,一次做16個轉(zhuǎn)換,轉(zhuǎn)換通道分別是015。轉(zhuǎn)換完成后,在A/D中斷服務(wù)子程序中將轉(zhuǎn)換結(jié)果讀出。該程序只作一次A/D采樣。1. 所需的復(fù)位和中斷向量定義文件“vectors.asm”/ 該文件利用匯編語言代碼定義了復(fù)位和中斷向量.title“vectors.asm”.ref_c_int0,_nothi

3、ng,_ADINT.sect“.vectors”"reset:b_c_int0/ 復(fù)位向量int1:b_ADINT / A/D中斷向量int2:b_nothingint3:b_nothingint4:b_nothingint5:b_nothingint6:b_nothing2. 主程序Adc.c/ 該程序用于進(jìn)行A/D轉(zhuǎn)換,A/D轉(zhuǎn)換的結(jié)果保存在DRESULT16中,寄/ 存器ceshi用于測試每個A/D轉(zhuǎn)換的結(jié)果 #include "register.h"int ADRESULT16;/ 定義一個數(shù)組用于保存AD轉(zhuǎn)換的結(jié)果volatile unsigned in

4、t *j;/ 定義一個指針變量int i=0x00,ceshi;/ 屏蔽中斷子程序void inline disable() asm(" setc INTM");/ 開總中斷子程序void inline enable()asm(" clrc INTM");/ 系統(tǒng)初始化子程序void initial()asm(" setc SXM");/ 符號位擴(kuò)展有效asm(" clrc OVM"); / 累加器中結(jié)果正常溢出asm(" clrc CNF");/ B0被配置為數(shù)據(jù)存儲空間*SCSR1=0x81

5、FE;/ CLKIN=6M Hz,CLKOUT=4*CLKIN=24M Hz*WDCR=0x0E8; / 不使能看門狗*IMR=0x0001;/ 允許INT1中斷*IFR=0x0FFFF;/ 清除全部中斷標(biāo)志,“寫1清0”"/ AD初始化子程序void adinit ()*T2CNT=0x0000;/ T2計數(shù)器清0*T2CON=0x170C;/T2為連續(xù)增計數(shù)模式,128分頻,選用內(nèi)部時鐘源*T2PER=0x75;/ 設(shè)置T2的周期寄存器*GPTCONA=0x400;/ T2周期中斷標(biāo)志觸發(fā)AD轉(zhuǎn)換*EVAIFRB=0x0FFFF;/ 清除EVA中斷標(biāo)志,“寫1清0”*ADCTRL

6、1=0x10;/ 采樣時間窗口預(yù)定標(biāo)位ACQ PS3-ACQ PS0為0, / 轉(zhuǎn)換時間預(yù)定標(biāo)位CPS為0,AD為啟動/停止模式, / 排序器為級連工作方式*ADCTRL2=0x0504;/ EVA的一個事件信號觸發(fā)AD轉(zhuǎn)換,用中斷模式1*MAXCONV=0x0F;/ 16通道*CHSELSEQ1=0x3210;*CHSELSEQ2=0x7654;*CHSELSEQ3=0x0BA98;*CHSELSEQ4=0x0FEDC;/ 轉(zhuǎn)換通道是015 / 啟動AD轉(zhuǎn)換子程序(通過啟動定時器4的方式間接啟動)void ADSOC()*T2CON=*T2CON|0x40;/ 啟動定時器2/ 若是其它中斷則

7、直接返回子程序void interrupt nothing()return;/ AD中斷服務(wù)子程序void interrupt ADINT()asm(“ clrc SXM”);/ 抑制符號位擴(kuò)展j=RESULT0;/ 取得RESULT0的地址for(i=0;i<=15;i+,j+)ADRESULTi=*j>>6; / 把AD轉(zhuǎn)換的結(jié)果左移6位后存入規(guī)定的數(shù)組ceshi=ADRESULTi;/ 檢驗每個A/D轉(zhuǎn)換的結(jié)果*ADCTRL2=*ADCTRL2|0x4200;/ 復(fù)位SEQ1,且清除INT FLAG SEQ1。enable();/ 開總中斷,因一進(jìn)入中斷總中斷就自動關(guān)閉

8、了main()disable( );/ 禁止總中斷initial( );/ 系統(tǒng)初始化adinit ( );/ AD初始化子程序enable( ); / 開總中斷ADSOC( );/ 啟動AD轉(zhuǎn)換while(1)if(i=0x10) break;/如果已發(fā)生中斷,則停止等待(發(fā)生中斷后,i=0x10)*T2CON=*T2CON&0x0FFBF;/ 停止定時器2,即間接停止A/D轉(zhuǎn)換while(1);/ 死循環(huán),在實(shí)際的工程應(yīng)用中在此可以利用A/D轉(zhuǎn)換的結(jié)果3.4 TMS320LF240x常用匯編指令3.4.1 TMS320LF240x DSP匯編指令的尋址方式1. 立即數(shù)尋址2. 直接

9、尋址3. 間接尋址3.4.2 TMS320LF240x DSP的常用匯編指令 每條指令后的注釋在每一行的開始都應(yīng)以“;”開始,此處為編輯需要,只在每條指令的開始處以“;”開始,省略了后面每行的“;”。1. ABS,累加器取絕對值2. ADD,累加器加3. ADDC,帶進(jìn)位的累加器加4. ADDS,符號擴(kuò)展抑制的累加器加5. ADRK,輔助寄存器加短立即數(shù)6. AND,和累加器進(jìn)行與操作7. B,無條件跳轉(zhuǎn)8. BACC,跳轉(zhuǎn)到累加器指定的地址9. BANZ,輔助寄存器非0跳轉(zhuǎn)10. BCND,條件跳轉(zhuǎn)11. CALA,累加器指定地址的子程序調(diào)用12. CALL,無條件子程序調(diào)用13. CC,條

10、件子程序調(diào)用14. CLRC,控制位清零15. CMPL,累加器邏輯取反16. CMPR,輔助寄存器與AR0比較17. IN,從端口讀入數(shù)據(jù)18. INTR,軟件中斷19. LACC,帶移位的累加器裝載20. LACL,裝載累加器低16位,高16位清021. LAR,輔助寄存器裝載22. LDP,數(shù)據(jù)頁指針裝載23. LT,暫存寄存器裝載24. LST,狀態(tài)寄存器裝載25. LTD,TREG寄存器裝載、累加前一次乘積并數(shù)據(jù)移動26. MAR,修改輔助寄存器27. MPY,乘28. MPYU,乘無符號數(shù)29. NEG30. NMI,非屏蔽中斷31. NOP,空操作32. OR,與累加器進(jìn)行或操作

11、33. OUT,輸出數(shù)據(jù)到端口34. PAC,乘積寄存器內(nèi)容裝載到累加器35. POP,堆棧頂內(nèi)容彈出到累加器低16位36. PUSH,累加器低16位壓入堆棧37. RET,子程序返回38. RPT,重復(fù)執(zhí)行下一條指令39. SACH,存儲累加器移位后的高16位40. SACL,存儲累加器移位后的低16位41. SAR,存儲輔助寄存器42. SBRK,輔助寄存器減去短立即數(shù)43. SETC,控制位置位44. SPAC,累加器減乘積寄存器45. SPH,存儲乘積寄存器的高16位46. SPLK,長立即數(shù)存儲到數(shù)據(jù)存儲單元47. SPM,將立即數(shù)賦給乘積移位模式PM位 48. SST,存儲狀態(tài)寄存

12、器49. SUB,累加器減3.5 交流電機(jī)的模擬參數(shù)輸入程序3.5.1交流電機(jī)的模擬參數(shù)輸入?yún)R編語言主程序1. 所需的復(fù)位和中斷向量定義文件“vectors. asm”/ 該文件利用匯編語言代碼定義了復(fù)位和中斷向量 .title“vectors .asm”;此文件名為vectors .asm.sect“.vectors”;定義主向量段reset:b_c_int0;復(fù)位向量int1:bGISR1;中斷優(yōu)先級1,ADC中斷屬于INT1int2:bPHANTOMint3:bPHANTOMint4:bPHANTOMint5:bPHANTOMint6:bPHANTOMreservedbPHANTOMsw

13、_int8bPHANTOMsw_int31bPHANTOM.sect“.pvecs”;定義子向量段PVECTORSbPHANTOM;保留向量地址偏移量0000HbPHANTOM;保留向量地址偏移量0001HbPHANTOM;保留向量地址偏移量0002HbPHANTOM;保留向量地址偏移量0003HbADCINT_ISR;向量地址偏移量0004H為ADC中斷bPHANTOM;保留向量地址偏移量0005HbPHANTOM;保留向量地址偏移量00041H2. 主程序Dyxhcj.asm;主程序:.include "register.h";引用頭部文件st0_temp.usect“

14、.b20”,1;分配1個字的空間給st0_tempst1_temp.usect“.b20”,1;分配1個字的空間給st1_tempcontext.usect“.b20”,7;分配7個字的空間給contextSTACK.usect“.stack”, 40;分配40個字的空間給STACKADRESULT.usect“.data0”,8 ;分配8個字的空間給ADRESULT .def _c_int0;定義標(biāo)號_c_int0.text;下列指令為可執(zhí)行代碼_c_int0SETCINTMCLRCSXMCLRCOVMCLRCCNFLDP#0E0HSPLK#81FEH,SCSR1;CLKIN=6M Hz,C

15、LKOUT=4*CLKIN=24M HzSPLK#0E8H,WDCR;關(guān)看門狗LDP#0SPLK#0001H,IMR ;允許INT1 中斷SPLK#0FFFFH,IFR ;清除所有中斷標(biāo)志CALLADINIT ;初始化ADC 程序CLRCINTM ;開全局中斷CALLAD ;啟動模數(shù)轉(zhuǎn)換程序WAIT: NOPBWAIT; ADC 初始化程序ADINIT:LDP#232 ;設(shè)置通用定時器2SPLK#0000H,T2CNT;計數(shù)器清0SPLK#170CH,T2CON;連續(xù)增計數(shù)模式,輸入時鐘=CPU時鐘/128SPLK#075H,T2PR;定時器周期中斷時間SPLK #0400H,GPTCONA;

16、由定時器2的周期中斷啟動模數(shù)轉(zhuǎn)換SPLK#0FFFFH,EVAIFRBSPLK#0000H,EVAIMRB;屏蔽定時器2的周期中斷,但不影響;定時器2定時周期到時相應(yīng)的中斷標(biāo);志位置1,從而啟動模數(shù)轉(zhuǎn)換。LDP#DP_PF2;設(shè)置ADC 控制寄存器SPLK #0000H,ADCCTRL1;雙排序器工作模式,啟動/停止模式,CPS=0;ADC中斷請求為高優(yōu)先級SPLK #0400H,ADCCTRL2;SEQ1采用中斷模式1,不使能SEQ2中斷SPLK #0007H,MAXCONV ;8個通道的轉(zhuǎn)換SPLK#0000H,CHSELSEQ1SPLK #0000H,CHSELSEQ2RET;啟動模數(shù)轉(zhuǎn)

17、換程序AD:LDP#DP_PF2LACLADCCTRL2OR #2000H;EVA事件觸發(fā)啟動SEQ1SACLADCCTRL2LDP #232LACL T2CONOR #40H;啟動定時器2SACLT2CONRET;中斷程序GISR1: ;INT1 中斷子程序入口;保護(hù)現(xiàn)場LDP#0 ;保存上下文SST#0, st0_temp ;保存ST0的內(nèi)容到st0_tempSST#1, st1_temp ;保存ST1的內(nèi)容到st1_tempSACLcontext;保存ACC 的低16 位,context=(AL)SACH context+1 ;保存ACC 的高16 位,context+1=(AH)SAR

18、 AR1,context+2;context+2=(AR1)SAR AR2,context+3;context+3=(AR2)SARAR3,context+4;context+4=(AR3)SARAR4,context+5;context+5=(AR4)SARAR5,context+6;context+6=(AR5)LDP #0E0H;DP=E0H,頁首地址為7000H(E0H*80H)LACCPIVR,1 ; PIVR的內(nèi)容左移一位后送入ACCADD #PVECTORS;加上外設(shè)中斷入口地址BACC ;跳到相應(yīng)的中斷服務(wù)子程序ADCINT_ISR:CLRC SXM;抑制符號擴(kuò)展LDP #DP

19、_SARAM2LAR AR0, #8;(AR0) =8LAR AR1, #ADRESULT;(AR1) = ADRESULTLAR AR2, #RESULT0;(AR2)= RESULT0,轉(zhuǎn)換結(jié)果存儲在位15位6 MAR *, AR2ADC1:;得到8個轉(zhuǎn)換結(jié)果,依次存放在地址為(AR1)+2*n的存儲器區(qū)間LACC *+, 10, AR1;(ACC)=(AR2)<<10,(AR2)= (AR2)+1SACH*;(AR1)= (AH)=右對齊的轉(zhuǎn)換結(jié)果ADRK#2;(AR1) = (AR1)+2MAR*, AR0BANZ ADC1,*-, AR2;若(AR0)0,則跳轉(zhuǎn)到ADC1;(AR0) = (AR0)-1LDP#DP_PF2;一次轉(zhuǎn)換結(jié)束,8個通道的轉(zhuǎn)換結(jié)果全部讀出LACL ADCCTRL2;(ACC)= (ADCCTRL2) = (0000 0400H)OR#4000H ;復(fù)位 SEQ1AND#0FFDFH ;清 INT FLAG SEQ1LACLT2CONAND#0FFBFH ;停止定時器2,即停止A/D 轉(zhuǎn)換SACLT2CONGISR1_RET: ;中斷返回出口L

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論