打印
[DSP编程]

要疯了,这该怎么解决

[复制链接]
594|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qwer0145|  楼主 | 2016-7-13 16:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PWM, pd, pid, pi, ni
本帖最后由 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对应的两句放开,程序运行正常,但现在这种情况上电后,直接复位

相关帖子

沙发
zhangmangui| | 2016-7-13 22:44 | 只看该作者
上电后直接复位的情况只是改变了这两句程序发生的吗  
我觉得不应该啊   
上电后复位  你排查一下是否代码跑飞   或者非法修改等

使用特权

评论回复
板凳
qwer0145|  楼主 | 2016-7-14 08:00 | 只看该作者
本帖最后由 qwer0145 于 2016-7-14 08:01 编辑
zhangmangui 发表于 2016-7-13 22:44
上电后直接复位的情况只是改变了这两句程序发生的吗  
我觉得不应该啊   
上电后复位  你排查一下是否代码 ...

恩,代码确实跑飞了,但如果我将 速度给定Spdref 初始值设为0.1(原来是0,也就是电机停转),DSP能正常运行,设为0就不行了,真不知道是什么原因

使用特权

评论回复
地板
qwer0145|  楼主 | 2016-7-14 08:05 | 只看该作者
我这帖子怎么就结贴了,问题还没有解决啊

使用特权

评论回复
5
qwer0145|  楼主 | 2016-7-14 11:29 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

51

帖子

3

粉丝