【问题标题】:Communication Arduino Mega 2560 to PC failure/ hang up通信 Arduino Mega 2560 到 PC 故障/挂断
【发布时间】:2014-02-05 09:22:19
【问题描述】:

我们有一个项目,我们使用 Arduino Mega 2560 进行数据记录。 arduino 发送 定期(2s 周期)包含不同传感器值的字符串。在 PC(Windows 7 和 Windows XP)上,我们使用 logview 用于可视化(www.logview.info/),这很适合我们的目的。 字符串格式 对于 logview 的描述如下:http://www.logview.info/cms/d_formatbeschreibung.phtml

我们的问题是logview时不时挂掉。串行记录停止并且 logview 不能 再打开 COM 端口。唯一的解决方案是拔下并重新连接 USB 电缆。不幸的是,这 对我们来说不是一个可接受的解决方案。

到目前为止我们所做的尝试:

  • 我们从 Arduino Mega 2560 中移除了所有传感器/执行器,并且仅通过 USB 发送了虚拟字符串 -> logview 仍然挂断
  • 我们降低了波特率 --> 设备似乎没有那么频繁地挂断(但仍然挂断)
  • 我们使用了较短的 USB 电缆 --> 设备似乎不会经常挂断(但仍会挂断)
  • 我们在 PC 上使用了一个简单的 PC 程序,将串行数据写入文件(而不是 logview)--> 也挂了
  • 我们将一个额外的 arduino UsART/USB 转换器连接到 Arduino 的第二个 USART,并通过两个 UART 发送相同的字符串。在 PC 上,我们用 logview 和 putty 观察了两个端口 -> 都挂了

你有什么想法吗?我们认为它可能是

  • 地面问题
  • 窗口问题

最好的问候

【问题讨论】:

    标签: logging usb arduino communication uart


    【解决方案1】:

    尝试在 PC 和 arduino 两个系统上计算波特率的差异误差。也许错误是高和集成控制功能返回失败状态并让程序崩溃

    【讨论】:

    • 如何测量差异误差?用示波器看 UART 信号 ??
    • 你不能测量它,你必须计算它。试试这个: BAUD = F_CPU/(16*(UBBRn+1)) 如果差值大于 5% 你必须选择另一个波特率