📄 pmsm32.asm
字号:
;>>>> speed.K2_fr = 32361;
;>>>> speed.K3_fr = 407;
;>>>> speed.rpm_max = 6000;
;>>>> ilg2_vdc.init(&ilg2_vdc);
;>>>> dac.qptr0=&ilg2_vdc.Imeas_a;
;>>>> dac.qptr1=&sfoc.svgen.vb;
;>>>> dac.qptr2=&sfoc.smo.thetae;
;>>>> dac.qptr3=&sfoc.svgen.vc;
;>>>> #endif /* (BUILDLEVEL==LEVEL7) */
;>>>> #if TARGET==F243
;>>>> EVIFRA=0x0ffff; /* Clear all Group A EV interrupt flags */
;>>>> #elif TARGET==F2407
LALK _sfoc+128
SACL _dac+3
.line 542
;>>>> EVAIFRA=0x0ffff; /* Clear all EV1 Group A EV interrupt flags*/
;>>>> #endif
;>>>> while(1) /* Nothing running in the background at present */
SPLK #-1,*
L3:
.line 550
B L3
.endfunc 655,000000000H,1
.sym _c_int02,_c_int02,32,2,0
.globl _c_int02
.func 658
;>>>> void interrupt c_int02()
******************************************************
* FUNCTION DEF : _c_int02
******************************************************
_c_int02:
CALL I$$SAVE
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> asm(" CLRC XF ");
CLRC XF
.line 5
;>>>> isr_ticker++;
;>>>> #if (BUILDLEVEL==LEVEL1)
;>>>> #if TARGET==F243
;>>>> EVIFRA=0x0ffff; /* Clear all Group A EV interrupt flags */
;>>>> #elif TARGET==F2407
LDPK _isr_ticker
LAC _isr_ticker
ADDK 1
SACL _isr_ticker
.line 13
;>>>> EVAIFRA=0x0ffff; /* Clear all EV1 Group A EV interrupt flags*/
;>>>> #endif
LARK AR3,29743
MAR * ,AR3
SPLK #-1,* ,AR1
.line 19
;>>>> drive.calc(&drive);
LALK _drive+0
SACL *+
LAC _drive+2
CALA
MAR *-
.line 25
;>>>> SFOC_TI_Run(&sfoc);
LALK _sfoc+0
SACL *+
CALL _SFOC_TI_Run
MAR *-
.line 31
;>>>> pwm.mfunc_c1 = sfoc.svgen.va;
LDPK _sfoc+32
BLDD _sfoc+32,#_pwm+2
.line 32
;>>>> pwm.mfunc_c2 = sfoc.svgen.vb;
BLKD #_sfoc+33,_pwm+3
.line 33
;>>>> pwm.mfunc_c3 = sfoc.svgen.vc;
BLKD #_sfoc+34,_pwm+4
.line 34
;>>>> pwm.update(&pwm);
LALK _pwm+0
SACL *+
LAC _pwm+6
CALA
MAR *-
.line 39
;>>>> dac.update(&dac);
;>>>> #endif /* BUILDLEVEL==LEVEL1 */
;>>>> #if (BUILDLEVEL==LEVEL2)
;>>>> #if TARGET==F243
;>>>> EVIFRA=0x0ffff; /* Clear all Group A EV interrupt flags */
;>>>> #elif TARGET==F2407
;>>>> EVAIFRA=0x0ffff; /* Clear all EV1 Group A EV interrupt flags*/
;>>>> #endif
;>>>> drive.calc(&drive);
;>>>> SFOC_TI_Run(&sfoc);
;>>>> pwm.mfunc_c1 = sfoc.svgen.va;
;>>>> pwm.mfunc_c2 = sfoc.svgen.vb;
;>>>> pwm.mfunc_c3 = sfoc.svgen.vc;
;>>>> pwm.update(&pwm);
;>>>> ilg2_vdc.read(&ilg2_vdc);
;>>>> sfoc.current_abc.a = ilg2_vdc.Imeas_a;
;>>>> sfoc.current_abc.b = ilg2_vdc.Imeas_b;
;>>>> sfoc.current_abc.c = ilg2_vdc.Imeas_c;
;>>>> sfoc.Vbus = ilg2_vdc.Vdc_meas;
;>>>> dac.update(&dac);
;>>>> #endif /* BUILDLEVEL==LEVEL2 */
;>>>> #if (BUILDLEVEL==LEVEL3)
;>>>> #if TARGET==F243
;>>>> EVIFRA=0x0ffff; /* Clear all Group A EV interrupt flags */
;>>>> #elif TARGET==F2407
;>>>> EVAIFRA=0x0ffff; /* Clear all EV1 Group A EV interrupt flags*/
;>>>> #endif
;>>>> drive.calc(&drive);
;>>>> SFOC_TI_Run(&sfoc);
;>>>> pwm.mfunc_c1 = sfoc.svgen.va;
;>>>> pwm.mfunc_c2 = sfoc.svgen.vb;
;>>>> pwm.mfunc_c3 = sfoc.svgen.vc;
;>>>> pwm.update(&pwm);
;>>>> ilg2_vdc.read(&ilg2_vdc);
;>>>> sfoc.current_abc.a = ilg2_vdc.Imeas_a;
;>>>> sfoc.current_abc.b = ilg2_vdc.Imeas_b;
;>>>> sfoc.current_abc.c = ilg2_vdc.Imeas_c;
;>>>> sfoc.Vbus = ilg2_vdc.Vdc_meas;
;>>>> dac.update(&dac);
;>>>> #endif /* BUILDLEVEL==LEVEL3 */
;>>>> #if (BUILDLEVEL==LEVEL4)
;>>>> #if TARGET==F243
;>>>> EVIFRA=0x0ffff; /* Clear all Group A EV interrupt flags */
;>>>> #elif TARGET==F2407
;>>>> EVAIFRA=0x0ffff; /* Clear all EV1 Group A EV interrupt flags*/
;>>>> #endif
;>>>> drive.calc(&drive);
;>>>> SFOC_TI_Run(&sfoc);
;>>>> pwm.mfunc_c1 = sfoc.svgen.va;
;>>>> pwm.mfunc_c2 = sfoc.svgen.vb;
;>>>> pwm.mfunc_c3 = sfoc.svgen.vc;
;>>>> pwm.update(&pwm);
;>>>> ilg2_vdc.read(&ilg2_vdc);
;>>>> sfoc.current_abc.a = ilg2_vdc.Imeas_a;
;>>>> sfoc.current_abc.b = ilg2_vdc.Imeas_b;
;>>>> sfoc.current_abc.c = ilg2_vdc.Imeas_c;
;>>>> sfoc.Vbus = ilg2_vdc.Vdc_meas;
;>>>> qep.calc(&qep);
;>>>> sfoc.shaft_theta_elec = qep.theta_elec;
;>>>> sfoc.shaft_direction = qep.dir_QEP;
;>>>> speed.theta_elec = qep.theta_elec;
;>>>> speed.calc(&speed);
;>>>> sfoc.Mea_spd = speed.speed_frq;
;>>>> dac.update(&dac);
;>>>> #endif /* BUILDLEVEL==LEVEL4 */
;>>>> #if (BUILDLEVEL==LEVEL5)
;>>>> #if TARGET==F243
;>>>> EVIFRA=0x0ffff; /* Clear all Group A EV interrupt flags */
;>>>> #elif TARGET==F2407
;>>>> EVAIFRA=0x0ffff; /* Clear all EV1 Group A EV interrupt flags*/
;>>>> #endif
;>>>> drive.calc(&drive);
;>>>> SFOC_TI_Run(&sfoc);
;>>>> pwm.mfunc_c1 = sfoc.svgen.va;
;>>>> pwm.mfunc_c2 = sfoc.svgen.vb;
;>>>> pwm.mfunc_c3 = sfoc.svgen.vc;
;>>>> pwm.update(&pwm);
;>>>> ilg2_vdc.read(&ilg2_vdc);
;>>>> sfoc.current_abc.a = ilg2_vdc.Imeas_a;
;>>>> sfoc.current_abc.b = ilg2_vdc.Imeas_b;
;>>>> sfoc.current_abc.c = ilg2_vdc.Imeas_c;
;>>>> sfoc.Vbus = ilg2_vdc.Vdc_meas;
;>>>> qep.calc(&qep);
;>>>> sfoc.shaft_theta_elec = qep.theta_elec;
;>>>> sfoc.shaft_direction = qep.dir_QEP;
;>>>> speed.theta_elec = qep.theta_elec;
;>>>> speed.calc(&speed);
;>>>> sfoc.Mea_spd = speed.speed_frq;
;>>>> dac.update(&dac);
;>>>> #endif /* BUILDLEVEL==LEVEL5 */
;>>>> #if (BUILDLEVEL==LEVEL6)
;>>>> #if TARGET==F243
;>>>> EVIFRA=0x0ffff; /* Clear all Group A EV interrupt flags */
;>>>> #elif TARGET==F2407
;>>>> EVAIFRA=0x0ffff; /* Clear all EV1 Group A EV interrupt flags*/
;>>>> #endif
;>>>> drive.calc(&drive);
;>>>> SFOC_TI_Run(&sfoc);
;>>>> pwm.mfunc_c1 = sfoc.svgen.va;
;>>>> pwm.mfunc_c2 = sfoc.svgen.vb;
;>>>> pwm.mfunc_c3 = sfoc.svgen.vc;
;>>>> pwm.update(&pwm);
;>>>> ilg2_vdc.read(&ilg2_vdc);
;>>>> sfoc.current_abc.a = ilg2_vdc.Imeas_a;
;>>>> sfoc.current_abc.b = ilg2_vdc.Imeas_b;
;>>>> sfoc.current_abc.c = ilg2_vdc.Imeas_c;
;>>>> sfoc.Vbus = ilg2_vdc.Vdc_meas;
;>>>> qep.calc(&qep);
;>>>> sfoc.shaft_theta_elec = qep.theta_elec;
;>>>> sfoc.shaft_direction = qep.dir_QEP;
;>>>> speed.theta_elec = qep.theta_elec;
;>>>> speed.calc(&speed);
;>>>> sfoc.Mea_spd = speed.speed_frq;
;>>>> dac.update(&dac);
;>>>> #endif /* BUILDLEVEL==LEVEL6 */
;>>>> #if (BUILDLEVEL==LEVEL7)
;>>>> #if TARGET==F243
;>>>> EVIFRA=0x0ffff; /* Clear all Group A EV interrupt flags */
;>>>> #elif TARGET==F2407
;>>>> EVAIFRA=0x0ffff; /* Clear all EV1 Group A EV interrupt flags*/
;>>>> #endif
;>>>> drive.calc(&drive);
;>>>> SFOC_TI_Run(&sfoc);
;>>>> pwm.mfunc_c1 = sfoc.svgen.va;
;>>>> pwm.mfunc_c2 = sfoc.svgen.vb;
;>>>> pwm.mfunc_c3 = sfoc.svgen.vc;
;>>>> pwm.update(&pwm);
;>>>> ilg2_vdc.read(&ilg2_vdc);
;>>>> sfoc.current_abc.a = ilg2_vdc.Imeas_a;
;>>>> sfoc.current_abc.b = ilg2_vdc.Imeas_b;
;>>>> sfoc.current_abc.c = ilg2_vdc.Imeas_c;
;>>>> sfoc.Vbus = ilg2_vdc.Vdc_meas;
;>>>> qep.calc(&qep);
;>>>> sfoc.shaft_theta_elec = qep.theta_elec;
;>>>> sfoc.shaft_direction = qep.dir_QEP;
;>>>> speed.theta_elec = qep.theta_elec;
;>>>> speed.calc(&speed);
;>>>> sfoc.Mea_spd = speed.speed_frq;
;>>>> dac.update(&dac);
;>>>> #endif /* BUILDLEVEL==LEVEL7 */
LALK _dac+0
SACL *+
LDPK _dac+5
LAC _dac+5
CALA
MAR *-
.line 418
;>>>> sfoc.speed_ref_rpm = mul_q(sfoc.speed_ref,15,6000,0,0);
LACK 0
SACL *+
SACL *+
LACK 6000
SACL *+
LACK 15
SACL *+
BLKD _sfoc+3,*+
CALL _mul_q
SBRK 5
LDPK _sfoc+4
SACL _sfoc+4
.line 421
;>>>> asm(" SETC XF ");
SETC XF
EPI0_2:
.line 423
SBRK 1
B I$$REST,AR1 ;and return
.endfunc 1080,000000000H,1
.sym _c_int04,_c_int04,32,2,0
.globl _c_int04
.func 1090
;>>>> void interrupt c_int04()
******************************************************
* FUNCTION DEF : _c_int04
******************************************************
_c_int04:
CALL I$$SAVE
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 9
;>>>> qep.indexevent(&qep);
LALK _qep+0
SACL *+
LDPK _qep+11
LAC _qep+11
CALA
MAR *-
EPI0_3:
.line 11
SBRK 1
B I$$REST,AR1 ;and return
.endfunc 1100,000000000H,1
.sym _RstSystem,_RstSystem,32,2,0
.globl _RstSystem
.func 1103
;>>>> void RstSystem(void)
******************************************************
* FUNCTION DEF : _RstSystem
******************************************************
_RstSystem:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR0
.line 8
;>>>> WSGR=WAIT_STATES; /* Initialize Wait State Generator */
LACK 64
SACL *
OUT * ,0ffffh,AR1
.line 9
;>>>> disable_ints(); /* Make sure the interrupts are disabled */
CALL _disable_ints
.line 10
;>>>> wdog.disable(); /* Vccp/Wddis pin/bit must be high */
LDPK _wdog
LAC _wdog
CALA
.line 11
;>>>> IMR=0x0A; /* Set up interrupt mask to enable INT2
;>>>> until an explicit enable. */
;>>>> #if (TARGET==F243)
;>>>> SCSR=0x40c0; /* Init SCSR */
;>>>> EVIMRA=0x0201; /* Enable the timer 1 underflow/ CAP3 (index QEP) interrupts */
;>>>> #endif
;>>>> #if (TARGET==F2407)
LARK AR3,4
LACK 10
MAR * ,AR3
SACL *
.line 25
;>>>> SCSR1=0xc; /* Init SCSR */
LARK AR4,28696
ADRK 8
MAR * ,AR4
SAR AR3,* ,AR5
.line 26
;>>>> EVAIMRA=0x0201; /* Enable the timer 1 underflow/ CAP3 (index QEP) interrupts */
;>>>> #endif
LARK AR5,29740
SPLK #513,* ,AR1
EPI0_4:
.line 29
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 1131,000000000H,1
.sym _phantom,_phantom,32,2,0
.globl _phantom
.func 1133
;>>>> void interrupt phantom(void)
;>>>> static int phantom_count;
******************************************************
* FUNCTION DEF : _phantom
******************************************************
_phantom:
CALL I$$SAVE
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.sym _phantom_count,_phantom_count$1,4,3,16
.line 5
;>>>> phantom_count ++;
LDPK _phantom_count$1
LAC _phantom_count$1
ADDK 1
SACL _phantom_count$1
EPI0_5:
.line 14
SBRK 1
B I$$REST,AR1 ;and return
.endfunc 1146,000000000H,1
.sym _rtmon_init,_rtmon_init,32,2,0
.globl _rtmon_init
.func 1152
;>>>> void rtmon_init(void)
******************************************************
* FUNCTION DEF : _rtmon_init
******************************************************
_rtmon_init:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> asm(" CALL MON_RT_CNFG ");
CALL MON_RT_CNFG
EPI0_6:
.line 4
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 1155,000000000H,1
.sym _isr_ticker,_isr_ticker,4,2,16
.globl _isr_ticker
*****************************************************
* UNDEFINED REFERENCES *
*****************************************************
.global _enable_ints
.global I$$SAVE
.global I$$REST
.global _disable_ints
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -