AT90CAN128单片机程序偶尔出现乘除计算出错?

Part Number: AT90CAN128 Development Tool: ICCAVR7.22 和AVRStudio4.18
主函数main中:2ms执行一次下述计算程序:
y=x/5;
z=y*256;
中断程序8ms执行一次下述计算程序:
b=a/5;
c=b*256;
问题描述:
主函数中的计算程序y和z有时会计算错误。
故障定位:在执行主函数里的计算过程中插入中断程序的计算程序,导致主函数里的计算结果y或z出现计算结果错误。
查找问题的过程中,排除了堆栈溢出引起的可能性。
想请教还有什么原因引起此类问题?是否是编译器的问题?

是不是分配内存出错,修改了现场数据。

单片机本身运算能力就弱,在允许的情况下,建议将运算值做成数据表,使用查表程序实现,或者将其它运算转成加减法运算,这样有效率点。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-16
所有的变量都用volatile定义试一下。
第2个回答  2013-09-16
数据类型要定义成一样的。
相似回答