发 帖  
原厂入驻New
[问答] PIC24FJ64GB004数据记录硬件和软件问题
224 PIC24 PCB
分享
嗨,伙计们,我建立了一个小型的PCB进行数据记录,我用MLA数据记录器软件来记录数据。起初我在Explorer 16板上测试了软件,它工作得很好,但当我搬到微控制器时,我有一些问题。我使用的是PIC24FJ64 GBB4。我用的是一个8MHz的晶体振荡器。当我启动我的PCB时,所有的工作都很好,我的硬件在USB中记录数据,但是几小时后它就停止工作了。有什么问题吗?它与我的配置位有关系吗?还是别的什么?请帮助!这些是我正在使用的配置设置:谢谢,
0
2020-3-9 07:10:56   评论 分享淘帖 邀请回答

相关问题

16个回答
“几个小时后”不是CONFIG位中的任何内容,IMHO。也许显示您的代码,或者尝试通过串行端口(或者如果可以的话SDcard本身)记录所有事件。
2020-3-9 07:23:31 评论

举报

如果它在几小时后就被锁定了,可能是通过PIC24F陷阱中断来追踪的错误?我不确定它对于您的特定PIC是否不同,但对于PIC24FV32KA302:您可以使用这些来跟踪致命错误。如果可以在调试时重现它,则可以检查INTCON1中的状态位。请参见:http://WW1.Microchip .com /…EVICEDOC/7000×600 D.PDF
2020-3-9 07:40:21 评论

举报

请提供更多信息,“停止工作”意味着什么。
2020-3-9 07:55:05 评论

举报

这意味着微控制器只需停止其编程的所有功能。感觉好像微控制器卡在什么地方了。这是我的主要循环:
2020-3-9 08:06:55 评论

举报

你每天记录多少数据?你确定你没有达到极限吗?无论你的板有硬件问题,PIC“停止”执行(参见KTrenholms的帖子),或者只是陷入循环,而不是调用USB函数,这都是不同的。它也可能是USB通信问题。(如果您的PIC完全冻结,Windows可能会显示USB设备不工作的警报)您必须查明。正如Cinzia所说,尝试将跟踪消息添加到您的串口(PC终端应用程序),并查看“似乎”卡在哪里。您可以重复此操作,并在可疑代码部分中添加更多跟踪消息。注意不要打扰USB通信,UART输出相当慢。如果在这些测试期间有调试器可用,那么尝试进入代码,一旦它看起来卡住了,看看你在哪里,PIC是否仍然响应。我喜欢跟踪日志,因为它们可以用来显示完整的历史,甚至超过几个小时。
2020-3-9 08:24:25 评论

举报

我每分钟都在记录数据。现在我怀疑我可能达到一定的极限,但是它能是什么样的极限呢?我有一个8gb的闪存连接到USB端口,一个小时后文件大小在5-10kb之间,所以应该继续记录。我真的很抱歉弄混了。我没有使用串口。我只是通过USB通信将数据记录到闪存驱动器中,所以我看不到任何跟踪消息,而且我没有调试器。
2020-3-9 08:38:34 评论

举报

你有一个LED或一个免费的输出,你可以监视外部?至少你可以在指定的点上切换它,或者在一个定时器中断中切换它。当你碰到一个“陷阱”ISR时,中断中断。当你得到一个“冻结”,检查行或LED,如果它在你的定时器间隔仍然切换,代码至少还在执行。如果它仍然切换,你可能在某个地方陷入循环。在这种情况下,您必须跟踪您卡在哪个循环中(也许要将日志写入闪存驱动器,看看您卡在哪里?)然后可能添加超时或其他处理该条件的其他方法。
2020-3-9 08:53:38 评论

举报

我理解您的应用程序还没有使用它。这个想法是,你开始使用它只是为了调试和输出跟踪消息。如果您的PIC24FJ64 GB00具有至少一个未使用的RPX引脚,那么“外围引脚选择”可以映射一个UART TX到该引脚。对于28引脚SPDIP来说,将电线连接到该引脚是没有问题的,而对于其他外壳来说,则更具挑战性。此外,您还需要像这样的USB到串行转换器来连接到PChttps://www.spark..com/./127315-10kb数据/小时,这对于您的闪存驱动器应该是没有任何问题的。当然。
2020-3-9 09:13:21 评论

举报

是的,看看你的代码,我看到I2C正在使用,它可能是一个“挂起”的候选。通过串行端口进行调试是好的和实际的:当然你可以在你的项目中使用任何存储支持,但是在“崩溃”的情况下,它们就不那么有用了……
2020-3-9 09:28:09 评论

举报

我正在监视一个LED,它确实不停地切换,但是微控制器似乎卡在某个循环中,停止记录数据,并停止所有其他功能。现在我记起来了,当我为实时IC添加I2C时,问题就出现了。在PC上用USB到串行连接器。
2020-3-9 09:37:36 评论

举报

您从未使用过像PrimTf这样的东西来调试C代码吗?首先检查你的I2C功能,例如简单地评论你的“实时IC”并再次测试。因为问题只出现在小时之后,所以你需要一些测试,你可以“单独离开”。你有任何I2C错误检查吗?只有你才能知道I2C逻辑是否会影响固件的其余部分。如果您在没有超时的情况下在闭环中查询I2C的各种状态位,那么您可能会有一个无休止的循环。然而,当你的LED在你的日志停止后仍然闪烁,这不应该是这样。
2020-3-9 09:45:12 评论

举报

嗨,真的吗????你如何规划你的角色?你使用哪个程序员?你真的不调试你的应用程序吗?当做
2020-3-9 09:54:40 评论

举报

我确实有i2c错误检查,我正在读这个函数:我用一个类似于this的中断调用上面的这个函数,它与中断有关吗?我正在使用这个ICSP程序员:HTTP://Stur.MelabsCo/Prd/U2/U2.HTML
2020-3-9 10:14:29 评论

举报

问题,在I2C进程失败的步骤之后,你做了什么(I2CyRTCPCRD看起来像什么)?如果您还没有的话,您可能希望主控器产生一个停止条件。如果在I2C事务的中间出现错误,则希望主控通过停止条件将总线设置回空闲状态。
2020-3-9 10:21:13 评论

举报

MII2CYRTCCSRD是这个加上I2C中的所有其他功能看起来像这样
2020-3-9 10:27:58 评论

举报

我突然想到了几件事,我不确定您应该从ISR内部运行整个I2C事务,但是比我更了解的人必须提供关于在这种情况下的最佳实践的更多视角。一般来说,您想在ISR内花费尽可能少的时间。而且,您可能完全陷入其中之一:TRSTAT并不一定意味着总线处于空闲状态。它的意思是主机当前正在传输。如果TrSTAT从不因为任何原因而变低,那么您当前的错误处理将永远不会被捕获。如果希望由timer1设置的标志控制该循环的超时,则它必须位于while循环中:您还可以,而不是轮询TRSTAT以了解操作何时完成,而是触发TBF,当发送缓冲区空时TBF变低。您还可以使用I2C中断标志,当任何I2C操作(开始、停止、传输字节、接收字节等)完成时,将设置该标志。在任何情况下,超时检查都必须在循环内。
2020-3-9 10:47:57 评论

举报

只有小组成员才能发言,加入小组>>

110个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表