通过USB到串行电缆编程Arduino时如何解决AVRdude非同步错误?


9

我正在尝试为PC 构建这种环境照明。这在我的Arduino Uno上完美运行。我的下一步是使用“面包板上的Arduino”进行制作。因此,我购买了一块空白的ATmega328芯片,并使用Arduino IDE和USBasp将Arduino引导加载程序(用于“ Arduino Duemilanove w / ATmega328”板)烧毁在其中。我知道这已经正确加载,因为该ATmega芯片在Uno上可以正常工作。

然后,我使用FT232RL制作了USB到串行转换器;但是它的驱动程序未安装在我的PC上(Windows 7 x64)。我怀疑我使表面安装的FTDI芯片过热并在手工焊接时将其杀死。

所以,我已经把它放在一边,并得到了这个 USB转串口转换器桥:(很抱歉的蹩脚的图片),我用了一个额外的ST232CN我的线路板,转换RS232到TTL电压水平,显示在此页面。正如我从环回测试中验证的那样,此方法工作正常。我已经将ST232的引脚9连接到ATmega的引脚2,并将引脚10连接到引脚3。

当我尝试从Arduino IDE 上传眨眼示例时,出现此错误:

Binary sketch size: 1026 bytes (of a 30720 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x00

当我执行详细的上传(Shift + Upload)时,出现以下错误/消息:

avrdude: usbdev_open(): did not find any USB device "usb"

另外,我尝试在ATmega的引脚2和3上添加1k上拉电阻,但没有帮助。所以我想现在的问题出在从ST232到ATmega的串行通信中?ATmega的Reset引脚是否有特殊连接?我用一个10k的电阻将其上拉至5V。


面包板设置的示意图和/或图片会有所帮助。
sptrks'5

3
您是否在命令上传之前,同时或之后重置了芯片?每当我遇到“不同步”错误时,它都与该相对时间有关。对于我的试验板和Eclipse / AVRDude,在我单击上载命令之前或刚将其复位时,将复位引脚接地是正确的时机。还要检查你的电脑确实看到适配器,当你插上。
JRobert

1
@potato_in_my_ear-发布解决方案的正确格式不是编辑,而是答案。看下面,您会看到一个标题为“您的答案”的框,您可以在其中输入内容。输入后,人们将对您的答案进行投票,您可以通过按答案左侧的对勾标记来“接受”。
凯文·维米尔

1
@potato_in_my_ear:很高兴这有所帮助。您既是绅士又是学者-我将在评论中作为答案。
JRobert 2012年

2
解决方案是让人们停止在评论中提供答案!
凯文·威米尔

Answers:


6

每当我遇到“不同步”错误时,都与我错过了重置时间(或完全忘记了重置!)有关。对于我的试验板和Eclipse / AVRDude,在我单击上载按钮之前或同时将复位引脚接地是正确的时机。但是还要检查一下,当您插入PC时,它是否确实能看到适配器。

以后建立的arduino板可以在建立串行连接时由引导加载程序以编程方式重置。 这篇博客文章描述了它的工作原理,更有趣的是,介绍了如何将其破解到早期的开发板上。如果您愿意的话,将它放在面包板上应该不难。当然,该芯片需要有一个兼容的引导程序(您已经放入了它)。对于面包板,我只需要执行重置按钮/鼠标单击操作即可。


我发现有人说可以通过编辑avrdude.conf来获得avr工具链来进行重置这里(在评论中)。但是我不确定该怎么做。你能帮我吗。我讨厌按下复位所有的时间..
阿努比斯

这将需要后来Aduino内置的Arduino板或面包板上的硬件支持。单独的代码无法做到。它基于从串行DTR到复位和复位上拉的电容器。如果您有较旧的面包板或面包板,则需要添加它。这个EE StackEx问题和我引用的博客文章应该为您指明正确的方向。
罗伯特·罗伯特(JRobert)2012年

2

正如@JRobert在评论中说的那样,将ATmega上的复位引脚接地和正确接地的正确时机可以解决问题。单击“上传”时,请保持ATmega的复位引脚接地,就像显示“上传”一样,也要使其接地。


刚买了一个arduino mini,我知道我需要按下重置按钮才能上传代码,但是我找不到时间!这对我有用。谢谢。
海绵鲍勃

0

我在几个站点上看到了与我看到的相同的错误RE:Arduino消息“ avrdude:stk500_getsync():不同步:resp = 0x00”或类似的错误。

我发现,如果我卸下D0修补的任何东西([D0] DIGITAL引脚零,距离USB和Power插孔最远,它也显示为“ RX”)。

我尝试了两台不同的计算机,并遇到相同的错误,结果发现:1-我从[D0]断开电线或将电路断开[2-上载到Arduino] 3-重新打好已拆除的电线或将断路关闭到[ D0]

我上载时仅遇到该错误,这是我的解决方案。目前。

希望能帮助到你。

终于可以向社区提供一些有用的信息了!


1
响应还不清楚:以“我发现,如果我...”开头的句子不完整,不确定您要在那说什么。请编辑,谢谢。
Anindo Ghosh

这个答案是指有冲突的电路连接到atmega硬件串行引脚。
克里斯·斯特拉顿



-1

从计算机上的Arduino IDE升级代码时,请拔出Arduino卡的RX引脚0。您将获得成功的代码上传。插入RX引脚,然后尝试。或者,您可以将蓝牙的RX(也许)置于Arduino的RX(也许)上,以便TX彼此相连。

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.