我采用的是ICCAVR7.22进行编译,AVRStudio4.18进行调试,仿真器为JTAG_MKII
编写的程序不是很复杂,包括串口中断、AD中断和定时器中断在硬件仿真时出现问题
计算乘法时,计算数据错误,如下:
double A
double B
unsigned int C
C=(unsinged int)(A*B),通过观察变量,A、B数据正确,但是C数据错误,C数据比较随机,
不知道受什么影响?观察过硬件堆栈和软件堆栈边界值0xaa没有被修改,应该是没有溢出。
数据没有溢出,观察A与B数据都是正常的,就是乘积后错误,觉得是程序内部中断影响,或者是编译器设置问题,就是硬件堆栈设置。
没有用过AVR,确定没有溢出的话。看一下AVR的堆栈是硬件的还是软件。如是硬件堆栈,那你就要注意程序嵌套层数必须小于堆栈深度。
硬件仿真观察过,在出现计算错误的时候,硬件堆栈边界值没有改变,推断没有溢出!!
应该是有内存或堆栈冲突,改成全局变量试试。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang