Wie kann ich einen nicht synchronisierten AVRdude-Fehler beheben, wenn ich Arduino über ein USB-zu-Seriell-Kabel programmiere?

9

Ich versuche, diese Umgebungsbeleuchtung für den PC zu bauen . Dies funktionierte einwandfrei auf meinem Arduino Uno. Mein nächster Schritt war es, es mit "Arduino auf einem Steckbrett" zu machen . Also kaufte ich einen leeren ATmega328-Chip und brannte den Arduino-Bootloader (für das Board "Arduino Duemilanove w / ATmega328") mit der Arduino IDE und USBasp darauf. und ich weiß, dass dies richtig geladen wurde, da dieser ATmega-Chip auf dem Uno gut funktioniert.

Dann habe ich den USB-zu-Seriell-Konverter mit FT232RL gemacht ; Die Treiber wurden jedoch nicht auf meinem PC installiert (Windows 7 x64). Ich vermute, ich habe den oberflächenmontierten FTDI-Chip überhitzt und ihn beim Handlöten getötet.

So habe ich es zur Seite gehalten, und bekam dieses USB-Seriell - Konverter Brücke: (Sorry für die crappy Fotos) habe ich eine zusätzliche ST232CN auf meinem Steckbrett, den Spannungspegel von RS232 auf TTL zu konvertieren, wie in gezeigt , das Seite . Und das funktioniert gut, wie ich anhand eines Loopback-Tests bestätigt habe. Und ich habe Pin 9 von ST232 mit Pin 2 von ATmega und Pin 10 mit Pin 3 verbunden.

Beim Versuch, ein Blinkbeispiel von der Arduino IDE hochzuladen , wird folgende Fehlermeldung angezeigt:

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

Wenn ich den ausführlichen Upload (Umschalt + Upload) durchführe, erhalte ich folgende Fehlermeldung:

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

Außerdem habe ich versucht, 1k Pull-up-Widerstände an den Pins 2 und 3 von ATmega hinzuzufügen, aber es hat nicht geholfen. Ich denke, das Problem liegt jetzt in der seriellen Kommunikation vom ST232 zu ATmega? Und gibt es eine spezielle Verbindung zum Reset-Pin von ATmega? Ich habe es mit einem 10k Widerstand auf 5V gezogen.

Kartoffel in meinem Jahr
quelle
Ein Schaltplan und / oder ein Bild Ihres Steckbrett-Setups würde helfen.
sptrks
3
Haben Sie den Chip kurz vor, gleichzeitig oder kurz nach dem Befehl zum Hochladen zurückgesetzt? Immer wenn ich den Fehler "Nicht synchron" erhalten habe, hing er mit diesem relativen Timing zusammen. Für mein Steckbrett und Eclipse / AVRDude ist es das richtige Timing, den Reset-Pin kurz vor oder kurz nach dem Klicken auf den Upload-Befehl zu erden. Überprüfen Sie aber auch, ob Ihr PC den Adapter wirklich sieht, wenn Sie ihn anschließen.
JRobert
1
@potato_in_my_ear - Das richtige Format für die Veröffentlichung einer Lösung ist keine Bearbeitung, sondern eine Antwort. Wenn Sie unten nachsehen, sehen Sie ein Feld mit dem Titel "Ihre Antwort", in das Sie es eingeben können. Nach der Eingabe stimmen die Teilnehmer über Ihre Antwort ab. Sie können sie durch Drücken des Häkchens links neben der Antwort akzeptieren.
Kevin Vermeer
1
@potato_in_my_ear: Ich bin froh, dass das geholfen hat. Sie sind ein Gentleman und ein Gelehrter - ich werde meinen Kommentar als Antwort geben.
JRobert
2
Die Lösung besteht darin, dass die Leute keine Antworten mehr in Kommentaren geben!
Kevin Vermeer

Antworten:

6

Immer wenn ich den Fehler "Nicht synchron" erhalten habe, war dies darauf zurückzuführen, dass ich nur das Reset-Timing verpasst habe (oder das Reset komplett vergessen habe!). Für mein Steckbrett und Eclipse / AVRDude ist es das richtige Timing, den Reset-Pin kurz vor oder gleichzeitig mit dem Klicken auf die Upload-Schaltfläche zu lösen. Überprüfen Sie aber auch, ob Ihr PC den Adapter wirklich sieht, wenn Sie ihn anschließen.

Spätere Arduino-Boards werden so aufgebaut, dass sie bei jeder seriellen Verbindung und programmgesteuert vom Bootloader zurückgesetzt werden. Dieser Blog-Artikel beschreibt, wie es funktioniert und noch interessanter, wie man es auf frühere Boards hackt. Es sollte nicht zu schwer sein, es auf ein Steckbrett zu legen, wenn Sie wollten. Der Chip muss natürlich einen kompatiblen Bootloader haben (den Sie bereits in Ihren eingebaut haben). Für Steckbretter mache ich einfach den Reset-Button / Mausklick-Tanz.

JRobert
quelle
Ich habe jemanden gefunden, der sagt, dass Sie die avr-Toolkette dazu bringen können, den Reset selbst durchzuführen , indem Sie avrdude.conf bearbeiten . hier (in Kommentaren). Aber ich bin mir nicht sicher, wie ich das machen soll. Kannst du helfen. Ich hasse es, die ganze Zeit auf Reset zu drücken.
Anubis
Dies erfordert Hardware-Unterstützung auf dem Arduino-Board oder Breadboard, das später von Aduino integriert wurde. Code allein kann es nicht. Es basiert auf einem Kondensator vom seriellen DTR bis zum Reset und einem Reset-Pullup. Wenn Sie ein älteres oder ein Steckbrett haben, müssen Sie es hinzufügen. Diese EE StackEx-Frage und der von mir zitierte Blog-Artikel sollten Sie in die richtige Richtung weisen.
JRobert
2

Wie @JRobert in den Kommentaren sagte, hat der richtige Zeitpunkt für die Erdung und Enterdung des Reset-Pins bei ATmega den Trick getan. Erden Sie den Reset-Pin des ATmega weiter, wenn Sie auf "Hochladen" klicken, und erden Sie ihn, genau wie "Hochladen" angezeigt wird.

Kartoffel in meinem Jahr
quelle
Ich habe gerade einen Arduino Mini bekommen und wusste, dass ich die Reset-Taste drücken musste, um Code hochzuladen, aber ich konnte nicht herausfinden, wann !!! Das hat bei mir funktioniert. Vielen Dank.
Sponge Bob
0

Ich hatte die gleichen Fehler, die ich auf mehreren Websites gesehen habe. RE: Arduino-Nachricht "avrdude: stk500_getsync (): nicht synchron: resp = 0x00" oder ähnlich.

Ich habe festgestellt, dass, wenn ich alles entferne, was in D0 gepatcht ist ([D0] DIGITAL Pin Zero, am weitesten von USB- und Power-Buchsen entfernt, auch "RX" lautet).

Ich habe zwei verschiedene Computer ausprobiert und die gleichen Fehler festgestellt und festgestellt, dass wenn: 1- ich den Draht von [D0] entferne oder den Stromkreis öffne, um [D0] 2- auf Arduino hochzuladen 3- den entfernten Draht erneut flicken oder den offenen Stromkreis auf [schließen D0]

Ich habe diesen Fehler nur beim Hochladen festgestellt und dies ist meine Lösung. zur Zeit.

Ich hoffe es hilft.

Fühlt sich gut an, endlich ein paar nützliche Informationen an eine Community zurückzugeben!

ddd
quelle
1
Die Antwort ist etwas unklar: Der Satz, der mit "Ich habe festgestellt, dass wenn ich ..." beginnt, ist unvollständig und nicht sicher, was Sie dort sagen wollen. Bitte bearbeiten, danke.
Anindo Ghosh
Diese Antwort bezieht sich auf widersprüchliche Schaltkreise, die an die seriellen Pins der atmega-Hardware angeschlossen sind.
Chris Stratton
0

Dies hat mein Problem behoben. Gehen Sie zu Treiber und Setup, ersetzen Sie Boards.txt in der Arduino IDE ...

Ich habe Arduino MEGA 2560 R3 und ich hatte das gleiche Problem

avrdude: stk500_getsync (): nicht synchron: resp = 0x00

http://arduino.cc/en/Main/ArduinoBoardADK

user36857
quelle
-1

So beheben Sie den Fehler "avrdude: stk500_getsync (): nicht synchron: resp = 0x00". Installieren Sie einfach den FTDI-Treiber Version 2.8.24.0. Es gibt einige Probleme mit dem neuen Treiber v2.8.28.0.

Christian Skjerning
quelle
-1

Ziehen Sie beim Hochladen der Codes von der Arduino IDE auf Ihrem Computer den RX-Pin 0 der Arduino-Karte heraus. Sie erhalten das Hochladen des Erfolgscodes. Stecken Sie den RX-Pin heraus und versuchen Sie es. Oder Sie können (vielleicht) den Bluetooth-Empfang an den Arduino-Empfang senden, damit die TX miteinander verbunden sind.

Bucht
quelle