我正在将 megaAVR 用于一个用 C 编码的嵌入式项目。设备有时会无缘无故地崩溃。这意味着代码中没有逻辑错误。
所以我的问题是,如果你有这种类型的崩溃,要检查什么?
我的建议:堆栈 - 使用太多堆栈。内存 - 不适用,不使用 malloc。
更多的?它可能是哪种 AVR 专用?
AVR MCU 崩溃,[...]。我应该检查什么?
MCU 不会“崩溃”。满足硬件重置条件之一并导致定义的重置,或者它与软件相关的问题导致未定义的行为,这可能会导致完全重置。
尝试确定是否发生了实际重置和潜在原因。第一步可能是评估 MCU 控制和状态寄存器 MCUCSR。它提供有关最近重置源的信息。
要使用复位标志来识别复位条件,用户应在程序中尽早读取并复位 MCUCSR。如果寄存器在另一个复位发生之前被清除,则可以通过检查复位标志找到复位源。
重置来源:
查看: