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.

[参考译文] MSP430F5419:将MSP430置于退出或中止状态的原因。

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/575148/msp430f5419-reason-for-going-msp430-in-to-exit-or-abort-condition

部件号:MSP430F5419
主题中讨论的其他部件:MSP430FR5889

我们能否知道控制器决定退出或中止状态的故障情况?

我只使用UART和计时器模块,许多设备都连接在RS-485总线上。  其中一台设备正在使用PIC微控制器。 但所有连接的设备都具有相同的波特率。

UART的任何帧错误都会导致MSP430控制器转到退出Stae?

此致,

世纪

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

    退出或中止条件的含义是什么? 请说明

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

    可能是标准C库的exit()或abort()函数。 如果程序正常终止或中止(由操作系统发出中止信号),则执行这些命令。

    MCU应用程序不应使用它,即从不返回主功能。

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

    这是早期线程 MSP430F5419-控制器挂起的副本。

    答案是相同的:检查调用栈。 (如果您不知道这是什么或在哪里找到它,请提问。)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们在计划中的任何地方都没有使用它。 但电脑就在那里。 我们无法找到原因。 关于上述问题的进一步发展情况说明如下。
    如果我们使用1.92万波特率并与连接的从属设备通话,那么微控制器在几次迭代后就会挂起。
    同样的逻辑,如果我们尝试9600波特率,它永远不会挂起。在连接的从属设备中,我们有一个来自PIC微控制器(1.9231万波特率),一个来自TERIDIAN微控制器(1.92万波特率),两个来自MSP (1.92万波特率)。


    主要:MSP430FR5438

    从属:1) MSP430FR5889
    2) MSP430F5419
    3) PIC微控制器
    4) TERIDIAN微控制器

    协议:MODBUS - RTU

    案例1. :当所有从属设备都连接到主设备时。
    观察:控制器被绞死。

    案例2. :当MSP和TERIDIAN连接到主机时。
    观察:主计长永远不会被绞死。

    案例3. :当MSP和PIC连接到主机时。
    观察:控制器被绞死

    个案4. :当MSP和TERIDIAN连接到主机时。
    观察:主计长永远不会被绞死。

    从上述观察中我们发现,当与PIC微控制器连接时,主控制器会被挂起。
    然后我们将所有的波特率降低到9600。 问题仍然存在。
    现在,我们给PIC从属设备稍作延迟,然后它才回复数据。我们看到的是魔法。工作完美。 但我们仍对这个问题感到担忧,因为我们不知道控制器将在哪些故障下退出或中止。 由于问题的定义相当明确,我们期待着现在有具体的答案。

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

    这是我现在控制的地方。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请指导您如何查找堆栈调用。 ?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不使用CCS。 据我所知,这应该显示在"调试"选项卡中,但屏幕截图中没有其他内容。

    SP寄存器的值是多少? 该地址的内存内容是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Clemens Ladisch 说:
    我不使用CCS。[/QUOT]

    我也不是。堆栈大小通常是项目设置的一部分。 检查CCS文档。

    但是,在堆栈溢出时,核心会最终进入硬故障处理程序,并且不会执行受控终止。

    [QUOT]我们不会在计划中的任何地方使用它。[/QUOT]

    使用C lib时,您也可以使用EXIT/ABORT函数。 我仍然怀疑您正在退出主功能。 调试器结束时检查调用栈。

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

    Vijeth K Shakery 说:
    请您指导如何查找堆栈调用。 ?

    您的屏幕截图显示您正在使用现已过时 的Code Composer Essentials。  由于我没有 Code Composer Essentials,因此无法评论如何找到完整的堆栈调用。

    是否可以升级到Code Composer Studio?

    这是因为Code Composer Studio是一个活跃的产品,因此您将获得更好的支持。

    另外,您的程序是否使用任何RTOS或任何其他库,在检测到错误后可能调用exit()或abort()?