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.

[参考译文] MSP430FR5989:MSP4305989

Guru**** 2382630 points
Other Parts Discussed in Thread: MSP430FR5989, MSP430FR6989
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/951313/msp430fr5989-msp4305989

器件型号:MSP430FR5989
主题中讨论的其他器件: MSP430FR6989

我们使用 MSP430FR5989的 ADC12_B 模块来捕获热敏电阻的转换  

我们的编码基于示例代码 OutOfBox MSP430FR6989。

resumkling 代码是函数代码、但不可靠、因为它会在多次之后崩溃。  

次数不是确定性的。  

如果您能了解我们所做的工作、并向我们指出处理这一问题的正确方法、这将是一个很大的帮助

谢谢你  

Jean-Pierre Saintfeld

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的碰撞症状是什么? 当您在调试器中暂停时、它在哪里执行?

    我在 Launchpad (FR6989)上运行它大约15分钟、在我知道要查找的内容的范围内、它看起来不错。 (我无法导入项目、因此我构建了一个新项目。)

    对于所有这些 Xprintf 调用、160的堆栈大小可能会有点小。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、  

    早上好:-)

    感谢您在您的系统上尝试此操作。  

    我们有两个症状在不同的时间出现。  

    1) 1)我们应用的有效温度范围为[0-40]、对应于[2510-808]的 ADC 计数范围  
      超出此范围的任何值都将获得-5的任意值(请参阅 tempsensorMode.c 中 getTemperature 函数开头的检查)
      在循环执行前后和执行期间、以简单平均值连续运行仅返回-5的值。  

    2) 2)经过一段时间后、代码将完全崩溃、PC 将是0x04的"荒谬"值。 之后、应用程序位于杂草中。

    这两种情况是随机的。 根据我们在 ADC12MEM0采集之前或之后引入的延迟量、行为会发生变化。

    我已检测代码在 ADC ISR (main.c)中具有一个标志。

    在采集前、我清除这个标志、并等待 ISR 再次置位该标志、然后再访问 ADC12MEM0。

    这一过程很有效、但速度非常慢、因为设置标志需要很长时间。  

    这是我到目前为止得到的结果。  

    您是否对如何解决这些问题有一些想法?  

    再次感谢您的友好帮助。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [我这里没有我的材料、所以我在内存中工作。]

    1) 1)我没有您的设备、因此我的 ADC 只是"采样空气"。 但是、在读取代码之前、我看不到任何等待 ADC 完成的东西。 (OOB 代码为此使用了 LPM3。) 在稳定状态下、这可能不明显、因为 MEM0中的值会过时、但并不不合理。 但我记得、您的采样非常长(SHT=256?) 因此、您可能会在第一个(或前几个)时间看到一些奇怪的东西。

    2) 2)我建议您增大堆栈大小。 我在发现我错过了一个#define (printf_UART 或某些这样的)、这似乎是为了清除症状、我遇到了一个由堆栈溢出引起的分支到0x4。 (Xprintf 是堆栈日志。) 随后对 SP 进行的抽查显示堆栈很大、但不会溢出、但在我看来、时间变化可能会使堆栈翻转。 我没有看到任何 malloc()调用,因此如果 SRAM 用完,您可能可以将堆压缩到接近0。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、  

    早上好、  

    我谨热烈感谢你在解决这一问题方面提供的非常友好和有效的协助。  

    我们已经在多个器件上运行了此修复程序几天了。 不是要报告的单次崩溃。

    我们可以安全地声明此错误已被消除(如果我们只能执行与新冠虫相似的操作:-))

    再次感谢你

    我在这一守则中可能犯了几个更愚蠢的错误,你的专家鹰眼也会有帮助。

    祝你度过美好、安全的一天

    尽快与您联系