2-3直流电动机单极性可逆双闭环PWM控制程序_第1页
2-3直流电动机单极性可逆双闭环PWM控制程序_第2页
2-3直流电动机单极性可逆双闭环PWM控制程序_第3页
2-3直流电动机单极性可逆双闭环PWM控制程序_第4页
2-3直流电动机单极性可逆双闭环PWM控制程序_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、直流电动机单极性可逆双闭环 PWM控制程序 .equ _30F6010A, 1.include p30f6010A.inc.equ SPEED_SET, 750.equ _Tpwm, 1476.equ _Deadtime, 59.equ _timerate, 8.equ _volrate, 4.equ CURR_B0, 32.equ CURR_B1 , 1.equ SPEED_B0, 20.equ SPEED_B1, 1.equ CURR_RATE, 0x0014.equ SPEED_RATE, 0x04E8.equ CURR_MAX, 0x10B0.equ CURR_MIN, 0x0.equ

2、 VOLT_MAX, 0x1800.equ VOLT_MIN, 0x01FF.equ SPEED_TRANS, 0x01AD.equ SPEED_SAMPLE_OFFSET, 0x01FF.global _reset.global _PWMInterrupt.global _ADCInterrupt.global _FLTAInterrupt.global _DefaultInterrupt.section .nbss, bss, near_curr : .space 6_speed:.space 6_volt:.space 2_sign:.space 2_sysTimer:.space 2_

3、currTimer: .space 2_speedTimer: .space 2_adcSample: .space 4_speedPI:.space 4_currLim:.space 4_currPI:.space 4_voltLim:.space 4 .textreset:mov #_SP_init, W15 mov #_SPLIM_init, W0 mov W0, SPLIM nopRCALL _wreg_init mov #SPEED_SET, W0cp0 W0bra GE, _clockwise setm _signneg W0, W0_clockwise:mov #SPEED_TR

4、ANS, W1 mul.UU W0, W1, W2 mov.w W2, _speedmov #_volrate, W1 mul.UU W0,W1,W0 mov.w W0, _voltRCALL _sys_initRCALL _var_initRCALL _setup nopDone:nopnopnopbra _Done_PWMInterrupt:push.spush.d W4mov.w _speedTimer, W0cp _sysTimerbra LT, _next1mov.w _adcSample+2,W0 ;mov #SPEED_SAMPLE_OFFSET,W2 sub W0,W2,W4m

5、ov #SPEED_RATE, W5mpy W4*W5,A sac A,#-8,W0 mov.w W0, _speed+2 RCALL _SpeedCtrlmov _sysTimer, W1 add W1, #8, W1 mov W1, _speedTimer_next1: mov.w _currTimer, W0 cp _sysTimer bra LT, _next2 mov.w _adcSample,W4 mov #CURR_RATE, W5 mul.UU W4, W5, W0 mov.w W0, _curr+2 RCALL _CurrCtrl RCALL _DutyCircle mov

6、W0, PDC1 mov W0, PDC2mov _sysTimer, W1 add W1, #2, W1 mov W1, _currTimer_next2:inc.w _sysTimerpwm_end: bclr IFS2,#PWMIF pop.d W4 pop.sRETFIE_ADCInterrupt: push W0 mov ADCBUF0, W0 mov.w W0, _adcSample mov ADCBUF1, W0btst _sign, #0 neg W0, W0 mov.w W0, _adcSample+2 adc_end:bclr IFS0,#ADIF pop W0RETFIE

7、_FLTAInterrupt: bclr PTCON,#15 setm PORTD bclr TRISE,#8 bclr TRISA,#9 bset PORTA,#9 _Error: bra _Error RETFIE _DefaultInterrupt: bclr PTCON,#15 setm PORTD bclr TRISE,#8 bclr TRISA,#10 bset PORTA,#10 _Error1:bra _Error1 RETFIE _sys_init:bset CORCON,#0 bclr CORCON,#SATDWbset INTCON1, #NSTDIS mov #0x40

8、00,W0 mov W0,IPC2 mov #0x5000,W0 mov W0,IPC9 mov #0x6000,W0 mov W0,IPC10 bclr IFS2,#PWMIF bclr IFS0,#ADIF bclr IFS2,#FLTAIF bset IEC0,#ADIE bset IEC2,#PWMIE bset IEC2,#FLTAIEbclr TRISD, #11 mov #0x0300,W0 mov W0,TRISE mov #0x03FF,W0 mov W0,PORTE mov #0x008f,W0 mov W0,FLTACONbtst _sign, #0bra NZ, _pw

9、m_countclockmov #0x0330, W0 mov W0,PWMCON1 mov #0x0A0A,W0 mov W0,OVDCON bra _pwm_next _pwm_countclock:mov #0x0303,W0 mov W0,PWMCON1 mov #0x0505,W0 mov W0,OVDCON _pwm_next:clr W0mov W0,PWMCON2 mov #0x0002,W0 mov W0,PTCON mov #0x0001,W0 mov W0,SEVTCMP mov #_Tpwm,W0 mov W0,PTPER mov #_Deadtime ,W0 mov

10、W0,DTCON1 clr W0 mov W0,DTCON2 clr.w PDC1 clr.w PDC2 clr.w PDC3 clr.w PDC4 mov W0,FLTBCONmov #0x0404,W0 mov W0,ADCON2 mov #0x0003,W0 mov W0,ADCON3 clr ADCHS ; clr ADPCFG clr ADCSSL bset ADCSSL,#7 bset ADCSSL,#12 mov #0x8166,W0 mov W0,ADCON1 RETURNCLR W0MOV W0, W14REPEAT #12MOV W0, +W14CLR W14RETURN_

11、var_init:mov #SPEED_B0, W1 mov.w W1, _speedPI mov #SPEED_B1, W1 mov.w W1, _speedPI+2mov #CURR_MAX, W1 mov.w W1, _currLim mov #CURR_MIN, W1 mov.w W1, _currLim+2 mov #CURR_B0, W1 mov.w W1, _currPI mov #CURR_B1, W1 mov.w W1, _currPI+2 mov #VOLT_MAX, W1 mov.w W1, _voltLim mov #VOLT_MIN, W1 mov.w W1, _vo

12、ltLim+2 clr.w _speed+4 clr.w _curr clr.w _curr+4 clr.w _sign clr.w _sysTimer clr.w _currTimer clr.w _speedTimer clr.w _volt RETURN_setup:clr PORTDbset PTCON, #PTEN RETURN_SpeedCtrl:mov.w _speed, W4mov.w _speed+2, W2 sub W4, W2, W4mov.w _speedPI, W5 mpy W4*W5, Amov.w _speed+4, W2sub W4, W2, W4 mov.w

13、W4, _speed+4mov.w _speedPI+2, W5 mpy W4*W5, Badd Asac A,#-4,W0mov.w _curr, W2 add W2, W0, W0mov.w _currLim, W2 cpsgt W0, W2 bra _LowLim1 mov W2, W0 bra _SpeedCtrl_end _LowLim1:mov.w _currLim+2, W2 cpsgt W0, W2 mov W0, W2 _SpeedCtrl_end:mov.w W0, _curr RETURN_CurrCtrl:mov.w _curr, W4 mov.w _curr+2, W2 sub W4, W2, W4mov.w _currPI, W5 mpy W4*W5, Amov.w _curr+4, W2 sub W4, W2, W4 mov.w W4, _curr+4mov.w _currPI+2, W5 mpy W4*W5, Badd Asac A,W0mov _volt, W2 add W2, W0, W0mov.w _voltLim, W2cpsgt W0, W2 bra _LowLim mov W0, W2 bra _CurrCtrl_end_LowLim: mov.w _voltLim+2, W2 cpsgt

温馨提示

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

评论

0/150

提交评论