jizzll 发表于 2009-8-31 16:52:24

【求助】还是单片机浮点数运算产生0.NAN的问题 ,急

上次发帖   求助 ,IAR中watch中的变量值显示0.NaN是什么原因
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3369180&bbs_page_no=1&search_mode=3&search_text=jizzll&bbs_id=9999

后来加看门狗忽视了这个问题,现在发现这个问题还是比较严重的,所以重新描述一下问题的所在,求大家多多指点

    程序中涉及到浮点数运算,而且公式1比较简单,公式2比较复杂。公式中涉及到4个输入变量(传感器获得),30个浮点数参数(开机后从E2读出存入全局变量数组)



开机的时候,读外部E2,然后把参数存入几个数组(约30个浮点数)
进入while循环
{
传感器获取4个变量值,
4个变量值代入公式1(不怎么复杂)
4个变量代入公式2(较复杂)
其他操作
}

运算公式1是不存在问题的,关键是偶尔运算公式2会出现结果为0.NAN(在4个输入变量几乎不变的情况下),整个程序运行一遍约花300mS,出现问题的时间长短不定,有时候几分钟,有时候几个小时都是正常的


求大家多指点指点,问题可能出现在哪里

shark 发表于 2009-8-31 17:35:47

可能原因:
因为采集数据出错导致
1.超出浮点运算范围,数值太大。
2.运算中被0除
3.开方或log运算中出现负数

建议对采集的数据进行校验。

jizzll 发表于 2009-9-1 00:10:14

可能原因:
因为采集数据出错导致
1.超出浮点运算范围,数值太大。
2.运算中被0除
3.开方或log运算中出现负数

建议对采集的数据进行校验。
--------------------------------------------------------------------------

运算出现错误的时候,我查看了4个传感器变量,没有发现问题的

shark 发表于 2009-9-1 00:18:54

帖出公式看看。

jizzll 发表于 2009-9-1 16:45:37

能否给一个邮箱?公司的东西不敢直接贴在网上的。

兄弟见谅啊

tiancaigao7 发表于 2009-9-2 08:25:16

直接用单片机做浮点运算?一般都是变成定点之后在运算。比如通过移位或者扩大倍数等等,反正使用浮点运算速度慢,出错率高,仅仅是精度比定点要好。不过这么高的精度一般是不需要的。

jizzll 发表于 2009-9-2 19:48:37

用来做流量计方面的,浮点数的参数太多,移位等方式太烦琐了

lankuaker 发表于 2011-11-7 23:10:33

你邮箱多少啊楼主,做什么样的流量计?很关注,麻烦回复。lankuaker@163.com
页: [1]
查看完整版本: 【求助】还是单片机浮点数运算产生0.NAN的问题 ,急