已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/ TMDX ALPHA RELEASE/ Intended for product evaluation purposes/#/ FILE:DSP28_Example.c/ TITLE:DSP28 CPU_Timer example program./#/ Ver | dd mmm yyyy | Who | Description of changes/ =|=|=|=/ 0.55| 06 May 2002 | S.S. | EzDSP Alpha Release/ 0.57| 27 May 2002 | L.H. | No change/#/ Step 0. Include required header files / DSP28_Device.h: device specific definitions #include statements for / all of the peripheral .h definition files. / DSP28_Example.h is specific for the given example. #include DSP28_Device.h#include IQmathLib.h#pragma DATA_SECTION(sine_table,IQmathTables);_iq30 sine_table512;#define PI 3.14interrupt void eva_T1UFINT_ISR(void);interrupt void CAP_INT3_ISR(void);interrupt void ADC_FIR_INT_ISR(void);/ ADC 服务中断Uint16 ConversionCount = 0;Uint16 SS = 0;Uint16 n = 0;Uint16 SIN = 0;Uint16 SIN1 = 0;Uint16 SIN2 = 0;_iq30 sine_table512; /jiayujintshort int AData512=0;short int AData1512=0;extern _iq IQssfir(_iq*, _iq*, Uint16); #define N5/ 滤波器长度_iq xDelayN = 0, 0, 0, 0, 0;_iq xDelay1N = 0, 0, 0, 0, 0;/ filter coefficients_iq coeffsN = 100*_IQ(0.0625),100* _IQ(0.25), 100*_IQ(0.375), 100*_IQ(0.25), _IQ(0.0625);#define AdcFsVoltage_IQ(3.0)/ ADC 满量程电压#define AdcBufLen512/ ADC 结果缓冲长度_iq AdcBufAdcBufLen; / ADC 结果缓冲_iq AdcBuf1AdcBufLen;_iq AdcBufFilteredAdcBufLen; / 滤波后电流的ADC结果缓冲_iq AdcBufFiltered1AdcBufLen; / 滤波后电压的ADC结果缓冲_iq vfAdcBufLen; / 滤波后电流的ADC结果缓冲_iq IfAdcBufLen; / 滤波后电压的ADC结果缓冲_iq IgAdcBufLen; _iq vrefAdcBufLen; /需要转换iq格式 已经转化到调整环内的IQ格式_iq evAdcBufLen;_iq eiAdcBufLen;_iq VsAdcBufLen;float M;float Imax=_IQ(4100); float Vmax=_IQ(4090); /对程序中用到的常数值进行宏定义赋值 /pi参数 iq格式float kp=_IQ(1);float ki=_IQ(0.2);float kip=_IQ(10);void main(void)/*初始化系统*/InitSysCtrl();/*关中断*/DINT;IER = 0x0000;IFR = 0x0000;/*初始化PIE控制寄存器*/InitPieCtrl();/*初始化PIE矢量表*/InitPieVectTable();/*初始GPIO*/InitGpio(); InitAdc(); / 初始化ADCEALLOW; PieVectTable.CAPINT3 = &CAP_INT3_ISR; PieVectTable.ADCINT = &ADC_FIR_INT_ISR;PieVectTable.T1UFINT=&eva_T1UFINT_ISR;EDIS;PieCtrl.PIEIER1.bit.INTx6 = 1; /开AD中断PieCtrl.PIEIER2.bit.INTx6 = 1; /开下益中断 PieCtrl.PIEIER3.bit.INTx7 = 1; /开CAP中断IER |= 0x0007 ;EINT; /使能全局中断INTMERTM; /使能全局实时中断DBGM/*初始化EV*/InitEv();while(AdcRegs.ADC_ST_FLAG.bit.SEQ1_BSY=0)AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;for(;)KickDog(); interrupt void eva_T1UFINT_ISR(void) /查表方式(固化正弦表)/EvaRegs.CMPR1 = EvaRegs.T1PR-_IQsat(_IQ30mpy(sine_tableindex+_IQ30(0.9999),EvaRegs.T1PR/2),EvaRegs.T1PR,0);/计算得出新的正弦表SIN = _IQsat(_IQ30mpy(sine_tableSS+_IQ30(0.9999),EvaRegs.T1PR/2),EvaRegs.T1PR,0);SIN2 = _IQsat(_IQ30mpy(-sine_tableSS+_IQ30(0.9999),EvaRegs.T1PR/2),EvaRegs.T1PR,0);SS+;if(SS = 512)SS = 0;/EvaRegs.CMPR1 = INPUTSS ;EvaRegs.CMPR1 = SIN ;EvaRegs.CMPR2 = SIN2;EvaRegs.EVAIFRA.bit.T1UFINT = 1; /复位定时器1下溢中断标志PieCtrl.PIEACK.all = PIEACK_GROUP2;/响应该中断并允许从组2中接受更多的中断 interrupt void CAP_INT3_ISR(void) /定义cap中断 SS=0; /指针复位 EvaRegs.EVAIFRC.bit.CAP3INT=1; PieCtrl.PIEACK.all = PIEACK_GROUP3;interrupt void ADC_FIR_INT_ISR(void) / ADC static Uint16 ibuf=0; PieCtrl.PIEACK.all = PIEACK_GROUP1;/* Manage the ADC registers */AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;/ 复位SEQ1到CONV00状态AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;/ 清楚ADC SEQ1中断标志/*读取ADC结果:1) 将无符号16-bit结果转换成32-bit IQ16格式2) 将IQ16格式转换为IQ格式3) 根据ADC满量程定标*/ ADataibuf=AdcRegs.RESULT04; /采样电压值 AData1ibuf=AdcRegs.RESULT14; /采样电流值 AdcBufibuf = _IQmpy(AdcFsVoltage, _IQ16toIQ( (_iq)AdcRegs.RESULT0); AdcBuf1ibuf = _IQmpy(AdcFsVoltage, _IQ16toIQ( (_iq)AdcRegs.RESULT1);xDelay0 = AdcBufibuf;AdcBufFilteredibuf = IQssfir(xDelay, coeffs, N);xDelay10 = AdcBuf1ibuf;AdcBufFiltered1ibuf = IQssfir(xDelay1, coeffs, N);vfibuf =AdcBufFilteredibuf; /采样电压值 Igibuf =AdcBufFiltered1ibuf; /采样电流值 / 电 压 电 流 双 闭 环 函 数SIN1 = _IQsat(_IQ30mpy(sine_tableibuf+_IQ30(0.9999),2047),4095,0);vrefibuf=SIN1;evibuf = vrefibuf- vfibuf ;if (ibuf=0)Igibuf=kp*evibuf+ki*evibuf ; if (Igibuf=Imax) /电压环限幅 考虑输出Ig正负Igibuf=Imax;else if (Igibuf=Vmax) /电流环限幅Vsibuf=Vmax;else if (Vsibuf=Imax) /电压环限幅 考虑输出Ig正负Igibuf=Imax;else if (Igibuf=Vmax)Vsibuf=Vmax;else if (Vsibuf=0)M=Vsibuf/4096; elseM=-Vsibuf/4096; /考虑一下Vsk的正负值 确保M是0-1的值 ibuf +=4;if(ibuf = AdcBufLen) ibuf = 0; /函数结束 返回调制度M_iq IQssfir(_iq *x, _iq *a, Uint16 n) Uint16 i; / general purpose _iq y; / result _iq *xold; / delay line pointer /* Setup the pointers */ a = a + (n-1); / a points to last coefficient x = x + (n-1); / x points to last buffer element xold = x; / xold points to last buffer element /* Last tap has no delay line update */ y = _IQmpy(*a-, *x-); /* Do the other taps from end to beginning */ for(i=0; i n-1; i+) y = y + _IQmpy(*a-, *x);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF 2460-2026近距离治疗用井型电离室剂量仪校准规范
- GB/T 48160-2026航空航天流体系统用螺纹和密封联轴器
- GB/T 22185-2026体育场馆公共安全通用要求
- 模型制作工诚信测试考核试卷含答案
- 合成碳膜电位器制造工岗前实操知识水平考核试卷含答案
- 磁头制造工岗前生产安全考核试卷含答案
- 蚕饲养员变更管理评优考核试卷含答案
- 墨水墨汁制造工安全演练强化考核试卷含答案
- 稀土化工操作工操作技能模拟考核试卷含答案
- 液体洗涤剂制造工岗位工作规范考核试卷含答案
- 住宅项目装饰装修专项施工方案
- 部编版道法新教材四年级年级上册第一课第二课时《与班集体共成长、维护我们的班集体》教案
- 2026交投集团所属辽宁省高速公路运营管理有限责任公司操作岗招聘30人考试备考试题及答案详解
- 星闪赋能音频产业发展白皮书
- DB11-T 1774-2026建筑新能源应用设计规范
- 2026年民航飞行员招飞心理招录测试题含答案
- 初中语文新部编版九年级上册第二单元教案(2026秋详细版)
- 2026年浙江省中考数学试卷(含答案及解析)
- 2026人教版五年级数学上册第七单元第1课《事件发生的可能性》课件
- 2026年普通高等学校招生全国统一考试语文(全国卷三)(含答案及解析)
- 第19课《想和做》课件 2026-2027学年统编版语文九年级上册
评论
0/150
提交评论