几个小时后PIC32变得无法响应

时间:2013-10-22 07:13:48

标签: mplab pic32

我有另一家公司为我们开发的PIC32MX340F512电路板,电路板有一个DS1338 RTCC和24LC32A eeprom,显示单元在I2C总线上,在这条总线上我包括一个TSL2561 I2C光传感器,我在c中编写代码连续轮询光传感器,当光传感器达到一定水平时,我将时间和日期以及光传感器值保存在SD卡上。这一切都运行良好,但如果我离开系统而不暴露在隧道一端的入射光应该被监视的隧道中,无论你应用多少光线,然后如果我关闭电源,系统就会变得没有响应然后重新开始一切正常。我是一个单人开发团队,几个月来一直试图找出问题,我激活看门狗计时器以防止系统挂起,但问题仍然存在。然后我决定通过包括一个按钮来激活光测量来确定问题是否与传感器有关,但是当4-5小时过去时,PIC甚至无法检测到输入引脚的变化。在硬件重置覆盖正在发生的任何事情的印象中,我包括一个重置按钮,它在前几个小时也可以正常工作,之后PIC似乎没有响应包括重置在内的任何事情。我确信固件没有任何问题,但是所有这些都发生在I2C上的显示单元(pic16f1933和lcd)与主机共用电源并且似乎没有受到影响,因为它不断地在不同的消息之间交替有没有人知道可能出现的问题(硬件/固件或我的传感器)。我正在使用单独购买的24v直流电源。虽然我的代码中没有实现任何类型的SLEEP模式,但PIC似乎陷入了沉睡。 Nb我们对许多其他项目使用相同的板,我没有遇到过这样的问题。提前谢谢。

2 个答案:

答案 0 :(得分:0)

我认为您需要(如果您还没有)探索在线调试的精彩世界(例如使用ICD3或PICkit 2/3)。它允许您以特殊模式运行处理器,让您暂停执行,查看正在执行的代码行,检查变量值,并逐步执行代码以查看哪些部件正在运行且未运行,或者查看确切的位置执行错误。如果问题需要几个小时才能重现,那没关系。你可以让它在调试模式下一夜之间运行,希望它会在早上被锁定或“休眠”。此时,您将能够暂停处理器并四处寻找,看看您是否陷入了某种无限循环或类似的东西。这通常是挖掘正在运行的代码内部的唯一方法,以查看为什么事情没有按预期工作。但正如你所说,那些需要数小时或数天才能显示的错误是最棘手的。祝你好运!

答案 1 :(得分:0)

听起来你可以将你的设计分为两个主要部分:SD卡接口,读取rtc和读取光传感器。如果是我,我会上传一个模拟读取光传感器的代码版本,但只返回假数据,看看是否能解决问题。另外,分别对其他两个模块执行相同操作,并查看项目的三个版本中是否有任何一个未显示此问题。从那里开始不断缩小范围,直到找到导致问题的代码块为止。

如果两个或更多版本的调试代码显示相同的问题,那么我的猜测是它与其中一个通信协议有关。当将DMA与SPI外设结合使用时,我遇到了Pic32芯片版本阻塞的问题。所以我建议你查看芯片的勘误表。

如果你仍然无法找到问题,我唯一的建议是检查内存泄漏或增长到保留内存的数组。

希望有所帮助,祝你好运!