令人悲摧的Atmega16A的数学运算

2019-03-24 20:22发布

      在Atmega16A单片机程序当中(使用的是cvavr编程),由给定的参数i_Fade_time_temp = 7,根据此参数来计算其对应的计算值i_count,计算公式如下: i_count = ceil(0.2 * (506/ sqrt(pow(2,i_Fade_time_temp)))), 然而在程序运行的过程当中,最终的运行效果并不是预期中的效果。
     由于上式的计算结果为i_count = 9,我直接将i_count赋值为9,再来运行程序,此时的运行效果才是预期中的效果。难道atmega16中的数学运算就这么的不靠谱?各位大神请支支招,这种问题怎么处理呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
ljj3166
1楼-- · 2019-03-25 03:34
窃以为,不应该是硬件的问题吧
jishuaihu
2楼-- · 2019-03-25 08:21
把公式分开一步一步的算一下,就看出来问题出哪儿了。
ltbytyn
3楼-- · 2019-03-25 13:02
注意计算过程中的数据类型。
unsignedchar
4楼-- · 2019-03-25 14:16
可能写的代码出了问题
dcexpert
5楼-- · 2019-03-25 17:09
 精彩回答 2  元偷偷看……
huaiqiao
6楼-- · 2019-03-25 19:11
多定义几个变量,先把你的这个函数里的参数的数值放在变量中,然后在函数中代入变量试试

一周热门 更多>