版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 7251.3-2026低压成套开关设备和控制设备第3部分:由一般人员操作的配电板(DBO)
- T/ZJJGJ 002-2024紧固件制造企业生态环境保护基本规范
- T/ICMTIA PC008-2021集成电路用硝酸
- T/CMEAS 052-2025企业职工健康管理评价指南
- T/CAS 1199-2026医疗型体重管理机构服务规范
- T/CSES 164-2024企业环境、社会、治理(ESG)信息披露指标体系
- GB/T 48218-2026工业互联网平台工业机理模型评价方法
- AI在汉语言文学中的应用
- PHP基础测试题(含详细答案)
- 幼儿园食品安全方案
- 2025年广东深圳中考英语六选五集训含答案
- 高位货架库房管理制度
- 地下水资源评价与管理-全面剖析
- ω3鱼油中长链脂肪乳注射液-药品临床应用解读
- 青联委员的申请书
- 教学课件-大气污染治理技术教材配套(张小广)
- 经典pia戏古风剧本
- 数学六年级上册《工程问题》练习题(含答案)
- 人教版选修二 第一节楞次定律
- TY/T 1002.1-2005体育照明使用要求及检验方法 第1部分:室外足球场和综合体育场
- GB/T 27740-2011流延聚丙烯(CPP)薄膜
评论
0/150
提交评论