Arduino Sketch上传问题 - avrdude:stk500_recv():程序员没有响应

时间:2013-11-04 09:44:39

标签: arduino

我有一个带有Atmega 328的Arduino Duemilanove。我正在使用Ubuntu 12.04,而Arduino IDE的版本是1.0。最近,我尝试将一些示例草图上传到它上面,例如Blink one。但是,我的尝试都没有工作,每次尝试都会导致相同的错误 - avrdude:stk500_recv():程序员没有响应。

enter image description here

我在工具 - >下启用了'/ dev / ttyUSB0'串行端口。我还从列表中选择了正确的板(Duemilanove with Atmega 328)。但是,我无法解决这个问题。我也在网上搜索过,这个问题的其他回复似乎都没有对我有用。有人能告诉我为什么我遇到这个问题并帮我解决它吗?

更新:我尝试转动机载Atmega并将其安装在另一个方向。现在,我没有遇到上传问题,但事后没有任何反应。板载LED也似乎没有闪烁。

41 个答案:

答案 0 :(得分:102)

我遇到了Crowduino的这个问题,在OSX上运行Arduino IDE。我的解决方案是在上传期间(在arduino IDE首选项窗格中)打开详细输出。

然后,在上传时,您可以看到avrdude在avrdude: Send: 0 [30] [20]错误发生之前发送三个数据包avrdude: ser_recv(): programmer is not responding(板上有相应的RX闪烁)。

诀窍是在发送这三个数据包之前立即点击板上的重置按钮。然后程序将成功上传。

答案 1 :(得分:63)

确保Tx / Rx引脚上没有输入,然后它才能工作。

答案 2 :(得分:44)

我知道这是一篇很老的帖子,但是在这里的答案中有一些伏都教的好话,让我们试着对正在发生的事情更加真实,并总结一下要检查的好东西:

基本上,当发生这种情况时,最好为avrdude启用详细模式,以便更好地了解正在发生的事情。为此,您只需要进入首选项并检查详细模式框。离开arduino IDE也是一个好主意,并启动一个控制台,以便在阅读avrdude的输出时更加舒服,您可以点击upload按钮。

将3或4 -v放入命令调用这一点非常重要。以下是这些avrdude命令的外观,它们具有完整的参数,因为它们完全取决于Arduino的安装方式:

avrdude -v -v -v -v -C /path/to/avrdude.conf -patmega328 -P/dev/usbport -U flash:w:/path/to/firmware.hex

获取正确命令行的一个好方法是在启用详细程度时从Arduino IDE输出日志的详细输出中复制它。

当你得到avrdude: stk500_recv(): programmer is not responding时,它基本上意味着发生了错误,之前闪烁实际开始。基本上你必须检查(从硬件到软件,从低级别到高级别):

  • 如果电缆和/或连接器没有微型插座;
  • 如果没有焊点短路(即接触金属周围的东西),这意味着:
    • 如果RxTx之间的PCB上没有短路(通常是引脚10);
    • 如果没有接触到电路板下方的金属元件,或者元件腿之间的微小部分(如FTDI,atmega芯片或任何其他部分);
  • 如果atmega芯片没电源(GND / VCC快捷方式或切断或VCC输入死机......);
  • 如果Arduino的10引脚未被某些屏蔽或自定义设计使用(/!\不适用于leonardo,因为它具有独立的USB处理功能);
  • 如果USB转UART转换器没有问题(较旧的deadmilanove上为FTDI或较新的Unos上有Atmega16U2);
  • 如果Atmega328芯片被油炸或错误安装;
  • 如果引导加载程序已被覆盖或失败;
  • 如果使用正确的波特率进入引导加载程序;
  • 如果为目标MCU和电路板设置了正确的设置;

通常avrdude -v -v -v -v可以帮助很多人找到它失败的阶段。它是否完全不能建立USB连接(电缆故障,USB / UART,PCB ......),或者它是引导加载程序的问题。

  

更新:我尝试转动机载Atmega并将其安装在另一个方向。现在,我没有遇到上传问题,但事后没有任何反应。板载LED也似乎没有闪烁。

我担心如果你颠倒了atmega的位置,然后它不起作用,你将电源放在数字引脚上的事实可能会烧毁你的芯片。

答案 3 :(得分:36)

我遇到了同样的问题 - 这就是我找到这个问题的原因。

我只需要将处理器从“ATmego328P”改为“ATmego328P(Old Bootloader)”

问题解决了 - 至少对我而言。

enter image description here

答案 4 :(得分:21)

尝试查看您的主板是否被正确选中。点击菜单工具 - >登上并检查是否选择了正确的电路板。

答案 5 :(得分:12)

您可以检查是否有任何插头插入引脚0和1.引脚用于串行通信,插入的电线可以防止代码上传到电路板上。

如果没有插入任何内容,可能是avrdude的错误,您可以尝试更新它。

希望它有所帮助! :)

答案 6 :(得分:10)

我也遇到了这个问题,我通过重新安装USB串行驱动程序解决了这个问题。请参阅:http://arduino.cc/en/Guide/Howtohttp://www.ftdichip.com/Drivers/VCP.htm

答案 7 :(得分:4)

以上错误分为3个阶段

  1. 如果引导装载程序已崩溃
  2. 如果您没有从IDE中选择正确的端口和正确的主板
  3. 如果与其他串口通信已连接。即GND和Tx引脚连接到其他通信设备

答案 8 :(得分:3)

我按照这些说明解决了OS X Yosemite 10.10上的问题:

http://www.mommosoft.com/blog/2014/10/24/ftdi-chip-and-os-x-10-10/

然而,hoipolloi提出的技巧也是一个有效的临时解决方法,也就是这个版本。

答案 9 :(得分:3)

Windows 7 上,我多次遇到此问题,每次都有不同的错误消息。基本上,IDE正在发送到错误的端口。要解决此问题,只需转到“工具” - > “端口” - > [选择电路板所在的COM端口]。

请务必仔细检查您的主板端口:

1)启动设备管理器

Start Menu

2)确保您的Arduino驱动程序列在符合IDE端口设置的端口下(如上所述)

Device Manager

3)我的电路板列在端口COM1下。如果需要,您只需在驱动程序的高级设置中更改端口:

enter image description here

答案 10 :(得分:3)

我也一样。在我第一次尝试Arduino UNO时。 我的解决方案非常简单。只需拔出插头即可插入USB线。希望它适合你。

答案 11 :(得分:2)

我在Mac上运行的Arduino上也有这个问题。它发生在我的两个Arduinos(一个Arduino Uno和一个与FTDI连接的Arduino Pro)上。

对于Uno,我将电缆连接到计算机并按上传,然后开始计数,直到“TX”LED闪烁。然后重复上传,但就在TX LED闪烁之前,点击重置按钮,上传成功。

我后来确定更换USB线修复了这个问题。

答案 12 :(得分:2)

请进行以下检查:

1-上载代码时,arduino的TX和RX中没有电线。
2-彼此之间没有焊接的引脚。
3-如果1和2没问题,则必须使用另一种arduino将引导加载程序重新安装到arduino中,您可以在youtube中搜索如何执行该操作,那里有很多关于它的视频。

答案 13 :(得分:1)

你有没有连接到Arduino上RESET引脚的东西?

我使用图形LCD遇到了这个问题,需要连接到RESET Pin。在上传代码时,断开LCD和RESET引脚之间的跳线,为您修复代码,然后在代码上传完成后重新连接。

答案 14 :(得分:1)

只是想我添加一个适合我在mac pro(桌面)上运行的解决方案

我得到了同样的错误,结果是因为我将USB连接到外围设备(我的显示器)而不是PC本身的USB。立即停止任何错误并提供简单的解决方案。

答案 15 :(得分:1)

所以我找到了原因...... 将我的串口改为/dev/tty.usbmodem2131修复了它。事实证明我一直在使用错误的串口!

答案 16 :(得分:1)

感谢@hoipolloi寻找解决方案的正确方向。无论如何,我必须采取一些不同的步骤来解决问题 我的情况是UNO工作得很好但是在玩了一些草图之后突然停了下来。我一直收到stk500_recv(): programmer is not responding而没有任何效果。然后我注意到LED 13在我的电路板上总是打开。看起来有些硬环状草图在电路板上反复运行,阻止了对电路板的任何输入。不确定,这只是我的好处 我试着在没有任何运气的情况下点击RESET,突然尝试了以下步骤:

  1. 拔掉电路板。
  2. 点击并按住RESET。
  3. 再次插上。
  4. 等几秒钟。
  5. 释放RESET按钮。
  6. 在此之后,我注意到板载13 LED关闭了一秒钟然后再次打开。当电路板实际复位时,看起来有一个短暂的复位窗口。然后就像@ hoipolloi的解决方案一样,我抓住了"重置"就在发送3个数据包之前就已经开始工作了 希望如果其他解决方案都不起作用,这将帮助您找出问题。

    提示即可。如果在控制台中上传草图时没有看到三条Send: 0 [30] [20]行,请执行以下操作:

    1. 点击"上传"在您的Arduino IDE中。
    2. 查看日志窗口。你将能够找到这样的一行:
    3. E:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CE:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w:C:\Users\Sergey\AppData\Local\Temp\build44ca75bc60fd83cc8ef41e35d4d83388.tmp/sketch_sep07a.ino.hex:i

      1. 看起来像是在这里吞下换行符或空格符号-CE:\Program Files...。它应该是-C E:\Program Files。将此内容复制到记事本中,添加缺少的空格以生成以下行:
      2. E:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -v -v -v -v -C "E:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" -patmega328p -carduino -PCOM3 -b115200 -D -U flash:w:C:\Users\Sergey\AppData\Local\Temp\build44ca75bc60fd83cc8ef41e35d4d83388.tmp/sketch_sep07a.ino.hex:i

        1. 像上面一样添加4条-v说明。
        2. 打开命令行,将命令粘贴到其中并运行。
        3. 现在,由于4个-v参数,您将看到更多详细信息。最初,Arduino Studio只使用一个。

答案 17 :(得分:1)

上述答案的这种组合解决了我的问题:

  • 执行了java更新:

    sudo apt-get install default-jdk

  • 然后杀死了arduino IDE并重新启动它

  • 我的正确的主板现在出现了(arduino Mega 2560,在Mega 1280之前只有选项)

  • 对于司机,我这样做了:

    sudo chmod a+rw /dev/serial/by-id/usb-Arduino__www.arduino.cc__(a bunch of numbers)

之后,我的arduino IDE在工具/串口菜单中显示/dev/ttyACM0

现在,一切都很棒!

答案 18 :(得分:1)

您可以尝试:

  • 签入preferences.txt serial.debug_rate: serial.debug_rate=9600
  • 在上传时,请尝试点击arduino的重置按钮。
  • 否则,请尝试在arduino->工具菜单中选择另一张卡片,然后在列表中重新选择您的卡片。

答案 19 :(得分:1)

只是想到我指出我的全新 Arduino Uno Rev3板使用以下内容 LInux驱动程序:

Device Drivers    
|-USB Drivers
  |-USB Modem (CDC ACM) support

这在最近的LInux 3.x内核中称为:CONFIG_USB_ACM:选项。

然后,此设备显示为:/dev/ttyACM0或类似设备。

答案 20 :(得分:1)

我通过从here下载并安装旧的FDTM驱动程序解决了我的问题。

尝试安装FTDIUSBSerialDriver_10_4_10_5_10_6_10_7.mpkg,然后重新启动Arduino。

答案 21 :(得分:1)

首先,确保/ dev / ttyUSB0正常工作。例如。插上鼠标并检查它是否有效。 其次,尝试选择其他板。通常,非原始电路板在其名称下无法正确识别。 第三步,在上传草图时尝试手动按下重置按钮。可能会自动重置。

答案 22 :(得分:0)

在我的情况下,新购买的主板上的主芯片没有完全插入。 - 芯片的一侧插入插槽,另一侧未完全插入。芯片略微倾斜。所以,我只是将芯片推入插槽,错误就消失了。

答案 23 :(得分:0)

我的问题是我将Arduino IDE更新到新版本,并且没有重新连接电线。看起来就是问题所在

只需断开电缆并重新连接。 谢谢。

答案 24 :(得分:0)

在MAC OS中,只需重新启动计算机,计算机在重新启动后即可正常工作。

答案 25 :(得分:0)

我将FT232RL的 DTR引脚连接到Arduino的 DTR引脚,它解决了该问题。

我正在使用带ATMega328的Arduino Pro Mini。

答案 26 :(得分:0)

我发布此消息是因为我在其他地方找不到此答案。 在将Arduino IDE升级到1.8.9之后,我所有的Arduino nano中文(CH340)克隆都出现了此问题。对我有用的是使用备用的官方Arduino Uno,我必须使用Nano上的ICSP接头烧毁有故障的Nano上的引导程序。为此,我要做的只是遵循此处的说明:chinese-clone-of-arduino-nano-with-chip-ch340g-how-to-fix-it。我所做的唯一不同的事情是始终如本线程中之前所述设置“ Old Bootloader”选项。除此之外,我完全按照该链接上的说明进行操作,从而使我的nanos摆脱了烦人的问题。我希望这对外面的人有帮助。

答案 27 :(得分:0)

对于我的情况,这是错误的波特率。它调用此命令:

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM4 **-b57600** -D -Uflash:w:C:\Users\Vahid\AppData\Local\Temp\arduino_build_527841/AnalogReadSerial.ino.hex:i 

如您所见,波特率设置为57600.当您删除此参数(-b57600)并在命令行中运行它时,它可以正常工作。

答案 28 :(得分:0)

在我的情况下(Mini Pro),解决方案非常简单,不确定我是如何错过的。 我需要交叉rx / tx线。

解决方案:

  • Arduino Rx引脚转到FTDI Tx引脚。
  • Arduino Tx引脚转到FTDI Rx引脚。

答案 29 :(得分:0)

在我的情况下,当我尝试做一些“奇怪的”算术表达式时出现问题

例如(3.14 / 4)/ 5或3.15%2.55

所以,我建议你检查所有算术表达式,以防Arduino无法计算其中一些算法。

希望它有所帮助。

答案 30 :(得分:0)

对我来说,这就像设置正确的端口一样简单。

  

要设置,请转到工具>端口并从COM1更改为适当的端口。

在此之后我的程序正常工作

答案 31 :(得分:0)

我必须选择正确的主板。例如,转到工具 - > Boards - > Arduino Nano

答案 32 :(得分:0)

如果您通过USB集线器连接Arduino,请尝试将其直接连接到Mac上的其中一个USB端口。
这对我有用。

答案 33 :(得分:0)

尝试加载不带-b的程序(波特率选项)。在〜/ .arduino15 / preferences.txt中设置build.verbose = true,当arduino.cc未运行时。在详细输出中,您将找到应从控制台加载的hex文件:

avrdude -v -v -v -v -C/usr/share/arduino/hardware/tools/avr/etc/avrdude.conf -patmega328p -carduino -P/dev/ttyUSB2  -D -Uflash:w:/tmp/build2314497724350388190.tmp/sketch_nov13b.cpp.hex:i

我只是用328版本替换了芯片128,并且从Decimile我的电路板名称由于新的波特率115200而改为Uno或以太网。

答案 34 :(得分:0)

我试图将我的伺服连接到arduino 5V引脚,打破处理器,这就是我失败的原因

avrdude:stk500_recv():程序员没有回复

解决方案:为伺服系统购买新的arduino和外部5V电源。

答案 35 :(得分:0)

这可能会延迟,但它让我感到震惊:确保您的USB电缆(在Arduino侧)已正确连接(完全插入)。确保已按照此处所述(对于Windows)检测到设备:https://stackoverflow.com/a/26913070/3361975

答案 36 :(得分:0)

我和arduino有同样的问题因为大多数提出的解决方案都没有用。 L LED一直亮着。通过取消IDE并选择实验版1.5.8解决了我的问题,然后在主板上我选择了底部选项Arduino Due(编程端口),当然你也需要在编程端口上连接usb。

答案 37 :(得分:0)

我遇到了同样的问题并自行解决了。

第一: 我有一个(OSEPP UNO r3 PLUS)。它是由OSEPP制作的Arduino UNO REV 3。

我刚买了一台OSEPP电机和伺服控制器屏蔽罩。我只是让电机工作,然后我偶然发现了同样的错误。 avrdude:stk500_recv():程序员没有响应。

我想当它连接时它已经/分配了一个新的串口。在"工具>下的arduino程序中找到串口"。我刚刚重新选择了与UNO和bam相关的问题,解决了问题。

希望有助于某人。

答案 38 :(得分:0)

我刚刚在同一个问题上花了最后几个小时......只需到这里“http://www.ftdichip.com/Drivers/VCP.htm”,下载最新的驱动程序并重启。之后应该工作得很好。我还下载了一个每晚的Arduino软件,但我并没有因为它有所作为。

答案 39 :(得分:0)

您是否安装/更新了FTDI线缆的驱动程序? (http://arduino.cc/en/Guide/Howto上的第三步)。从我的Raspberry Pi运行Arduino IDE工作正常,没有明确安装驱动程序(他们已经预安装或Arduino IDE安装程序负责)。在我的Mac上,情况并非如此,除了IDE之外,我还必须安装电缆驱动程序。

答案 40 :(得分:-1)

您确定没有其他人使用您的连接吗?我有同样的问题,经过几个小时的研究,我发现我的根本原因是不同的。基本上我不得不杀死使用串行连接的python脚本启动的任务。就我而言,这很有效:

sudo killall python

这将毫不客气地杀死所有当前的python进程。