注册 登录
查看: 1249|回复: 14

[平衡组] 断言失败怎么解决啊?

[复制链接]
发表于 2014-4-2 07:42:10 | 显示全部楼层 |阅读模式
做速度PID控制实验时发现断言失败,怎么破?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

本帖被以下淘专辑推荐:

回复

使用道具 举报

发表于 2014-4-2 11:49:36 | 显示全部楼层
草原上的星星 发表于 2014-4-2 07:47
只要一加入下面的语句就会断言失败,卡住不会动了:
CAR_speedOut(MotorPWMDuty); //电机PWM占空比输出,M ...

出问题的时候,例如进入硬件上访,断言失败,一般都调出 “调用栈”,然后查找问题

请参考山外一天攻破K60视频里的 2.3 IAR使用技巧,里面示范了如何查找问题。

即使你不能找出原因,但你把调用栈截图出来,发到我们论坛上,方便其他人分析原因。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-2 07:47:30 | 显示全部楼层
只要一加入下面的语句就会断言失败,卡住不会动了:
CAR_speedOut(MotorPWMDuty); //电机PWM占空比输出,MotorPWMDuty大于0则前进,MotorPWMDuty小于0则后退
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-2 13:37:58 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-2 11:49
出问题的时候,例如进入硬件上访,断言失败,一般都调出 “调用栈”,然后查找问题

请参考山外一天攻破 ...

嗯,调出栈图如下,我看不懂,山外哥帮忙看看。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-2 14:29:44 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-2 11:49
出问题的时候,例如进入硬件上访,断言失败,一般都调出 “调用栈”,然后查找问题

请参考山外一天攻破 ...

发现问题貌似出在了这地方,一直跳不出来:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-4-2 14:53:01 | 显示全部楼层
草原上的星星 发表于 2014-4-2 13:37
嗯,调出栈图如下,我看不懂,山外哥帮忙看看。

这个地方,一般都是占空比超过100%导致的
回复 支持 反对

使用道具 举报

发表于 2014-4-2 14:53:57 | 显示全部楼层
草原上的星星 发表于 2014-4-2 14:29
发现问题貌似出在了这地方,一直跳不出来:

全速运行的时候,能不能通过?

看来这个寄存器读是不可靠的,我加个数组来缓存一下这个寄存器
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-2 14:55:02 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-2 14:53
全速运行的时候,能不能通过?

看来这个寄存器读是不可靠的,我加个数组来缓存一下这个寄存器

全速运行的时候进的是那个断言失败的函数
回复 支持 反对

使用道具 举报

发表于 2014-4-2 15:12:28 | 显示全部楼层
草原上的星星 发表于 2014-4-2 14:55
全速运行的时候进的是那个断言失败的函数

这个已经说了,应该是你的占空比超过 100% 导致的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-2 15:22:52 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-2 15:12
这个已经说了,应该是你的占空比超过 100% 导致的

那我把那个语句换成这样:
uint32 duty=300;
CAR_speedOut(duty);
它也还是有那问题
回复 支持 反对

使用道具 举报

发表于 2014-4-2 15:24:50 | 显示全部楼层
草原上的星星 发表于 2014-4-2 15:22
那我把那个语句换成这样:
uint32 duty=300;
CAR_speedOut(duty);

你看看你有没有设置 PWM 精度!!
如果精度配置为 1000,那应该没问题的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-2 15:38:31 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-2 15:24
你看看你有没有设置 PWM 精度!!
如果精度配置为 1000,那应该没问题的。

嗯,精度配置没问题。我找到原因了,是限幅那地方出了问题,漏了个负号。太粗心了,希望大家引以为戒。谢谢山外大哥!
回复 支持 反对

使用道具 举报

发表于 2014-4-2 15:46:09 | 显示全部楼层
草原上的星星 发表于 2014-4-2 15:38
嗯,精度配置没问题。我找到原因了,是限幅那地方出了问题,漏了个负号。太粗心了,希望大家引以为戒。谢 ...

呵呵,其实那个调用栈很好用的,这类的问题,如果你熟手调用栈,应该很容易找到原因。
我喜欢IAR比MDK多,也正因为IAR的调用栈很好用。虽然MDK也有调用栈,但不够好用
回复 支持 反对

使用道具 举报

发表于 2015-7-30 00:20:40 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-2 11:49
出问题的时候,例如进入硬件上访,断言失败,一般都调出 “调用栈”,然后查找问题

请参考山外一天攻 ...

这是什么情况,山外哥

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2016-5-23 11:07:53 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-2 11:49
出问题的时候,例如进入硬件上访,断言失败,一般都调出 “调用栈”,然后查找问题

请参考山外一天攻 ...

山外哥,我的这个是啥情况啊?拜托啦file:///C:\Users\SONY\AppData\Roaming\Tencent\Users\2528934830\QQ\WinTemp\RichOle\M~K{A2)X8VX%G3KJC]IO_AB.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部