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


133

我有一个带有ATmega328的Arduino Duemilanove 。我正在使用Ubuntu 12.04(精确的穿山甲),而Arduino IDE的版本是1.0。最近,我尝试将一些示例草图上传到其上,例如“眨眼”。但是,我的任何尝试都无济于事,每次尝试都会导致相同的错误:

avrdude:stk500_recv():程序员没有响应。

我已/dev/ttyUSB0在菜单工具串行端口下启用了该功能。我还从列表中选择了正确的板卡(Duemilanove和ATmega328)。但是,我无法解决问题。我也已经在网上搜索过,对于这个问题,没有其他答案对我有用。为什么我遇到此问题以及如何解决?

我还尝试过旋转车载ATmega并朝另一个方向安装它。现在,我在上传时没有遇到任何问题,但是之后没有任何反应。板载LED似乎也没有闪烁。


在Arduino uno板上断开RST与GND的连接。我遵循了本教程,却忘记了撤消操作。
ArtiomLK

这可能是因为波特率设置为错误的值(可能太高)。
Konrad Gajewski

Answers:


108

我的Crowduino在OS X上运行Arduino IDE时遇到了这个问题。对我来说,解决方案是在上传过程中打开详细输出(在Arduino IDE首选项窗格中)。

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

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


2
好吧,这至少为我解决了这个问题。您是如何知道的?
SlackOverflow 2014年

8
@daniele其他人注意到,如果您在X秒钟后重置,那么它会起作用。我发现这些小包有些想握手。因此,基本上,我使用Google解决了该问题,耐心地与董事会讨论了!
hoipolloi 2014年

我尝试过重设,但是它只能工作一次,但是直到我读到这篇文章之前,我都不知道该在正确的时间去做,谢谢
Ulises Layera 2014年

4
仅供参考-为了永久解决此问题,我必须安装最新的FTDI驱动程序
Scott Silvi 2014年

2
更新FTDI驱动程序并重新启动Arduion对我有所帮助(MacOS 10.9.4,Arduino Nano 328)
peetonn 2014年

79

确保Tx / Rx引脚上没有输入。然后它将起作用。


这对我有用!我有一个连接到RX / TX引脚的蓝牙模块。
johngreen

这对我有用。我还必须拔下USB电缆并重新启动arduino,因为拔下插针(和电源,只是为了确保之后)后,我收到另一个错误消息
oneindelijk

68

我遇到了同样的问题–这就是为什么我找到这个问题的原因。

我只需要将处理器从“ ATmego328P”更改为“ ATmego328P(旧引导程序)”

问题解决了–至少对我来说。

在此处输入图片说明


嘿,在新的IDE中哪里可以找到“处理器”选择面板?
穆罕默德·阿里

3
@MuhammadAli:我刚刚添加了一个屏幕截图来回答您的问题
Edgar,

祝福你,那也是我的问题。
ofekp

2
如果您使用的是ELEGOO NANO板,则可能会出现此问题。常见问题解答文档中也提到了相同的解决方案。
chetan92

如果董事会是一个Arduino纳米和先前制造2018年1月刚刚选择处理器>“ATMEGA328P(老的bootloader)”会做的伎俩(arduino.cc/en/Guide/ArduinoNano#toc4
位男子

48

好主意在这里的答案中有一些巫毒谈话。让我们对发生的事情更加真实一些,总结一下要检查的好东西:

基本上,当发生这种情况时,最好为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,它基本上意味着实际开始闪烁之前,发生了一些错误。

基本上,您必须检查(从硬件到软件,从低级到高级):

  • 如果电缆和/或连接器没有小切口;
  • 如果没有焊点短路(即接触周围的金属物),则表示:
    • Rx和之间Tx(通常是引脚10)之间的PCB上是否没有短路;
    • 如果没有与电路板下方的金属元件或组件的支脚之间的微小接触(如FTDI,ATmega芯片或其他任何东西)接触;
  • 如果ATmega芯片没有断电(GND / V CC快捷方式或切断或V CC输入无效...);
  • 如果某些屏蔽或定制设计未使用Arduino 的10引脚(/!\不适用于Leonardo,因为它具有独立的USB处理功能);
  • 如果USB转UART转换器没有问题(FTDI在较旧的Duemilanove或较新的Arduino Unos上为ATmega16U2);
  • 如果ATmega328芯片被炸或安装错误;
  • 引导加载程序是否已被覆盖或发生故障;
  • 如果应用正确的波特率进入引导加载程序;
  • 如果为目标微控制器和主板设置了正确的设置;

通常,avrdude -v -v -v -v在哪个阶段失败可以帮助很多。它根本无法建立USB连接(电缆故障,USB / UART,PCB等),还是引导加载程序问题。

更新:我尝试转动板载ATmega并朝另一个方向安装它。现在,我在上传时没有遇到任何问题,但是之后没有任何反应。板载LED似乎也没有闪烁。

恐怕如果您颠倒了ATmega的位置,然后又不起作用,那么您将电源置于数字引脚上的事实可能会烧毁芯片。


顺便说一句,Arduino输出的最后一行(开始上传之前)是avrdude的路径,配置的路径和flash文件的路径。可以轻松地将其复制粘贴到命令行中,并添加-v。
powtac 2015年

不过,的确,iirc(我几乎从未使用过糟糕的UI),您必须在首选项中启用详细输出
zmo 2015年

1
对我来说,发生这种情况是因为我在Eclipse avrdude配置中设置了错误的波特率。当我在arduino IDE上看到命令行时就知道了。
Tejas Kale 2015年

avrdude: no programmer has been specified on the command line or the config file Specify a programmer using the -c option and try again
K-SO的毒性在增加。

固定:avrdude -v -v -v -v -C/etc/avrdude.conf -patmega328 -carduino -P/dev/ttyACM0 -U flash:w:~/Arduino/WebServer/WebServer.ino.standard.hex
K-SO的毒性正在增加。

21

尝试查看是否正确选择了您的电路板。单击菜单工具->主板,然后检查是否选择了正确的主板。


1
这是给我的。我一直在使用Uno,直到炸了并得到新的Mega。全新的Mega看到了这个问题。我什至不知道这个菜单的存在。谢谢!
2014年

不是那样,但是没有选择正确的序列号……确实需要考虑一下!谢谢!
heltonbiker '16

我怎么知道哪一块板与我的Arduino兼容?
turmuka

12

您可以检查针脚0和1是否插入了跳线。这些针脚用于串行通信,而插入的电线可以防止代码被上传到板上。

如果未插入任何内容,则可能是AVRDUDE的错误,您可以尝试对其进行更新。


3
绝对没有连接到0和1的东西。avrdude它也已更新,并且是最新版本。
Pastafarian 2013年

我没有另一个董事会。:(虽然类似的错误似乎在Windows上要发生的,所以它可能是与板出现问题。
Pastafarian

是的,这就是我要说的...您可以尝试 Serial.println()示例来检查它是否不仅仅是led 13
ladislas 2013年

10

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


1
每当我使用Arduino Duemilanove ATMega328时,我总是会忘记这样做,并且还要检查在Arduino应用中是否选择了正确的开发板(在1.0.6版以下的工具下。– 2014
安德鲁

1
如果您刚刚安装了arduino IDE,那么(最可能的)答案就是您想要的!
Zaxter'1

5

以上错误分为3个阶段

  1. 如果引导加载程序已崩溃
  2. 如果您没有从IDE中选择合适的端口和合适的主板
  3. 如果您正在与其他通讯进行连接,即GND和Tx引脚已连接至其他通讯设备

就我而言,我选择了错误的董事会。谢谢AMPS!
Jamshaid Kamran



3

Windows 7上,我多次遇到此问题,每次都有不同的错误消息。基本上,IDE发送到错误的端口。

要解决此问题,只需转到菜单工具端口 →[选择您的开发板所在的COM端口]。

确保仔细检查主板的端口:

  1. 启动设备管理器

    开始菜单

  2. 确保您的Arduino驱动程序在与IDE的端口设置匹配的端口下列出(如上所述)

    装置经理

  3. 我的主板列在port之下COM1。如果需要,您可以简单地在驱动程序的高级设置中更改端口:

    在此处输入图片说明


2

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

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

后来我确定更换USB电缆可以解决此问题。


1
更改为我固定的USB电缆
Paul Bailey

2

我发布此消息是因为我没有在其他地方找到此答案。将Arduino IDE升级到1.8.9后,我所有的Arduino nano中文(CH340)克隆都出现了此问题。对我有用的是使用备用的官方Arduino Uno,我必须使用nano上的ICSP接头烧毁有故障的nano上的引导程序。为此,我要做的就是按照这里的说明进行操作:arduino-nano中国芯片克隆ch340g-如何修复它。我做过的唯一不同的事情是始终如本线程中之前所述设置“ Old Bootloader”选项。除此之外,我完全按照该链接上的说明进行操作,从而使我的nanos摆脱了烦人的问题。我希望这可以帮助某个人。


1

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


1

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

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


它主要是无关的OP的问题,只有当你有一个Arduino 328的FTDI驱动程序是有用的
ZMO

1

只是以为我要指出,我的全新Arduino Uno Rev3开发板使用以下LInux驱动程序:

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

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

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


1

您是否已将任何东西连接到RESETArduino 的引脚?

我在图形LCD上遇到了此问题,需要将其连接到RESETPin。在RESET为我上传修复代码的过程中,断开LCD和引脚之间的跳线,然后,完成代码上传后,您只需要做的就是重新连接。


1

我找到了原因...

将我的串行端口更改为/dev/tty.usbmodem2131可以修复它。原来我一直都在使用错误的串口!


1

你可以试试:

  • 签入preferences.txt serial.debug_rate: serial.debug_rate=9600
  • 否则,尝试在上传时按下Arduino的reset按钮。
  • 否则,请尝试在Arduino IDE菜单“ 工具”中选择另一张卡,然后在列表中重新选择您的卡。

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在工具/串行端口菜单中。

现在,一切正常!


谢谢!在我的情况下,JDK不会引起问题,但是sudo chmod a + rw / dev / serial / by-id / usb-Arduino **********可以完成这项工作。
Artur Barseghyan 2015年

1

这是在MacBook Pro(台式机)上运行的解决方案。

我遇到了同样的错误,事实证明这是因为我将USB连接到外围设备(显示器),而不是PC本身的USB。它立即停止了任何错误,是一个简单的解决方案。


1

感谢@hoipolloi为找到解决方案提供了正确的方向。

无论如何,我不得不采取一些不同的步骤来解决该问题。

以我为例,Arduino Uno表现良好,但是在玩了一些草图后突然停了下来。我正在收到stk500_recv(): programmer is not responding都在,却无济于事。然后,我注意板上的LED 13始终亮着。好像有一些硬循环的草图在板上一遍又一遍地运行,并阻止了对板的任何输入。不确定,这只是我的猜测。

我尝试在所有可能的时刻都单击RESET,但没有任何运气,突然尝试了以下步骤:

  1. 拔下板子。
  2. 单击并按住“重置”。
  3. 再次插入。
  4. 等待几秒钟。
  5. 释放RESET按钮。

此后,我注意到板载13 LED熄灭了一秒钟,然后又再次亮起。实际重置电路板时,似乎有一个短暂的重置窗口。然后,就像在@hoipolloi的解决方案中一样,我在发送三个数据包并起作用之前就捕捉了“重置”时刻。

如果没有其他解决方案,我希望这可以帮助您解决问题。

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

  1. 在您的Arduino IDE中单击“上传”。
  2. 查看日志窗口。您将能够找到这样的一行:

    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
    
  3. 看起来像是在吞下换行符或空格符号-CE:\Program Files...。应该是-C E:\Program Files。像这样将其复制到记事本中,添加缺少的空格使行如下:

    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
    
  4. -v像我上面一样添加4 条指令。

  5. 打开命令行,将命令粘贴到其中并运行。

现在,由于4个-v参数,您将看到更多详细信息。最初,Arduino Studio仅使用其中一个。


0

您是否安装/更新了FTDI电缆的驱动程序?(第3步位于http://arduino.cc/en/Guide/Howto)。从我的Raspberry Pi运行Arduino IDE可以正常运行,而无需显式安装驱动程序(它们是预先安装的,也可以由Arduino IDE安装程序来解决)。在Mac上不是这种情况,除了IDE之外,我还必须安装电缆驱动程序。


0

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


0

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

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

我只是将芯片128替换为328版本,由于新的波特率115200,我的板名从Decimile更改为Uno或Ethernet。


0

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


0

就我而言,当我尝试执行一些“怪异”算术表达式时,问题就出现了

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

因此,我建议您检查所有算术表达式,以防某些无法由Arduino计算出来。

希望能帮助到你。


0

就我而言(Mini Pro),解决方案是如此简单,不确定我是如何错过的。我需要交叉接收/发送导线。

解:

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

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)并在命令行中运行它时,它可以正常工作。


0

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

只需断开电缆并再次连接。谢谢。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.