avrdude:stk500v2_ReceiveMessage():超时

时间:2013-10-28 21:30:53

标签: arduino

这是我尝试运行ARDUINO程序时遇到的主要错误。完整的错误列表如下:

avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

我的代码如下:

int led=13;
void setup()
{
    pinMode(13,OUTPUT);
}

void loop()
{
    digitalWrite(13,HIGH);
    delay(1000);
    digitalWrite(13,LOW);
    delay(1000);
}

我尝试更新驱动程序(它们已完全更新)并下载了一些程序。我有Windows 7,而我的arduino是MEGA 2560.它显示在设备管理器中,我的所有连接都是正确的。绿色PWR灯亮,闪烁的L灯也亮。更新时,RX和TX指示灯会闪烁。我几乎尝试了网上的所有内容。有什么问题?

13 个答案:

答案 0 :(得分:14)

Mega 2560出现此错误的另一个可能原因是,如果您的代码连续有三个惊叹号。也许在最近添加的字符串中。

连续3个爆炸标记导致Mega 2560引导加载程序进入监控模式,无法完成编程。

" !!!" < ---打破Mega 2560 bootloader。

要修复,请拔下Arduino USB以重置COM端口,然后仅使用两个感叹号重新编译,或者在其间或之间使用空格重新编译。然后像往常一样重新连接Arduino和程序。

是的,我昨天和今天找到了我,追查了罪魁祸首。以下链接包含更多信息:http://forum.arduino.cc/index.php?topic=132595.0

答案 1 :(得分:12)

错误消息基本上意味着程序员无法联系设备上的引导加载程序;您尝试上传的代码与此问题无关。

导致这种情况的原因可能是多种多样的,一些可能的问题:

  1. UART通信

    • 正在发生闪烁,所以希望你没有使用错误的端口。可能值得再次检查,有时USB COM设备安装在奇怪的端口号上。

    • 将TX连接到RX(如果可能,将它们与AVR断开连接)然后打开COM端口上的终端,如果键入它们,您应该看到回显的字符。如果你不这样做,那么芯片的上游就会出现问题,它可能是通信芯片(我认为Arduino 2560出于某种原因使用辅助AVR而不是FTDI,因此可能会破坏它的软件或硬件)

  2. ATmega * bootloader

    • 由于某种原因,AVR没有执行引导加载程序。如果程序员在尝试连接之前没有重置微型,这可能就是原因。在程序员尝试连接时尝试重置AVR(按下并释放按钮)。有时,在紧密循环中运行的软件会阻止引导程序连接。

    • 除此之外,保险丝可能已经弄乱或代码被删除。您需要重新刷新引导加载程序和正确的保险丝,再次,请参阅设备的相应信息页。

  3. 仅限Arduino Mega 2560 :ATmega8U / 16U软件

    • 可能无法正常工作,需要重新编程。请参阅Programming section on the info page,您需要在计算机上使用固件和Atmel兼容的DFU(设备固件更新)软件来重新刷新目标。
  4. 电路板,AVR或FTDI芯片的硬件损坏

    • 你被软管了;需要一个新芯片。
  5. 请查看此forum post以获取更多建议。

答案 2 :(得分:6)

我收到此错误是因为我没有在avrdude命令行中指定正确的程序员。你必须指定" -c arduino"如果您使用的是Arduino板。

此示例命令读取hfuse的状态:

avrdude -c arduino -P /dev/ttyACM0 -p atmega328p -U hfuse:r:-:h

答案 3 :(得分:3)

根据我的谦虚理解,这个错误出现在不同的场景中

  1. 您选择了错误的端口,或者根本没有。转到工具> ports ans选择连接到Arduino的com端口
  2. 您选择了错误的电路板。转到工具>董事会并寻找合适的董事会
  3. 你有这些arduino副本中的一个,或者你没有在微控制器上安装boot-loader。我不知道解决这个问题!如果您知道,请编辑我的帖子并添加说明。
  4. (仅限Windows)您没有安装正确的驱动程序。你需要手动更新它们。
  5. 有时当您将电线连接到电路板时,会发生这种情况。您需要将电路板与已安装的任何面包板或电线分开,然后再次尝试上传。可能用于串行通信的引脚0(RX)和1(TX)似乎存在问题,并且在上传代码时可以更好地免费使用。

  6. 有时它会随机发生,无特殊原因!

  7. 互联网上有各种各样的解决方案,有时难以区分魔法!也许Arduino团队应该考虑更好的编译器错误,帮助用户区分这些不同的原因。

    同样的问题发生在我身上,上述解决方案都没有奏效。发生的事情是我使用的是Arduino uno并且一切都很好,但是当我打开Arduino Mega 2560时,无论我试图上传什么样的草图,我都收到了错误:

    avrdude: stk500v2_ReceiveMessage(): timeout
    

    它只是在我的一台Windows电脑上,另一台开箱即用。

    解决方案:

    解决了我的问题是去工具> board> Boards Manager ...然后在打开的窗口的左上方选择“Type”部分中的“可更新”。然后选择列表中的项目并按右侧的更新。

    我不确定这是否会解决所有问题,但至少解决了我的问题。

答案 4 :(得分:0)

这不是一个真正的解决方案,但它可以帮助其他人。不像尼克曾经说过的,这是由于我的程序中的代码。我有大型ADK模型。该问题与switch语句相关联,用于处理和解析从usb连接到Android的返回byte []。它非常奇怪,因为它每次都会很好地编译,但会像OP所说的那样失败。我评论了它并且工作正常。

答案 5 :(得分:0)

我从Arduino设置运行此代码,更改后得到相同的错误解决 串口到COM13
转到选项
工具>>串口>> COM132

答案 6 :(得分:0)

如果使用ino命令行:

ino upload

可能是因为你同时使用arduino软件,试图杀死它。

答案 7 :(得分:0)

我已直接在笔记本电脑上连接USB端口,并且已解决超时问题。

以前尝试过端口复制器,但它甚至没有识别出arduino,因此我选择了错误的端口 - 导致超时消息。

请确保您的操作系统可以看到它。

答案 8 :(得分:0)

确保串行监视器未运行,并且没有进行任何读写dev/tty/S0(或您使用的端口)的操作,这可能会导致上传干扰。

答案 9 :(得分:0)

我遇到了同样的问题,就我而言,解决方案是使用Windows 10设备管理器上的Windows Update更新usb串行驱动程序。无需下载特定于驱动程序的驱动程序,我只是让Windows Update查找合适的驱动程序。

答案 10 :(得分:0)

打开终端并输入:

$ sudo usermod -a -G dialout 

(此命令是可选的)

$ **sudo chmod a+rw /dev/ttyACM0** 

(此命令必须成功)

答案 11 :(得分:0)

我遇到了同样的问题。但问题的根本原因。设置不正确的通信,这就是我发生通信超时的原因。

解决方案:如果您通过 USB 端口连接到笔记本电脑。 将端口更改为 USB。请按照步骤

  1. 打开 Arduino-IDE
  2. 转到菜单“工具 --> 端口”并选择选项“USB”{ 对我来说它显示为 /dev/ttyUSB0 }

它对我来说很好。

答案 12 :(得分:-1)

我的aurdino mega 2560返回同样的错误。似乎问题存在于非官方克隆中。在上传开始之前按下重置按钮解决了该问题,如下面的视频所示。

https://www.youtube.com/watch?v=tAzjO4v7oF4&list=LLDn5ewJDzz53IiwWmZTgQnQ&index=1