2-3 直流电动机单极性可逆双闭环PWM控制程序.doc_第1页
2-3 直流电动机单极性可逆双闭环PWM控制程序.doc_第2页
2-3 直流电动机单极性可逆双闭环PWM控制程序.doc_第3页
2-3 直流电动机单极性可逆双闭环PWM控制程序.doc_第4页
2-3 直流电动机单极性可逆双闭环PWM控制程序.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

直流电动机单极性可逆双闭环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 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_currTimer:.space 2_speedTimer: .space 2;_adcSample:.space 4_speedPI:.space 4_currLim:.space 4_currPI:.space 4_voltLim:.space 4.text _reset:mov #_SP_init, W15 mov #_SPLIM_init, W0 mov W0, SPLIMnop RCALL _wreg_initmov #SPEED_SET, W0 cp0 W0 bra GE, _clockwise setm _sign neg W0, W0_clockwise:mov #SPEED_TRANS, W1 mul.UU W0, W1, W2 mov.w W2, _speed mov #_volrate, W1 mul.UU W0,W1,W0mov.w W0, _voltRCALL _sys_initRCALL _var_initRCALL _setupnop_Done:nopnopnop bra _Done_PWMInterrupt: push.s push.d W4mov.w _speedTimer, W0 cp _sysTimerbra LT, _next1mov.w _adcSample+2,W0 ; mov #SPEED_SAMPLE_OFFSET,W2sub W0,W2,W4mov #SPEED_RATE, W5 mpy W4*W5,A sac A,#-8,W0 mov.w W0, _speed+2 RCALL _SpeedCtrl mov _sysTimer, W1 add W1, #8, W1 mov W1, _speedTimer _next1: mov.w _currTimer, W0 cp _sysTimerbra LT, _next2mov.w _adcSample,W4 mov #CURR_RATE, W5mul.UU W4, W5, W0mov.w W0, _curr+2RCALL _CurrCtrl RCALL _DutyCircle mov W0, PDC1mov W0, PDC2mov _sysTimer, W1add W1, #2, W1 mov W1, _currTimer _next2: inc.w _sysTimer pwm_end:bclr IFS2,#PWMIFpop.d W4pop.sRETFIE_ADCInterrupt: push W0 mov ADCBUF0, W0 mov.w W0, _adcSample mov ADCBUF1, W0 btst _sign, #0 neg W0, W0 mov.w W0, _adcSample+2adc_end:bclr IFS0,#ADIFpop W0RETFIE _FLTAInterrupt:bclr PTCON,#15 setm PORTDbclr TRISE,#8bclr TRISA,#9bset PORTA,#9_Error:bra _ErrorRETFIE_DefaultInterrupt:bclr PTCON,#15 setm PORTDbclr TRISE,#8bclr TRISA,#10 bset PORTA,#10_Error1:bra _Error1RETFIE_sys_init: bset CORCON,#0bclr CORCON,#SATDWbset INTCON1, #NSTDISmov #0x4000,W0mov W0,IPC2mov #0x5000,W0mov W0,IPC9mov #0x6000,W0mov W0,IPC10bclr IFS2,#PWMIFbclr IFS0,#ADIFbclr IFS2,#FLTAIFbset IEC0,#ADIEbset IEC2,#PWMIEbset IEC2,#FLTAIEbclr TRISD, #11mov #0x0300,W0 mov W0,TRISEmov #0x03FF,W0mov W0,PORTEmov #0x008f,W0 mov W0,FLTACON btst _sign, #0 bra NZ, _pwm_countclock mov #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 W0 mov W0,PWMCON2 mov #0x0002,W0 mov W0,PTCON mov #0x0001,W0 mov W0,SEVTCMP mov #_Tpwm,W0 mov W0,PTPER mov #_Deadtime ,W0 mov W0,DTCON1 clr W0 mov W0,DTCON2 clr.w PDC1 clr.w PDC2 clr.w PDC3 clr.w PDC4 mov W0,FLTBCON mov #0x0404,W0 mov W0,ADCON2 mov #0x0003,W0mov W0,ADCON3 clr ADCHS ;clr ADPCFG clr ADCSSL bset ADCSSL,#7 bset ADCSSL,#12 mov #0x8166,W0 mov W0,ADCON1 RETURN _wreg_init: CLR W0 MOV W0, W14 REPEAT #12 MOV W0, +W14 CLR W14RETURN _var_init: mov #SPEED_B0, W1mov.w W1, _speedPImov #SPEED_B1, W1mov.w W1, _speedPI+2mov #CURR_MAX, W1mov.w W1, _currLimmov #CURR_MIN, W1mov.w W1, _currLim+2mov #CURR_B0, W1mov.w W1, _currPImov #CURR_B1, W1mov.w W1, _currPI+2mov #VOLT_MAX, W1mov.w W1, _voltLimmov #VOLT_MIN, W1mov.w W1, _voltLim+2clr.w _speed+4 clr.w _curr clr.w _curr+4 clr.w _sign clr.w _sysTimer clr.w _currTimer clr.w _speedTimer clr.w _voltRETURN _setup:clr PORTDbset PTCON, #PTENRETURN_SpeedCtrl: mov.w _speed, W4mov.w _speed+2, W2sub W4, W2, W4mov.w _speedPI, W5mpy W4*W5, Amov.w _speed+4, W2sub W4, W2, W4mov.w W4, _speed+4mov.w _speedPI+2, W5mpy W4*W5, Badd Asac A,#-4,W0mov.w _curr, W2 add W2, W0, W0mov.w _currLim, W2 cpsgt W0, W2bra _LowLim1mov W2, W0bra _SpeedCtrl_end_LowLim1: mov.w _currLim+2, W2 cpsgt W0, W2mov W0, W2_SpeedCtrl_end:mov.w W0, _currRETURN _CurrCtrl: mov.w _curr, W4mov.w _curr+2, W2sub W4, W2, W4mov.w _currPI, W5mpy W4*W5, Amov.w _curr+4, W2sub W4, W2, W4mov.w W4, _curr+4mov.w _currPI+2, W5mpy W4*W5, Badd Asac A,W0mov _volt, W2 add W2, W0, W0mov.w _voltLim, W2 cpsgt W0, W2bra _LowLimmov W0, W2bra _CurrCtrl_end_LowLim: mov.w _voltLim+2, W2 cpsgt W0,

温馨提示

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

最新文档

评论

0/150

提交评论