可重入代码?

时间:2013-01-16 00:56:31

标签: arduino

我正在使用Wire library将一些数据从shield移动到Arduino。

屏蔽总是正好输出36个字节(GPS设备),但Arduino看到两个数据传输,总共加起来36个字节。在每次传输中并不总是相同的计数,但总共36个字节。每次数据进入时都会重新运行setup()例程。

好像图书馆正在重新进入Arduino应用程序并将其搞砸了。

这可能吗?

2 个答案:

答案 0 :(得分:3)

如果每次数据进入时都会运行setUp()(你确定这个吗?)那么这意味着Arduino由于某种原因正在重置/重启。你是如何为GPS防护罩供电的?如果它正在向Arduino供电(可能吸收太多电流),那么可能会导致复位。它也可能是你的代码占用太多内存的东西。我先看看电源问题。

答案 1 :(得分:2)

如果您使用Wire.available,请注意它并不保证它将返回发送的字节数。您需要反复调用它,直到它返回零。

请参阅Arduino documentation中的示例。