要疯了,这该怎么解决
本帖最后由 qwer0145 于 2016-7-13 17:56 编辑pid_spd.Fdb = spd; //速度反馈
pid_spd.Ref = Spdref; //速度给定
PID_MACRO(pid_spd)
Duty = pid_spd.Out;
// temp1 = _IQmpy(4500,(Duty+_IQ(0.5)));
CMP = 4500*(int32)_IQtoIQ15(Duty+_IQ(0.5)); //IQ0*IQ15 = IQ15
CMPA = (int16)(CMP>>15);
DELAY_US(50);
EPwm1Regs.CMPA.half.CMPA = CMPA; //IQ15->IQ0
EPwm2Regs.CMPA.half.CMPA = CMPA;
// EPwm2Regs.CMPA.half.CMPA = (Uint16)_IQmpy(4500,(Duty+_IQ(0.5)));
// EPwm1Regs.CMPA.half.CMPA = InitCmpA;
// EPwm2Regs.CMPA.half.CMPA = InitCmpA;程序中InitCmpA是常量,CMPA是通过计算出来的数,如果把EPwm1Regs.CMPA.half.CMPA = CMPA; //IQ15->IQ0
EPwm2Regs.CMPA.half.CMPA = CMPA;
这两句屏蔽,将InitCmpA对应的两句放开,程序运行正常,但现在这种情况上电后,直接复位
上电后直接复位的情况只是改变了这两句程序发生的吗
我觉得不应该啊
上电后复位你排查一下是否代码跑飞 或者非法修改等 本帖最后由 qwer0145 于 2016-7-14 08:01 编辑
zhangmangui 发表于 2016-7-13 22:44
上电后直接复位的情况只是改变了这两句程序发生的吗
我觉得不应该啊
上电后复位你排查一下是否代码 ...
恩,代码确实跑飞了,但如果我将 速度给定Spdref 初始值设为0.1(原来是0,也就是电机停转),DSP能正常运行,设为0就不行了,真不知道是什么原因 我这帖子怎么就结贴了,问题还没有解决啊
页:
[1]