[求助] ATCAN90128单片机问题求助!!

emyhx   2013-9-4 10:38 楼主
我采用的是ICCAVR7.22进行编译,AVRStudio4.18进行调试,仿真器为JTAG_MKII
编写的程序不是很复杂,包括串口中断、AD中断和定时器中断在硬件仿真时出现问题
计算乘法时,计算数据错误,如下:
double A
double B
unsigned int C
C=(unsinged  int)(A*B),通过观察变量,A、B数据正确,但是C数据错误,C数据比较随机,
不知道受什么影响?观察过硬件堆栈和软件堆栈边界值0xaa没有被修改,应该是没有溢出。

回复评论 (9)

问题补充,并不是每次都出错,偶尔会出现错误!
点赞  2013-9-4 10:43
大数据时溢出了吧。自己在查查
点赞  2013-9-4 11:42
数据没有溢出,观察A与B数据都是正常的,就是乘积后错误,觉得是程序内部中断影响,或者是编译器设置问题,就是硬件堆栈设置。
点赞  2013-9-4 13:57
没有用过AVR,确定没有溢出的话。看一下AVR的堆栈是硬件的还是软件。如是硬件堆栈,那你就要注意程序嵌套层数必须小于堆栈深度。
点赞  2013-9-4 15:44
否则就会出现上面的问题。
点赞  2013-9-4 15:45
硬件仿真观察过,在出现计算错误的时候,硬件堆栈边界值没有改变,推断没有溢出!!
点赞  2013-9-5 08:53
说明程序结构不好,嵌套太深
点赞  2013-9-5 14:39
程序结构有问题,嵌套太深
点赞  2013-9-5 14:47
应该是有内存或堆栈冲突,改成全局变量试试。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
点赞  2013-9-5 17:28
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复