




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、DSP2812 PWM生成+QEP光電編碼器解碼實現2011-04-13 19:54#include "DSP281x_Device.h" / DSP281x Headerfile Include File#include "DSP281x_Examples.h" / DSP281x Examples Include File#define PWM_Divide 1 /#define Fre_1KHz /0x493D/0x927B/ Pr
2、ototype statements for functions found within this file./void init_eva(void);/void init_evb(void);void init_PWM(void);void init_QEP_CAP(void);interrupt void T4PINT00_ISR(void);/ Global counts used in this exampleUint16 TEST;Uint32 T2PINT00_ISR_Count;Uint32 T4PINT00_ISR_Count;Uint32 T1CNT0;Uint32 T1C
3、NT1;Uint32 QEPFlag;Uint16 Fre_1KHz;Uint16 Fre_Flag;Uint32 TimeQEP;void main(void) TEST = 0; TimeQEP = 0; QEPFlag = 0; T2PINT00_ISR_Count = 0; T4PINT00_ISR_Count = 0; T1CNT0 = 0; T1CNT1 = 0; Fre_1KHz = 0x927B;/0x493D; Fre_Flag = Fre_1KHz; / Step 1. In
4、itialize System Control: / PLL, WatchDog, enable Peripheral Clocks / This example function is found in the DSP281x_SysCtrl.c file. InitSysCtrl(); / Step 2. Initalize GPIO: / This example function is found in the DSP281x_Gpio.c file and / illustrates how to set the
5、 GPIO to it's default state. / InitGpio(); / Skipped for this example / Initialize only GPAMUX and GPBMUX for this test EALLOW; / Enable PWM pins GpioMuxRegs.GPAMUX.all = 0x00FF; / EVA PWM 1-6 pins GpioMuxRegs.GPBMUX.all = 0x00FF; / EVB PWM 7-12 pi
6、ns EDIS; / Step 3. Clear all interrupts and initialize PIE vector table: / Disable CPU interrupts DINT; / Initialize PIE control registers to their default state. / The default state is all PIE interrupts disabled and flags / are cleared. / T
7、his function is found in the DSP281x_PieCtrl.c file. InitPieCtrl(); / Disable CPU interrupts and clear all CPU interrupt flags: IER = 0x0000; IFR = 0x0000; / Initialize the PIE vector table with pointers to the shell Interrupt / Service Routines (ISR).
8、 / This will populate the entire table, even if the interrupt / is not used in this example. This is useful for debug purposes. / The shell ISR routines are found in DSP281x_DefaultIsr.c. / This function is found in DSP281x_PieVect.c. InitPieVectTable(); EALLOW;
9、160; / This is needed to write to EALLOW protected registers PieVectTable.T4PINT = &T4PINT00_ISR; EDIS; / This is needed to disable write to EALLOW protected registers / Step 4. Initialize all the Device Peripherals: / This function is found in DSP281x_InitP
10、eripherals.c / InitPeripherals(); / Not required for this example init_PWM(); init_QEP_CAP(); / Step 5. User specific code, enable interrupts: / Enable CPU INT1 which is connected to CPU-Timer 0: IER |= M_INT5; / Enable T2CINT in the PIE: Group 3 interrupt 2 P
11、ieCtrlRegs.PIEIER5.bit.INTx1 = 1; / Enable global Interrupts and higher priority real-time debug events: EINT; / Enable Global interrupt INTM ERTM; / Enable Global realtime interrupt DBGM / Just sit and loop forever: / PWM pins can be observed with a
12、scope. /for(;); while(1) /TEST = EvaRegs.GPTCONA.bit.T2STAT;/方向測試 if(QEPFlag=1) if(T1CNT1>T1CNT0) TimeQEP = (T1CNT1-T1CNT0+65535*T4PINT00_ISR_Count);
13、0;else TimeQEP = (T1CNT1-T1CNT0+65535+65535*T4PINT00_ISR_Count); T1CNT0 = 0; T1CNT1 = 0; QEPFlag = 0; / 對PWM進行實時更改會產生問題,不可以這樣操作 /*if(Fre_Flag != Fre_1KHz)
14、160; EvaRegs.T1CON.bit.TENABLE = 0; EvbRegs.T3CON.bit.TENABLE = 0; Fre_Flag = Fre_1KHz; EvaRegs.T1PR = Fre_Flag; / Timer1 period EvaReg
15、s.T1CMPR = Fre_Flag>>1; / Timer1 compare Fre_Flag = Fre_1KHz; EvbRegs.T3PR = Fre_Flag; / Timer3 period EvbRegs.T3CMPR = Fre_Flag>>1;
16、160;/ Timer3 compare Fre_Flag = Fre_1KHz; EvbRegs.T3CNT = (Fre_Flag*3)>>2; / Timer3 counter EvaRegs.T1CON.bit.TENABLE = 1; EvbRegs.T3CON.bit.TENABLE = 1; */ void init_PWM(void) / Initaliz
17、e EVA Timer1 EvaRegs.T1PR = Fre_Flag; / Timer1 period EvaRegs.T1CMPR = Fre_Flag>>1; / Timer1 compare EvaRegs.T1CNT = 0x0000; &
18、#160; / Timer1 counter / T1CON EvaRegs.T1CON.bit.TMODE = 2; EvaRegs.T1CON.bit.TPS = PWM_Divide; / 75000000/8 EvaRegs.T1CON.bit.TENABLE = 0; EvaRegs.T1CON.bit.TCLKS10 = 0;
19、;EvaRegs.T1CON.bit.TCLD10 = 0; EvaRegs.T1CON.bit.TECMPR = 1; / Drive T1 PWM by compare logic EvaRegs.GPTCONA.bit.TCMPOE = 1; / Polarity of GP Timer 1 Compare = Active low EvaRegs.GPTCONA.bit.T1PIN = 1; Fre_Flag = Fre_1KHz; / Initialize EVB Timer3
20、 EvbRegs.T3PR = Fre_Flag; / Timer3 period EvbRegs.T3CMPR = Fre_Flag>>1; / Timer3 compare Fre_Flag = Fre_1KHz; EvbRegs.T3CNT = (Fre_Flag>>2)*3; / Tim
21、er3 counter / T3CON EvbRegs.T3CON.bit.TMODE = 2; EvbRegs.T3CON.bit.TPS = PWM_Divide; / 75000000/8 EvbRegs.T3CON.bit.TENABLE = 0; EvbRegs.T3CON.bit.TCLKS10 = 0; EvbRegs.T3CON.bit.TCLD10 = 0; EvbRegs.T3CON.bit.TECMPR = 1; / Drive T3 PWM by compare lo
22、gic EvbRegs.GPTCONB.bit.TCMPOE = 1; / Polarity of GP Timer 3 Compare = Active low EvbRegs.GPTCONB.bit.T3PIN = 1; EvaRegs.T1CON.bit.TENABLE = 1; EvbRegs.T3CON.bit.TENABLE = 1;void init_QEP_CAP(void) / Initalize EVA Timer2 EvaRegs.T2PR = 0xFFFF;
23、0; / Timer2 period /EvaRegs.T2CMPR = 0x7000; / Timer2 compare EvaRegs.T2CNT = 0x0000; / Timer2 counter / T2CON EvaRegs.T2CON.bit.FREE = 0; EvaRegs.T2CON.bit.SOFT = 0;&
24、#160;EvaRegs.T2CON.bit.rsvd = 0; EvaRegs.T2CON.bit.TMODE = 3; / 定向增減模式 EvaRegs.T2CON.bit.TPS = 0; EvaRegs.T2CON.bit.T2SWT1 = 0; EvaRegs.T2CON.bit.TENABLE = 1; EvaRegs.T2CON.bit.TCLKS10 = 3; / QEP為時鐘源 EvaRegs.T2CON.bit.TCLD10 = 0; / 禁止比較操
25、作 EvaRegs.T2CON.bit.TECMPR = 0; EvaRegs.T2CON.bit.SET1PR = 0; / CAPCONA EvaRegs.CAPCONA.bit.CAPRES = 0; / EvaRegs.CAPCONA.bit.CAP12EN = 3; / 使能QRP1、2 EvaRegs.CAPCONA.bit.CAP3EN = 0; EvaRegs.CAPCONA.bit.CAP3TSEL = 0; EvaRegs.CAPCONA.bit.CA
26、P12TSEL = 0; / 定時器選T2 EvaRegs.CAPCONA.bit.CAP3TOADC = 0; / 無操作 EvaRegs.CAPCONA.bit.CAP1EDGE = 3; / QEP1兩個邊沿都檢測 EvaRegs.CAPCONA.bit.CAP2EDGE = 3; / QEP2兩個邊沿都檢測 EvaRegs.CAPCONA.bit.CAP3EDGE = 0; / 不檢測 EvaRegs.CAPFIFOA.all = 0; / 清除FIF
27、O EvaRegs.EVAIMRB.bit.T2PINT = 1; / 允許周期中斷 EvaRegs.EVAIFRB.bit.T2PINT = 1; / 復位中斷標志位 / Initialize EVB Timer4 EvbRegs.T4PR = 0xB71B; / Timer4 period EvbRegs.T4CNT = 0x0000;
28、0; / Timer4 counter EvbRegs.T4CON.bit.FREE = 0; EvbRegs.T4CON.bit.SOFT = 0; EvbRegs.T4CON.bit.rsvd = 0; EvbRegs.T4CON.bit.TMODE = 2; / 連增模式 EvbRegs.T4CON.bit.TPS = 3; / 75000000/8 EvbRegs.T4CON.bit.T4SWT3 = 0; EvbRegs.T4CON.bit.TENABLE = 1; EvbRegs.T4CON.bit.TCLKS10 = 0;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年變電站保護測控裝置合作協議書
- 漁業養殖合作與資源恢復協議
- 珠寶品牌加盟合作協議
- 品牌推廣與服務供應協議
- 酒店業智慧酒店服務體系建設與運營方案
- 電子政務系統集成實施合同
- 農村環境改善及資源綜合利用項目協議
- 假期旅游證明IT行業(7篇)
- 人力資源招聘與培訓服務協議規范
- 農村智慧農業技術應用合同書
- 史明清時期社會經濟的發展課件++2024-2025學年統編版七年級歷史下冊
- 中國特色社會主義+綜合練習(三)-2025屆中職高考政治一輪復習高教版(2023版)
- 情境+任務驅動作文(兼審“情境”與“任務”)-2024年中考語文重難點復習專練(江蘇)學生版
- (二模)臨沂市2025年高三高考模擬考試地理試題卷(含答案)
- 2024年新疆巴楚縣事業單位公開招聘村務工作者筆試題帶答案
- 遼寧省名校聯盟2025年高三5月份聯合考試語文及答案
- 2025年廣東省廣州市南沙區中考數學一模試卷
- 小學四年級家長會班主任發言稿模版
- 配電網故障識別技術的研究和應用
- 2025-2030中國聚甲醛(POM)行業市場發展趨勢與前景展望戰略研究報告
- 民營經濟高質量發展評價指標體系構建與區域差異比較研究
評論
0/150
提交評論