宏定义计算出错
请教各位大神,为啥宏定义ACT1_RCLA_STOP_ON实际的值并不是420,但是ACT1_RCLA_TAIL_ON的值是80?#defineRCLB_TAIL_UP 4
#defineRCLA_TAIL 11
#defineRCLB_TAIL_DOWN 6
#defineRCLA_STOP 7
#defineRCLB_STOP 7
#defineACT1_CYCLE 200//周期200ms
#defineACT1_RATIO 10 //系数
#defineACT1_RCLA_WAIT 1500 //1500ms
#defineACT1_RCLA_TAIL_ON ((RCLB_TAIL_UP*ACT1_CYCLE)/ACT1_RATIO) // 80
#defineACT1_RCLA_STOP_ON (((RCLA_TAIL*ACT1_CYCLE)+(RCLB_TAIL_DOWN*ACT1_CYCLE)+ACT1_RCLA_TAIL_ON)/ACT1_RATIO))// 420
#defineACT1_RCLA_STOP_OFF ((RCLA_STOP*ACT1_CYCLE)+ACT1_RCLA_WAIT+ACT1_RCLA_STOP_ON) // 710
#defineACT1_RCLA_TAIL_OFF ((RCLA_STOP*ACT1_CYCLE)+(RCLB_TAIL_DOWN*ACT1_CYCLE)+ACT1_RCLA_STOP_OFF) //970 #defineACT1_RCLA_TAIL_ON ((RCLB_TAIL_UP*ACT1_CYCLE)/ACT1_RATIO) // 80
4 * 200 / 10 = 80 没毛病啊。
#defineACT1_RCLA_STOP_ON (((RCLA_TAIL*ACT1_CYCLE)+(RCLB_TAIL_DOWN*ACT1_CYCLE)+ACT1_RCLA_TAIL_ON)/ACT1_RATIO))// 420
(((11 * 200) + (6 * 200)) + 80) / 10 = 348 没毛病啊。 luobote55 发表于 2018-5-18 22:03
#defineACT1_RCLA_TAIL_ON ((RCLB_TAIL_UP*ACT1_CYCLE)/ACT1_RATIO) // 80
4 * 200 ...
我也很郁闷,开发环境是codewarrior 11.6 后面注释的值是运行得出的值? luobote55 发表于 2018-5-18 22:15
后面注释的值是运行得出的值?
是我自己计算后写的注释 机器人天空 发表于 2018-5-18 22:17
是我自己计算后写的注释
那到底是什么问题呢?
能描述清楚吗? luobote55 发表于 2018-5-18 22:20
那到底是什么问题呢?
能描述清楚吗?
明天再用别的编译器试一下吧 机器人天空 发表于 2018-5-18 22:17
是我自己计算后写的注释
这是几位单片机?
rundream 发表于 2018-5-18 22:28
这是几位单片机?
16位的,飞思卡尔的S12ZVL 机器人天空 发表于 2018-5-18 22:30
16位的,飞思卡尔的S12ZVL
是不是计算的中间过程超过了0xff ff能表达的范围?
rundream 发表于 2018-5-18 22:40
是不是计算的中间过程超过了0xff ff能表达的范围?
应该不会,我定义的变量是unsigned int 型,
ACT1_RCLA_STOP_ON最多也就420 luobote55 发表于 2018-5-18 22:03
#defineACT1_RCLA_TAIL_ON ((RCLB_TAIL_UP*ACT1_CYCLE)/ACT1_RATIO) // 80
4 * 200 ...
我算也是348{:sad:} rundream 发表于 2018-5-18 22:43
我算也是348
尴尬了,我在线仿真也是348,你用的什么开发环境? 本帖最后由 rundream 于 2018-5-18 22:55 编辑
机器人天空 发表于 2018-5-18 22:46
尴尬了,我在线仿真也是348,你用的什么开发环境?
---------------------------------------------
编辑原因:更换正确图片
世界五百强企业提供的算力!
rundream 发表于 2018-5-18 22:49
世界五百强企业提供的算力!
我懂了,是我的错{:titter:}
ACT1_RCLA_TAIL_ON 计算结果已经除以系数10,而下面ACT1_RCLA_STOP_ON整体又除以系数10所以导致结果有问题
#defineACT1_RCLA_STOP_ON (((RCLA_TAIL*ACT1_CYCLE)+(RCLB_TAIL_DOWN*ACT1_CYCLE)+ACT1_RCLA_TAIL_ON)/ACT1_RATIO))// 420 感谢rundream和luobote55两位坛友的指点{:lol:}
页:
[1]