huangxiaolpbany 发表于 2014-9-19 11:59:32

AVR STUDIO仿真乘法、除法出错

我到现在还是不相信,用ICCAVR7.22做的程序,在AVRSTUDIO4中仿真时计算出错。
截图如下:
图中红色圆圈中的语句,up_step=ad_in_f1/t_up_now;
up_step和ad_in_f1为浮点数,t_up_now为 uint类型。
ad_in_f1=1937,t_up_now=200,计算结果应该是9.685,结果成了4.2e-022
我是真不知道哪里错了,求助!

huangxiaolpbany 发表于 2014-9-19 12:41:02

更加崩溃了,t_up_now=200;把数值赋给t_up_now_f后数值成了72,疯了

steaven2000 发表于 2014-9-19 12:43:21

加强制类型转换

fscd 发表于 2014-9-19 12:48:57

将int转成float

cclgxuanshao 发表于 2014-9-19 13:06:05

up_step=(float)(ad_inf1/t_up_now);

cclgxuanshao 发表于 2014-9-19 13:06:43

运行下看看效果,是否药到病除。

huangxiaolpbany 发表于 2014-9-19 13:35:02

cclgxuanshao 发表于 2014-9-19 13:06
运行下看看效果,是否药到病除。

看了下,运行结果还是错的。晚上发图,发现有几个地方都算错了。

tomy 发表于 2014-9-20 09:57:40

更加崩溃了,t_up_now=200;把数值赋给t_up_now_f后数值成了72,疯了
---------------------------------------
你这条的错误应该是t_up_now_f与t_up_now的类型不符。200的最高位被浮点处理成符号位了。

浮点数,在赋值的时候增加一个.0看下效果。就比如,1937.0这样加入运算看下效果。

cclgxuanshao 发表于 2014-9-22 16:20:48

tomy 发表于 2014-9-20 09:57
更加崩溃了,t_up_now=200;把数值赋给t_up_now_f后数值成了72,疯了
------------------ ...

还请明示

cclgxuanshao 发表于 2014-9-22 16:22:04

huangxiaolpbany 发表于 2014-9-19 13:35
看了下,运行结果还是错的。晚上发图,发现有几个地方都算错了。

解决了没,最后是啥个情况

huangxiaolpbany 发表于 2014-9-22 20:44:11

cclgxuanshao 发表于 2014-9-22 16:22
解决了没,最后是啥个情况

没解决,但是奇怪的是,烧进MEGA16的程序运行符合预期。
另外发了个帖,http://www.amobbs.com/thread-5596990-1-1.html
我怀疑是AVR STUDIO的问题
页: [1]
查看完整版本: AVR STUDIO仿真乘法、除法出错