工具/软件:WEBENCH设计工具
背景:
我希望你们中的一些人能帮助我解决一个复杂的c/c++问题... 我的任务是更新一个传统项目,该项目最初是3到40年前为德州仪器(TI)芯片33yA编写的。 这些芯片不再可用。 我最近在3-4个项目上使用了(相对)新芯片,几乎没有遇到什么问题。 较新的芯片是MSP430F5438A。 大约10-15年前,这一遗留项目以新的形式引入,增加了HART通信功能。 我认为这些详细信息与我的问题无关,但请注意,该项目包含至少3次还原的文件和代码。 HART版本将参数存储在EEPROM中。 随着新芯片的出现,我们也改用了新的EEPROM,多年来我们已成功地与此芯片配合使用。 参数必须可通过HART通信查看和更改。 我已在新代码中实现了项目的所有功能,但参数的(HART)编辑除外。 大多数查看(HART)功能正常。 我正在使用HART小组开发的代码来处理HART通信。
问题:
我可以写入EEPROM并正确地从我的代码中读回参数。 我无法从旧代码执行此操作。 要在EEPROM中写入或读取,我使用读取和写入功能。 参数为:1. 开始字节的EEPROM中的地址。 2.(unsigned char*) ram中用于源站或目标站的参数的地址,以及3.读写的大小(以字节为单位)。 我正在使用TI内在I2Cmodule作为主模块–EEPROM是从属的。
如果我从我的代码调用这些函数,它们都可以工作。 如果我从旧代码调用它们,则读取不返回正确的值,通常返回NaN。 我使用IAR电子工作台(完整版)作为我的开发环境。 如果我右键单击这些函数以转到定义,将转到新代码中的正确函数。 我认为这意味着正在执行正确的代码。 我不理解使用相同参数调用的相同函数如何仅根据调用的来源产生不同的结果。 我已使用调试器验证HART代码是否使用了正确的参数值。
帮助!!!!
有人会建议我如何解决这个问题吗? 我将无法将这两个代码段“整合”在一起,直到我找出导致这种情况的原因。 有人,拜托???