This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

在线仿真时,上位机显示long型数据在0附近波动会出现异常值65535

如题目所示,工程中有一个变量是long型的,按照设计它正常应该在5至-5之间波动,但是在线调试时发现它会出现65535这个异常值!

检查寄存器发现是由于高16位数据和低16位数据没有同时更新造成的,请问这样的问题应该如何回避,是我的嵌入式C程序设计的有问题吗?

  • 请问您使用的是哪款芯片?若是可以的话,请给出您的代码或者私信一下您的工程
  • 这个工程是一个电机驱动工程需要外接编码器并采样三项电流,如果直接将工程发给你,恐怕您也不能复现我的问题。

    不知您是否方便使用teamviewer,或者其他远程桌面控制软件查看我的运行状态?

    谢谢您的回复!
  • 抱歉,我这边电脑暂时不能安装teamviewer。

    “检查寄存器发现是由于高16位数据和低16位数据没有同时更新造成的”

    若是可以的话,您可以详细说明一下,看是否能帮到您
  • 你好,原谅我刚刚才复现了之前的问题,现做说明如下:

    1、首先说明问题:在变量在线监测表中可以看到IqFdb这个变量的值可以出现-65514这个值,而根据我的设计,这是绝对不可能的,此时电流为0,它应该如上面的变量IdFdb所示,在几十--负几十之间波动

    2、给出我观察到的现象:

    图中红框内的数据地址为0xd38c,也就是上面提到的那个会出现异常值的变量IqFdb,可以看到它的高16位此时没有更新(显示为黑色),值为0x0000;低16位更新了(显示为红色),值为0xFFF9,所以此时监控框内用了分别用了先后两个数据的高16位和低16位,拼接出的数据是"0x0000 FFF9"也就是“61433”,这绝对超出我的限值范围了!

    3、我的推论:由于2中描述的现象,我认为是long型的变量高16位和低16位没有同时更新,导致的显示错误。而此时该变量的值应该是“0xFFFF FFF9”,也就是"-7"。

    4、本次提问的目的:想咨询一下这种BUG大家也经常遇到吗?两个字节没有同时更新显示的问题是由什么引起的?应如何避免。毕竟我之前的工程当中没有出现这种情况。

    **附加说明:由于操作困难,上面出现的两张截图不是同时截取的,所以变量的值不能对应上。

  • 芯片型号是28379S

  • 我们将在您最新的帖子内回复