📄 srm.c
字号:
#include "IQmathLib.h"
#include "DSP28_Device.h"
#include "pmsm3_1.h"
#include "parameter.h"
#include "build.h"
// 函数声明
interrupt void EvaTimer1(void);
interrupt void EvaTimer2(void);
//全局变量定义
float Vd_testing=0;
float Vq_testing=0.25;
float Id_ref=0;
float Iq_ref=0.4;
float speed_ref=0.2;
float T=0.001/ISR_FREQUENCY;
int isr_ticker=0;
int pwmdac_ch1=0;
int pwmdac_ch2=0;
int pwmdac_ch3=0;
volatile int enable_flg=0;
int lockrtr_flg=1;
int speed_loop_ps=10; //速度环定标器
int speed_loop_count=1; //速度环计数器
CLARKE clarke1=CLARKE_DEFAULTS;
PARK park1=PARK_DEFSULTS;
IPARK ipark1=IPARK_DEFAULTS;
PIDREG3 pid1_id=PIDREG3_DEFAULTS;
PIDREG3 pid1_iq=PIDREG3_DEFAULTS;
PIDREG3 pid1_spd=PIDREG3_DEFAULTS;
PWMGEN pwm1=PWMGEN_DEFAULTS;
PWMDAC pwmdac1=PWMDAC_DEFAULTS;
SVGENDQ svgen_dq1=SVGENDQ_DEFAULTS;
QEP qep1=QEP_DEFAULTS;
SPEED_MEAS_QEP speed1=SPEED_MEAS_QEP_DEFAULTS;
DRIVE drv1=DRIVE_DEFAULTS;
RMPCNTL rc1=RMPXNTL_DEFAULTS;
RAMPGEN rg1=RAMPGEN_DEFAULTS;
ILEG2DCBUSMEAS ilg2_vdc1=ILEG2DCBUSMEAS_DEFAULTS;
// 主函数
void main(void)
{
InitSysCtrl();
EALLOW;
SysCtrlRegs.HISPCP.all=ox0000;
EDIS;
DINT;
IER=ox0000;
IFR=ox0000;
InitPieCtrl();
InitPieVectTable();
EvaRegs.CPTCONA.all=0;
while (enable_flg==0)
{
EvaRegs.EVAIMRA.bit.T1UFINT=1;
EvaRegs.EVAIFRA.bit.T1UFINT=1;
EvaRegs.EVAIMRA.bit.CAP3INT=1;
EvaRegs.EVAIFRA.bit.CAP3INT=1;
}
// 重新分配中断向量
EALLOW;
PieVectTable.T1UFINT=&EvaTimer1;
PieVectTable.CAPINT3=&EvaTimer2;
EDIS;
//使能PIE组2的中断6
PieCtrlRegs.PIEIER2.all=M_INT6;
//使能PIE组3的中断7
PieCtrlTegs.PIEIER3.all=M_INT7;
IER |= (M_INT2|M_INT3)
EINT; //使能全局中断INTM
ERTM; //使能适时调试中断DBGM
// 模块初始化
/* */
//循环等待
for (;;);
}
interrupt void EvaTimer1(void)
{
isr_ticker++;
if (speed_loop_count=speed_loop_ps)
{
pid1_spd.pid_ref_reg3=_IQ(speed_ref);
pid1_spd.pid_fdb_reg3=speed1.speed.frq;
pid1_spd.calc(&pid1_spd);
speed_loop_count=1;
}
else speed_loop_count++;
//使能定时器中断
EvaRegs.EVAIMRA.bit.T1UFINT=1;
EvaRegs.EVAIFRA.all=BIT9;
PieCtrlRegs.PIEACK.all |=PIEACK_GROUP2;
}
interrupt void EvaTimer2(void)
{
qep1.isr=(&qep1);
EvaRegs.EVAIMRC.bit.CAP3INT=1;
EvaRegs.EVAIFRC.all=BIT2;
PieCtrlRegs.PIEACK.all |=PIEACK_GROUP3;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -