采用不对称规则采样法生成三相SPWM波的开环调速中断服务程序.doc_第1页
采用不对称规则采样法生成三相SPWM波的开环调速中断服务程序.doc_第2页
采用不对称规则采样法生成三相SPWM波的开环调速中断服务程序.doc_第3页
采用不对称规则采样法生成三相SPWM波的开环调速中断服务程序.doc_第4页
采用不对称规则采样法生成三相SPWM波的开环调速中断服务程序.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

采用不对称规则采样法生成三相SPWM波的开环调速中断服务程序 ;.equ _30F2010, 1 .include p30f2010.inc .equ Double_PTMR, 1600;*申明全局符号、函数和变量*.global _wreg_init.global _tiaozhidu;.global _SP_init;.global _SPLIM_init;.global _FLAG;*定义复位矢量和中断矢量*;.global _reset.global _PWMInterrupt;.global _DefaultInterrupt;.global _ADCInterrupt;*PWM中断子程序*;以下中断子程序作为一个功能整体使用,功能为计算下一个载波周期时的3个占空比_PWMInterrupt: push.d W0 push.d W2push.d W4push.d W6 wxm:mov _pitc,w4;Pi*t_carry=42166,Q28 mov _k_,w0 ;Q0mul.UU W4,W0,W2 ;乘法,计算k*Pi*t_carrymov w3,_temp1 ;保存乘积的高16位,舍弃低16位,所以为Q12格式 mov w3,w4mov _f_modu,w0 mul.UU W4,W0,W2 ;乘法,计算k*Pi*t_carry*f_modulac w2,A ;装入乘积的低16位,位于累加器的高16位 sftac a,#16;右移16为后,乘积的低6位在累加器的低16位 push ACCAL;暂存乘积的低16位lac w3,A ;装入乘积的高16位,位于累加器的高16位 clr ACCAU ;清除累加器的符号位 pop ACCAL ;取乘积的低16位,此时累加器中为完整的32位乘积 sftac a,#-12 ;左移12位,转换为Q12格式 sac a,w0 mov w0,_temp1 ;保存第1个角度;*产生_temp2,可去* ;*产生_temp3,可去* wxm1:mov #12868,w1;pi,Q12mov _temp1,w0add w0,w1,w2 mov w2,_temp3 ;保存第3个角度 mov #25736,w0sub w2,w0,w6 btsc w6,#15bra wxm2 mov w6,_temp3 ;* wxm2:mov _temp1,w4 ;Q12格式mov _atod ,w0 ;Q4格式 mul.UU W4,W0,W2 mov w3,_temp1 ;看到此处1 mov #tblpage(sin_entry),W0mov W0,TBLPAGmov #tbloffset(sin_entry),W0 ;初始化TBLPAG和指针寄存器mov _temp1,w1sl W1,#1,W1 ;左移一位转换为字节地址偏移量add w0,w1,w2 tblrdl W2,w5 mov w5,_temp1 ;保存 sin(pi*k/N) ,Q14格式有符号数 mov _temp1,w4mov _m_,w5 ;M值,Q9格式 mpy W4*W5, A ;计算乘积,Q23格式sftac a,#-7sac a,w0mov w0,_temp1 ;保存M*sin(pi*k/N)为Q14格式有符号数mov #0x4000,w1 ;1的Q14格式add w0,w1,w2 ;加1,Q14格式 mov w2,_temp1 ;保存 1+M*sin(pi*k/N) ,Q14格式有符号数mov w2,w0 mov _t_qua,w4 mul.UU W4,W0,W2 lac w2,Asftac a,#16push ACCALlac w3,Aclr ACCAUpop ACCAL sac a,#-2,w0 mov w0,_temp1 ;保存ton1A,Q0格式;*产生ton1B,可去*;*;*产生ton1C,可去*mov _temp3,w4 mov _atod,w0 mul.UU W4,W0,W2; mov w3,_temp3 mov #tblpage(sin_entry),W0mov W0,TBLPAGmov #tbloffset(sin_entry),W0; mov _temp3,w1sl W1,#1,W1 add w0,w1,w2 tblrdl W2,w3 mov w3,_temp3 mov w3,w4mov _m_,w5 mpy W4*W5, A sac a,#-7,w0mov w0,_temp3 mov #0x4000,w1add w0,w1,w2 mov w2,_temp3 mov w2,w4mov _t_qua,w0 mul.UU W4,W0,W2 lac w2,Asftac a,#16push ACCALlac w3,Aclr ACCAUpop ACCAL sac a,#-2,w0 mov w0,_temp3;* mov _k_,w1mov #1,w0add w0,w1,w2 mov w2,_k_ mov w2,w4mov _pitc,w0 mul.UU W4,W0,W2 ; mov w3,_temp4 mov w3,w0mov _f_modu,w4 mul.UU W4,W0,W2 lac w2,Asftac a,#16push ACCALlac w3,Aclr ACCAUpop ACCAL sftac a,#-12 sac a,w0mov w0,_temp4 ;*产生_temp5(2),可去* ;*产生_temp6(3),可去*wxm3:mov _temp4,w0mov #12868,w1;pi,Q12add w0,w1,w2 mov w2,_temp6 mov #25736,w0sub w2,w0,w6 btsc w6,#15bra wxm4 mov w6,_temp6 ;* wxm4:mov _temp4,w4 mov _atod,w0 mul.UU W4,W0,W2 mov w3,_temp4 mov #tblpage(sin_entry),W0mov W0,TBLPAGmov #tbloffset(sin_entry),W0 mov _temp4,w1sl W1,#1,W1 add w0,w1,w2 tblrdl W2,w3 mov w3,_temp4 ;保存第4个sin值,Q14格式 mov w3,w4mov _m_,w5 mpy W4*W5, A sac a, #-7,w0mov w0,_temp4 mov #0x4000,w1add w0,w1,w2 mov w2,_temp4 mov _t_qua,w4 mov _temp4,w0mul.UU W4,W0,W2 lac w2,Asftac a,#16push ACCALlac w3,Aclr ACCAUpop ACCAL sac a,#-2,w0 mov w0,_temp4;保存ton2A,Q0格式;*产生ton2B,可去* ;*产生ton2C,可去* mov _temp6,w4 mov _atod,w0 mul.UU W4,W0,W2 mov w3,_temp6 mov #tblpage(sin_entry),W0mov W0,TBLPAGmov #tbloffset(sin_entry),W0 mov _temp6,w1sl W1,#1,W1 add w0,w1,w2 tblrdl W2,w3 mov w3,_temp6 mov w3,w4mov _m_,w5 mpy W4*W5, A sac a ,#-7,w0mov w0,_temp6 mov #0x4000,w1add w0,w1,w2 mov w2,_temp6 mov w2,w4mov _t_qua,w0 mul.UU W4,W0,W2 lac w2,Asftac a,#16push ACCALlac w3,Aclr ACCAUpop ACCAL sac a,#-2,w0mov w0,_temp6 ;* mov _k_,w1;k=k+1,判断k是否小于2Nadd #1,w1 mov w1,_k_mov _kmax,w0 sub w1,w0,w6 btsc w6,#15 bra wxm5 ;是则跳转 mov #0,w0;否则k=0mov w0,_k_ wxm5:;tonA=ton1A+ton2Amov _temp1,w0mov _temp4,w1add w1,w0,w2 mov w2,_temp1 mov _pmin ,w0sub w2,w0,w6 btss w6,#15bra wxm6 mov #0,w2mov w2,_temp1 bra wxm7 wxm6:mov _pmax,w0mov _temp1,w2sub w2,w0,w6 btsc w6,#15bra wxm7 mov #Double_PTMR,w2mov w2,_temp1 wxm7:mov w2,PDC1 ;给占空比1;*给占空比2*可去* ;wxm8: wxm9:mov _temp3,w0mov _temp6,w1add w1,w0,w2 mov w2,_temp3mov _pmin,w0sub w2,w0,w6 btss w6,#15bra wxm10 mov #0,w2mov w2,_temp3 bra wxm11 wxm10:mov _pmax,w0mov _temp3,w2sub w2,w0,w6 btsc w6,#15bra wxm11 mov #Double_PTMR,w2mov w2,_temp1 wxm11:mov w2,PDC3 ;*给占空比3*可去* ;wxm10:;wxm11:;*;mov #200,w2;mov w2,PDC1;mov #300,w2;mov w2,PDC3 pop.d W6 pop.d W4pop.d W2pop.d W0 bclr IFS2,#PWMIF retfie;*调试错误处理中断*_DefaultInterrupt:bclr TRISC,#13 nopnopnop;bclr PORTC,#13 retfie;*w寄存器初始化子程序*_wreg_init:nop clr W0mov W0, W14repeat #12mov W0, +W14clr W14 return;*计算调制度子程序*_tiaozhidu:mov _f_modu,w0 ;取调制波频率 asr w0,#3,w4 ;右移三位 mov w4,_temp ;暂存 mov _f_carr,w2 ;取载波频率 repeat #17;除法指令计算N=f_carr/f_modudiv.U W2,W4 mov w0,_n_;得到N,为Q0格式 sl W0,#1,W0;左移一位,2N mov w0 ,_kmax;保存,Q0格式 mov _f2m,w4 ;调制系数对调制波频率的比例系数,Q21,意味着U/f为恒值mov _f_modu,w0 mul.UU W4,W0,W2;根据给定频率计算调制度M,实际上计算给定电压mov #512,w0cp w3,w0;检测是否小于1,小于1才是正常bra N,NORMALmov #512,w3NORMAL:mov w3,_m_ ;保存为Q9格式 return ;*正弦表格*.section .sin_entry, code.palign 2 sin_entry:.hword 0;0360度,Q14.hword 286,572,857,1143,1428.hword 1713,1997,2280,2563,2845.hword 3126,3406,3686,3964,4240.hword 4516,4790,5063,5334,5604.hword 5872,6138,6402,6664,6924.hword 7182,7438,7692,7943,8192.hword 8438,8682,8932,9162,9397.hword 9630,9860,10087,10311,10531.hword 10749,10963,11174,11381,11585.hword 11786,11982,12176,12365,12551.hword 12733,12911,13085,13255,13421.hword 13583,13741,13894,14044,14189.hword 14330,14466,14598,14726,14849.hword 14968,15082,15191,15296,15396.hword 15491,15582,15668,15749,15826.hword 15897,15964,16026,16083,16135.hword 16182,16225,16262,16294,16322.hword 16344,16362,16374,16382,16384 ;90度.hword 16382,16374,16362,16344,16322.hword 16194,16262,16225,16182,16135.hword 16083,16026,15964,15897,15826.hword 15749,15668,15582,15491,15396.hword 15296,15191,15082,14968,14849.hword 14726,14598,14466,14330,14189.hword 14044,13894,13741,13583,13421.hword 13255,13085,12911,12733,12551.hword 12365,12176,11982,11786,11585.hword 11381,11174,10963,10749,10531.hword 10311,10087,9860,9630,9397.hword 9162,8923,8682,8438,8192.hword 7943,7692,7438,7182,6924.hword 6664,6402,6138,5872,5604.hword 5334,5063,4790,4516,4240.hword 3964,3686,3406,3126,2845.hword 2563,2280,1997,1713,1428.hword 1143,857,572,286,0;180度 .hword 65250,64964,64679,64393,64108.hword 63823,63539,63256,62973,62691.hword 62410,62130,61850,61572,61296.hword 61020,60746,60473,60202,59932.hword 59664,59398,59134,58872,58612.hword 58354,58098,57844,57593,57344.hword 57098,56854,56613,56374,56139.hword 55906,55676,55449,55225,55005.hword 54787,54573,54362,54155,53951.hword 53750,53554,53360,53171,52985.hword 52803,52625,52451,52281,52115.hword 51953,51795,51642,51492,51347.hword 51206,51070,50938,50810,50687.hword 50568,50454,50345,50240,50140.hword 50045,49954,49868,49787,49710.hword 49639,49572,49510,49453,49401.hwor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论