📄 pmsm31.asm
字号:
.sym _main,_main,32,2,0
.globl _main
.func 103
;>>>> void main()
******************************************************
* FUNCTION DEF : _main
******************************************************
_main:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 6
;>>>> RstSystem();
;>>>> #if (BUILDLEVEL==LEVEL1)
;>>>> #if TARGET==F243
;>>>> pwm.period_max=667; /* This is based on 15kHz PWM frequency (20MHz) */
;>>>> #elif TARGET==F2407
CALL _RstSystem
.line 31
;>>>> pwm.period_max=1333; /* This is based on 15kHz PWM frequency (40MHz)*/
;>>>> #endif /* TARGET */
LDPK _pwm
SPLK #1333,_pwm
.line 38
;>>>> FOC_TI_Init(&foc);
LALK _foc+0
SACL *+
CALL _FOC_TI_Init
MAR *-
.line 43
;>>>> rtmon_init(); /* Call the monitor init function */
CALL _rtmon_init
.line 44
;>>>> enable_ints(); /* Set off the system running. */
CALL _enable_ints
.line 49
;>>>> while(drive.enable_flg==0)
LDPK _drive
LAC _drive
BNZ L2
L1:
.line 51
;>>>> drive.init(&drive);
LALK _drive+0
SACL *+
LDPK _drive+1
LAC _drive+1
CALA
MAR *-
.line 49
LDPK _drive
LAC _drive
BZ L1
L2:
.line 57
;>>>> pwm.init(&pwm);
;>>>> #if TARGET==F243
;>>>> EVIFRA=0xffff;
;>>>> #elif TARGET==F2407
LALK _pwm+0
SACL *+
LAC _pwm+5
CALA
MAR *-,AR3
.line 65
;>>>> EVAIFRA=0xffff;
;>>>> #endif /* TARGET */
LARK AR3,29743
SPLK #-1,*
.line 71
;>>>> dac.qptr0=&foc.svgen.va;
LALK _foc+30
LDPK _dac
SACL _dac
.line 72
;>>>> dac.qptr1=&foc.svgen.vb;
LALK _foc+31
SACL _dac+1
.line 73
;>>>> dac.qptr2=&foc.svgen.vc;
LALK _foc+32
SACL _dac+2
.line 74
;>>>> dac.qptr3=&foc.rg.rmp_out;
;>>>> #endif /* (BUILDLEVEL==LEVEL1) */
;>>>> #if (BUILDLEVEL==LEVEL2)
;>>>> #if TARGET==F243
;>>>> pwm.period_max=667; /* This is based on 15kHz PWM frequency (20MHz) */
;>>>> #elif TARGET==F2407
;>>>> pwm.period_max=1333; /* This is based on 15kHz PWM frequency (40MHz)*/
;>>>> #endif /* TARGET */
;>>>> FOC_TI_Init(&foc);
;>>>> rtmon_init(); /* Call the monitor init function */
;>>>> enable_ints(); /* Set off the system running. */
;>>>> while(drive.enable_flg==0)
;>>>> drive.init(&drive);
;>>>> pwm.init(&pwm);
;>>>> ilg2.init(&ilg2);
;>>>> dac.qptr0=&ilg2.out_a;
;>>>> dac.qptr1=&ilg2.out_b;
;>>>> dac.qptr2=&foc.rg.rmp_out;
;>>>> dac.qptr3=&foc.voltage_dq.q;
;>>>> #endif /* (BUILDLEVEL==LEVEL2) */
;>>>> #if (BUILDLEVEL==LEVEL3)
;>>>> #if TARGET==F243
;>>>> pwm.period_max=667; /* This is based on 15kHz PWM frequency (20MHz) */
;>>>> #elif TARGET==F2407
;>>>> pwm.period_max=1333; /* This is based on 15kHz PWM frequency (40MHz)*/
;>>>> #endif /* TARGET */
;>>>> FOC_TI_Init(&foc);
;>>>> rtmon_init(); /* Call the monitor init function */
;>>>> enable_ints(); /* Set off the system running. */
;>>>> while(drive.enable_flg==0)
;>>>> drive.init(&drive);
;>>>> pwm.init(&pwm);
;>>>> ilg2.init(&ilg2);
;>>>> dac.qptr0=&ilg2.out_a;
;>>>> dac.qptr1=&foc.svgen.vb;
;>>>> dac.qptr2=&foc.svgen.vc;
;>>>> dac.qptr3=&foc.rg.rmp_out;
;>>>> #endif /* (BUILDLEVEL==LEVEL3) */
;>>>> #if (BUILDLEVEL==LEVEL4)
;>>>> #if TARGET==F243
;>>>> pwm.period_max=667; /* This is based on 15kHz PWM frequency (20MHz) */
;>>>> #elif TARGET==F2407
;>>>> pwm.period_max=1333; /* This is based on 15kHz PWM frequency (40MHz)*/
;>>>> #endif /* TARGET */
;>>>> FOC_TI_Init(&foc);
;>>>> rtmon_init(); /* Call the monitor init function */
;>>>> enable_ints(); /* Set off the system running. */
;>>>> while(drive.enable_flg==0)
;>>>> drive.init(&drive);
;>>>> pwm.init(&pwm);
;>>>> qep.init(&qep);
;>>>> speed.K1_fr = 4800;
;>>>> speed.K2_fr = 32361;
;>>>> speed.K3_fr = 407;
;>>>> speed.rpm_max = 6000;
;>>>> ilg2.init(&ilg2);
;>>>> dac.qptr0=&foc.rg.rmp_out;
;>>>> dac.qptr1=&foc.svgen.va;
;>>>> dac.qptr2=&qep.theta_elec;
;>>>> dac.qptr3=&foc.svgen.vb;
;>>>> #endif /* (BUILDLEVEL==LEVEL4) */
;>>>> #if (BUILDLEVEL==LEVEL5)
;>>>> #if TARGET==F243
;>>>> pwm.period_max=667; /* This is based on 15kHz PWM frequency (20MHz) */
;>>>> #elif TARGET==F2407
;>>>> pwm.period_max=1333; /* This is based on 15kHz PWM frequency (40MHz)*/
;>>>> #endif /* TARGET */
;>>>> FOC_TI_Init(&foc);
;>>>> rtmon_init(); /* Call the monitor init function */
;>>>> enable_ints(); /* Set off the system running. */
;>>>> while(drive.enable_flg==0)
;>>>> drive.init(&drive);
;>>>> pwm.init(&pwm);
;>>>> qep.init(&qep);
;>>>> speed.K1_fr = 4800;
;>>>> speed.K2_fr = 32361;
;>>>> speed.K3_fr = 407;
;>>>> speed.rpm_max = 6000;
;>>>> ilg2.init(&ilg2);
;>>>> dac.qptr0=&ilg2.out_a;
;>>>> dac.qptr1=&foc.svgen.va;
;>>>> dac.qptr2=&qep.theta_elec;
;>>>> dac.qptr3=&foc.svgen.vb;
;>>>> #endif /* (BUILDLEVEL==LEVEL5) */
;>>>> #if TARGET==F243
;>>>> EVIFRA=0x0ffff; /* Clear all Group A EV interrupt flags */
;>>>> #elif TARGET==F2407
LALK _foc+103
SACL _dac+3
.line 381
;>>>> EVAIFRA=0x0ffff; /* Clear all EV1 Group A EV interrupt flags*/
;>>>> #endif
;>>>> while(1) /* Nothing running in the background at present */
SPLK #-1,*
L3:
.line 389
B L3
.endfunc 494,000000000H,1
.sym _c_int02,_c_int02,32,2,0
.globl _c_int02
.func 497
;>>>> 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
;>>>> FOC_TI_Run(&foc);
LALK _foc+0
SACL *+
CALL _FOC_TI_Run
MAR *-
.line 31
;>>>> pwm.mfunc_c1 = foc.svgen.va;
LDPK _foc+30
BLDD _foc+30,#_pwm+2
.line 32
;>>>> pwm.mfunc_c2 = foc.svgen.vb;
BLKD #_foc+31,_pwm+3
.line 33
;>>>> pwm.mfunc_c3 = foc.svgen.vc;
BLKD #_foc+32,_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);
;>>>> FOC_TI_Run(&foc);
;>>>> pwm.mfunc_c1 = foc.svgen.va;
;>>>> pwm.mfunc_c2 = foc.svgen.vb;
;>>>> pwm.mfunc_c3 = foc.svgen.vc;
;>>>> pwm.update(&pwm);
;>>>> ilg2.read(&ilg2);
;>>>> foc.current_abc.a = ilg2.out_a;
;>>>> foc.current_abc.b = ilg2.out_b;
;>>>> foc.current_abc.c = -(ilg2.out_a+ilg2.out_b);
;>>>> 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);
;>>>> FOC_TI_Run(&foc);
;>>>> pwm.mfunc_c1 = foc.svgen.va;
;>>>> pwm.mfunc_c2 = foc.svgen.vb;
;>>>> pwm.mfunc_c3 = foc.svgen.vc;
;>>>> pwm.update(&pwm);
;>>>> ilg2.read(&ilg2);
;>>>> foc.current_abc.a = ilg2.out_a;
;>>>> foc.current_abc.b = ilg2.out_b;
;>>>> foc.current_abc.c = -(ilg2.out_a+ilg2.out_b);
;>>>> 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);
;>>>> FOC_TI_Run(&foc);
;>>>> pwm.mfunc_c1 = foc.svgen.va;
;>>>> pwm.mfunc_c2 = foc.svgen.vb;
;>>>> pwm.mfunc_c3 = foc.svgen.vc;
;>>>> pwm.update(&pwm);
;>>>> ilg2.read(&ilg2);
;>>>> foc.current_abc.a = ilg2.out_a;
;>>>> foc.current_abc.b = ilg2.out_b;
;>>>> foc.current_abc.c = -(ilg2.out_a+ilg2.out_b);
;>>>> qep.calc(&qep);
;>>>> speed.theta_elec = qep.theta_elec;
;>>>> speed.calc(&speed);
;>>>> foc.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);
;>>>> FOC_TI_Run(&foc);
;>>>> pwm.mfunc_c1 = foc.svgen.va;
;>>>> pwm.mfunc_c2 = foc.svgen.vb;
;>>>> pwm.mfunc_c3 = foc.svgen.vc;
;>>>> pwm.update(&pwm);
;>>>> ilg2.read(&ilg2);
;>>>> foc.current_abc.a = ilg2.out_a;
;>>>> foc.current_abc.b = ilg2.out_b;
;>>>> foc.current_abc.c = -(ilg2.out_a+ilg2.out_b);
;>>>> qep.calc(&qep);
;>>>> foc.shaft_theta_elec = qep.theta_elec;
;>>>> foc.shaft_direction = qep.dir_QEP;
;>>>> speed.theta_elec = qep.theta_elec;
;>>>> speed.calc(&speed);
;>>>> foc.Mea_spd = speed.speed_frq;
;>>>> dac.update(&dac);
;>>>> #endif /* BUILDLEVEL==LEVEL5 */
LALK _dac+0
SACL *+
LDPK _dac+5
LAC _dac+5
CALA
MAR *-
.line 275
;>>>> foc.speed_ref_rpm = mul_q(foc.speed_ref,15,6000,0,0);
LACK 0
SACL *+
SACL *+
LACK 6000
SACL *+
LACK 15
SACL *+
BLKD _foc+3,*+
CALL _mul_q
SBRK 5
LDPK _foc+4
SACL _foc+4
.line 278
;>>>> asm(" SETC XF ");
SETC XF
EPI0_2:
.line 280
SBRK 1
B I$$REST,AR1 ;and return
.endfunc 776,000000000H,1
.sym _c_int04,_c_int04,32,2,0
.globl _c_int04
.func 786
;>>>> 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 796,000000000H,1
.sym _RstSystem,_RstSystem,32,2,0
.globl _RstSystem
.func 799
;>>>> 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 827,000000000H,1
.sym _phantom,_phantom,32,2,0
.globl _phantom
.func 829
;>>>> 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 842,000000000H,1
.sym _rtmon_init,_rtmon_init,32,2,0
.globl _rtmon_init
.func 848
;>>>> 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 851,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 + -