Habe ich meinen Arduino Uno gemauert? Probleme beim Hochladen an Bord


86

Ich kann keine Skizzen auf mein Arduino Uno hochladen.

  • Habe ich es "gemauert"?
  • Welche Schritte kann ich unternehmen, um herauszufinden, was falsch ist?
  • Was kann ich tun, um das Problem zu beheben?

7
Für diejenigen, die sich fragen, ist dies keine wirkliche Frage! Es ist eher eine Referenzfrage. Die Frage selbst ist absichtlich ziemlich weit gefasst. Die Antwort ist jedoch sehr detailliert und kann daher als Referenz verwendet werden.
Paul

2
Es ist eher eine Referenzfrage. Ganz richtig. Siehe Es ist in Ordnung, Ihre eigenen Fragen zu stellen und zu beantworten .
Nick Gammon

@ Nick_Gammon Ja. Aber ich finde, dass du es irgendwie irgendwo hätte merken sollen. Auf den ersten Blick ärgerte mich die Tatsache, dass die Frage so weit gefasst war und Sie anscheinend keine Nachforschungen angestellt hatten. Aber als ich Ihre Antwort sah, ergab alles einen Sinn. Außerdem sollten Sie (wenn Sie können) nicht vergessen, Ihre eigene Antwort zu akzeptieren, damit andere, die versuchen zu helfen, nicht anfangen, Fragen zu beantworten, zu prüfen oder zu kommentieren (was Ihnen nicht wirklich weiterhilft) fand bereits einen recht guten Weg, um dieses Problem zu debuggen).
Paul

Danke für die Rückmeldung. Anfangs dachte ich, die Frage mit einer Notiz zu posten, dass ich meine eigene Antwort posten würde, aber dann sah ich das Kontrollkästchen "Beantworte deine eigene Frage", also habe ich das stattdessen angekreuzt. Was das Akzeptieren angeht, darf ich 20 Stunden lang nicht. Es schien mir ein bisschen seltsam, Ihre eigene Antwort zu akzeptieren, aber das kann ich mit Sicherheit tun, wenn es mir gestattet ist. Ich habe eine Frage zu Meta Arduino gestellt. Was genau ist eine kanonische Frage? um zu versuchen, das richtige Verfahren zu erarbeiten, bekam aber keine Antworten.
Nick Gammon

@FuaZe und Nick Gammon: Dies scheint im Allgemeinen großartig zu sein. Der einzige Vorschlag, den ich machen würde, wäre, das Thema deutlicher zu machen, worum es bei der Frage und der Antwort wirklich geht. So wie es ist, könnte ich versucht sein, es als zu vage abzublasen. Möglicherweise lautet der Titel "Wie kann ich fehlgeschlagene Uploads beheben?"
Dlu

Antworten:


115

Es ist wahrscheinlich nicht gemauert

Ich habe ziemlich viele Arduinos und in den letzten Jahren habe ich immer nur eines "gemauert", und ich denke, das war durch Zappen mit statischer Elektrizität. Leider hatte dieser eine SMD (Surface Mounted) Prozessor-Chip, so dass es nicht einfach ist, ihn mit einem anderen Chip zu tauschen.

Bleib ruhig und versuche die folgenden Schritte ...


Beispiel Board

Ein "Arduino Uno" ist nicht nur eine Sache , die scheitern könnte. Es hat mehrere Hauptkomponenten und möglicherweise ist nur eine ausgefallen (falls vorhanden). Siehe dieses Referenzfoto:

Arduino Uno Hauptkomponenten

Hauptkomponenten sind:

  • Atmega16U2-Prozessor - Hier wird die Schnittstelle zum USB-Anschluss verwaltet
  • Atmega328P-Prozessor - Dies ist der "Haupt" -Prozessor, auf dem sich Ihre Skizze befindet
  • Spannungsregler - wandelt den ankommenden Strom von der Netzbuchse in 5 V um
  • Power LED (grün) - markiert mit "On"
  • Anzeige-LED (gelb) mit der Markierung "L" - über einen Operationsverstärker mit dem digitalen Pin 13 verbunden
  • Rx- und Tx-LEDs (gelb) - Diese zeigen an, ob der USB-Chip (Atmega16U2) empfängt oder sendet

Beachten Sie, dass die Rx- und Tx-LEDs nicht direkt mit den digitalen Pins 0 und 1 auf der Platine verbunden sind (mit Rx und Tx gekennzeichnet). Sie leuchten nur, wenn Sie eine serielle Kommunikation über USB durchführen , nicht, wenn Sie etwas (z. B. ein GPS) direkt an die digitalen Stifte 0 und 1 angeschlossen haben.

Da die "L" -LED über einen Operationsverstärker angeschlossen ist, leuchtet sie möglicherweise auf, wenn Pin 13 auf einen Eingang in Ihrer Skizze eingestellt ist. Das ist normal. Dies bedeutet nicht, dass Daten fälschlicherweise gesendet werden.


Überprüfen Sie die Stromversorgung

USB-Stromversorgung

  • Schließen Sie die Karte mit dem USB-Kabel an Ihren Computer an und überprüfen Sie, ob die grüne LED "On" leuchtet.

  • Verwenden Sie ein Multimeter und ein paar Überbrückungskabel, um zwischen dem 5-V-Pin und dem GND-Pin (unten mit einem Pfeil gekennzeichnet) zu testen. Sie sollten einen Messwert von ungefähr 5,0 V erhalten (ich habe 5,04 V an meinem).

(Sie können ein billiges Multimeter für etwa 10 US-Dollar kaufen, wenn Sie keines haben, aber es ist besser, wenn Sie für etwa 50 US-Dollar ein besseres kaufen - sehen Sie sich alle Elektronik-Websites und -Läden an.)

  • Testen Sie auch zwischen dem 3,3 V-Pin und dem GND-Pin - Sie sollten 3,3 V erhalten.

Wenn Sie mit eingestecktem USB-Kabel keine 5 V erhalten, stellen Sie sicher, dass das andere Ende an Ihren Computer angeschlossen ist. Probieren Sie auch ein anderes Kabel aus.

Stromanschluss

  • Wenn Sie den Stromanschluss (auf dem Foto mit "power in" gekennzeichnet) verwenden oder verwenden möchten, trennen Sie diesen vom USB-Anschluss und schließen Sie ein Netzteil an. Dieses sollte 7 bis 12 V DC betragen, wobei der Pluspol am mittleren Stift liegt.

  • Messen Sie die 5 V- und 3,3 V-Pins wie oben. Sie sollten immer noch die gleichen Spannungen an ihnen sehen.

Wenn Sie 5 V mit angeschlossenem USB, aber nicht mit dem Netzteil erhalten, ist der Spannungsregler (auf dem Foto markiert) wahrscheinlich beschädigt. Oder möglicherweise ist die Stromversorgung ausgefallen. Versuchen Sie es mit einem anderen Netzteil, um festzustellen, um welches es sich handelt.


Überprüfen Sie, ob die Einschalt-LED blinkt

Wenn Sie über den Optiboot-Bootloader verfügen (der Uno wird normalerweise mitgeliefert), und wenn Sie die Reset-Taste drücken und loslassen oder das USB- oder Netzkabel abziehen und wieder einstecken, sollte die "L" -LED dreimal schnell blinken. Die "Ein" - und "Aus" -Zeiten betragen jeweils 50 ms, die drei Blitze sollten innerhalb von etwa einer Drittelsekunde beendet sein.

Andernfalls liegt möglicherweise ein Problem mit dem Bootloader oder dem Hauptprozessorchip (Atmega328P) vor.


Laden Sie eine Skizze hoch

Wichtig: Wenn beim Hochladen von Skizzen Probleme auftreten, entfernen Sie alle angeschlossenen Geräte (z. B. Schutzschilde). Entfernen Sie auch die in die Platinenbuchsen eingesteckten Überbrückungskabel. Insbesondere sollte an den digitalen Pins 0 und 1 (Rx und Tx) nichts eingesteckt sein, da dies die Kommunikation mit dem hochladenden Computer stören würde.

Wählen Sie eine der einfachen Beispielskizzen (z. B. Blink) und versuchen Sie, sie hochzuladen. Das sollten Sie sehen:

  • Die LED "L" sollte dreimal blinken. Dies liegt daran, dass der Hauptchip durch einen Befehl vom Upload-Prozess zurückgesetzt wird.

  • Die LED "Rx" sollte schnell blinken. Dies sind die Anweisungen aus dem Upload-Prozess, mit denen versucht wird, den Bootloader zu aktivieren.

  • Die LED "Tx" sollte schnell blinken. Dies ist der Prozessor, der die hochgeladenen Daten bestätigt.

Möglicherweise wird das oben Gesagte angezeigt, auch wenn der Upload fehlschlägt. Dies kann daran liegen, dass der falsche Kartentyp ausgewählt wurde.

Wenn nur die LED "Rx" blinkt, liegt möglicherweise ein Problem mit dem Bootloader oder dem Hauptprozessorchip (Atmega328P) vor. Jemand klopft an, aber niemand ist zu Hause!

Überprüfen Sie den Kartentyp

Wenn die LEDs blinken, erhalten Sie jedoch eine Meldung wie die folgende:

avrdude: stk500_recv(): programmer is not responding

Überprüfen Sie den Kartentyp:

Board-Typ-Menü

Wenn Sie den falschen Board-Typ ausgewählt haben, werden wahrscheinlich die falschen Upload-Anweisungen gesendet, und es tritt eine Zeitüberschreitung oder ein sonstiger Fehler auf. Wenn Sie wie ich sind und verschiedene Boards herumliegen, können Sie leicht vergessen, dass der letzte Upload für einen anderen Board-Typ durchgeführt wurde.

Überprüfen Sie den Kommunikationsanschluss

Wenn die LEDs überhaupt nicht blinken, ist möglicherweise der falsche Kommunikationsanschluss ausgewählt.

Überprüfen Sie den Kommunikationsanschluss:

Kommunikationsanschluss-Menü

Probieren Sie nach Möglichkeit einen anderen PC / Mac aus

Probieren Sie Ihren Arduino auf einem anderen PC / Mac aus, wenn Sie einen zur Hand haben. Dies kann einschränken, ob Sie ein Problem mit dem Computer haben, an den Sie es angeschlossen haben, oder mit Computern im Allgemeinen.

Führen Sie einen Loopback-Test durch

  • Trennen Sie alle Abschirmungen und anderen Kabel
  • Entfernen Sie die Platine von der Stromversorgung
  • Schließen Sie ein Überbrückungskabel von RESET an GND an (orangefarbenes Kabel auf dem Foto).
  • Schließen Sie ein Überbrückungskabel von Rx an Tx an (weißes Kabel auf dem Foto).

Verdrahtung:

Loopback-Test

  • Stecken Sie das USB-Kabel ein und starten Sie ein Terminal-Programm - wie den Terminal-Monitor in der Arduino IDE. Geben Sie etwas ein und senden Sie es (z. B. drücken Sie die Eingabetaste im Terminal-Monitor).
  • Alles, was Sie eingeben, sollte wiedergegeben werden.

Wenn alles wiederholt wird: Dies bestätigt, dass Sie den richtigen Kommunikationsanschluss haben, das USB-Kabel in Ordnung ist und der USB-Schnittstellen-Chip (Atmega16U2) wahrscheinlich in Ordnung ist.

Wenn nichts zurückgesendet wird, überprüfen Sie:

  • Sie haben den richtigen Kommunikationsanschluss.
  • Probieren Sie ein anderes Kabel aus. Einige billige USB-Kabel haben nur Stromkabel und keine Datenkabel.
  • Überprüfen Sie, ob der Gerätetreiber für das Arduino installiert ist. Sie müssen dies wahrscheinlich nicht tun, wenn diese Karte zuvor auf diesem Computer funktioniert hat, aber es kann sich lohnen, dies zu tun, wenn Sie diese Karte zum ersten Mal in diesen Computer einstecken.

Testen Sie den Atmega16U2-Chip

Wenn Ihr Board den Loopback-Test nicht besteht und Sie sicher sind, dass das USB-Kabel in Ordnung ist, können Sie den Atmega16U2-Chip selbst testen. Auf der Platine befindet sich neben dem Atmega16U2-Chip und in der Nähe der USB-Buchse ein ICSP-Header (In Circuit Serial Programming).

Trennen Sie zuerst die Stromversorgung (ziehen Sie das USB-Kabel und ein eventuelles Stromkabel ab).

Dann können Sie den ICSP-Header über 6 Überbrückungsdrähte mit einem bekannten guten Uno verbinden, wie auf dem Foto gezeigt:

Testen Sie den Atmega16U2-Chip

Die Pinbelegungen für den ICSP-Header lauten (von oben):

ICSP-Header

Pin 1 auf dem ICSP-Header in der Nähe des Atmega16U2-Chips ist mit einem kleinen weißen Punkt in der Nähe des "F" in "AREF" gekennzeichnet. Pin 1 auf dem ICSP-Header in der Nähe des ATmega328P-Chips ist mit einem kleinen weißen Punkt unter dem "N" in "ON" gekennzeichnet.

Anschließen:

Good board         Target Uno

  MISO                MISO    (pin with dot - pin 1)
  VCC                 VCC
  SCK                 SCK
  MOSI                MOSI
  D10                 /RESET
  GND                 GND

Überprüfen Sie Ihre Verkabelung.

Installieren Sie dann auf der "als funktionierend bekannten" Karte die Skizze "Atmega_Board_Detector", wie auf der Atmega-Bootloader-Programmierseite beschrieben . Der Code ist bei GitHub - nickgammon / arduino_sketches . Wenn Sie auf dieser Seite auf die Schaltfläche Herunterladen klicken, erhalten Sie eine Reihe nützlicher Skizzen. Der von Ihnen gewünschte Name lautet "Atmega_Board_Detector".

Öffnen Sie nach der Installation den seriellen Monitor, stellen Sie ihn auf 115200 Baud ein, und Sie sollten ungefähr Folgendes sehen:

Atmega chip detector.
Written by Nick Gammon.
Version 1.17
Compiled on Jul  9 2015 at 08:36:24 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x94 0x89
Processor = ATmega16U2
Flash memory size = 16384 bytes.
LFuse = 0xEF
HFuse = 0xD9
EFuse = 0xF4
Lock byte = 0xCF
Clock calibration = 0x51
Bootloader in use: No
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 4096 bytes starting at 3000

Bootloader:

3000: 0x4B 0xC0 0x00 0x00 0x64 0xC0 0x00 0x00 0x62 0xC0 0x00 0x00 0x60 0xC0 0x00 0x00
3010: 0x5E 0xC0 0x00 0x00 0x5C 0xC0 0x00 0x00 0x5A 0xC0 0x00 0x00 0x58 0xC0 0x00 0x00
3020: 0x56 0xC0 0x00 0x00 0x54 0xC0 0x00 0x00 0x52 0xC0 0x00 0x00 0xEE 0xC4 0x00 0x00
...
3FE0: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
3FF0: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF

MD5 sum of bootloader = 0xD8 0x8C 0x70 0x6D 0xFE 0x1F 0xDC 0x38 0x82 0x1E 0xCE 0xAE 0x23 0xB2 0xE6 0xE7
Bootloader name: Arduino-dfu-usbserial-atmega16u2-Uno-Rev3

First 256 bytes of program memory:

0: 0x90 0xC0 0x00 0x00 0xA9 0xC0 0x00 0x00 0xA7 0xC0 0x00 0x00 0xA5 0xC0 0x00 0x00
10: 0xA3 0xC0 0x00 0x00 0xA1 0xC0 0x00 0x00 0x9F 0xC0 0x00 0x00 0x9D 0xC0 0x00 0x00
20: 0x9B 0xC0 0x00 0x00 0x99 0xC0 0x00 0x00 0x97 0xC0 0x00 0x00 0x48 0xC4 0x00 0x00
30: 0x0C 0xC4 0x00 0x00 0x91 0xC0 0x00 0x00 0x8F 0xC0 0x00 0x00 0x8D 0xC0 0x00 0x00
...

Wenn Sie jedoch eine Nachricht wie diese erhalten:

"Failed to enter programming mode. Double-check wiring!"

Dies scheint darauf hinzudeuten, dass Ihr ATmega16U2 nicht funktioniert.


Testen Sie den ATmega328P-Chip

Trennen Sie die Stromversorgung vom "bekannt guten" Arduino Uno und verdrahten Sie die ICSP-Jumper gemäß diesem Foto neu, um sie mit dem "Haupt" -Prozessor auf Ihrem Uno zu verbinden:

Testen Sie den ATmega328P-Chip

Die Pinbelegungen für den ICSP-Header lauten (von oben):

ICSP-Header

Pin 1 auf dem ICSP-Header in der Nähe des ATmega328P-Chips ist mit einem kleinen weißen Punkt unter dem "N" in "ON" gekennzeichnet.

Die Verkabelung ist dieselbe wie zuvor, außer dass Sie eine Verbindung zum anderen ICSP-Header herstellen - dem am Ende der Platine, am weitesten von der USB-Buchse entfernt.

Good board       Target Uno

  MISO                MISO    (pin with dot - pin 1)
  VCC                 VCC
  SCK                 SCK
  MOSI                MOSI
  D10                 /RESET
  GND                 GND

Sobald die Verbindung hergestellt ist, öffnen Sie den seriellen Monitor, und stellen Sie ihn auf 115200 Baud ein.

Atmega chip detector.
Written by Nick Gammon.
Version 1.17
Compiled on Jul  9 2015 at 08:36:24 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Bootloader in use: Yes
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 512 bytes starting at 7E00

Bootloader:

7E00: 0x11 0x24 0x84 0xB7 0x14 0xBE 0x81 0xFF 0xF0 0xD0 0x85 0xE0 0x80 0x93 0x81 0x00
7E10: 0x82 0xE0 0x80 0x93 0xC0 0x00 0x88 0xE1 0x80 0x93 0xC1 0x00 0x86 0xE0 0x80 0x93
...

MD5 sum of bootloader = 0xFB 0xF4 0x9B 0x7B 0x59 0x73 0x7F 0x65 0xE8 0xD0 0xF8 0xA5 0x08 0x12 0xE7 0x9F
Bootloader name: optiboot_atmega328

First 256 bytes of program memory:

0: 0x0C 0x94 0x35 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
10: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
20: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
30: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
...

In diesem Fall wird bestätigt, dass der Hauptprozessor funktioniert und der Optiboot-Bootloader darauf installiert ist.


Dinge, die Sie beheben können

Spannungsregler ausgefallen

Dies ist nicht einfach zu ersetzen, wird aber nur benötigt, wenn Sie den Netzstecker verwenden. Wenn Sie von USB ausführen, ist dies nicht erforderlich. Alternativ können Sie eine 4 bis 5 V-Versorgung (z. B. 3 x AA-Batterien) veranlassen und diese direkt an die 5 V-Buchse auf der Platine anschließen.


ATmega16U2-Chip ausgefallen

Dies ist nur zum Hochladen von Skizzen über den USB-Anschluss und zum seriellen Debuggen erforderlich. Der Austausch ist nicht besonders einfach, da es sich um ein SMD-Gerät (Surface Mounted Device) handelt. Sie können jedoch ohne es auskommen.

Sie können Skizzen über den ICSP-Header hochladen, wenn Sie ein ICSP-Programmiergerät erwerben.

Beispiele für solche Geräte, die an die ICSP-Buchse angeschlossen sind:

USBtinyISP

AVRISP

(Diese Fotos wurden von einem Ruggeduino gemacht, aber das Konzept ist das gleiche).


Sie können auch ein FTDI-Kabel wie folgt erwerben:

Verbinden Sie FTDI mit Arduino

Schließen Sie es wie folgt an die seriellen Anschlüsse Ihres Boards an:

FTDI-Kabel

FTDI    Arduino Uno

GND       GND  (black wire on FTDI cable, blue jumper wire)
CTS       not connected
VCC       5V
TxD       D0 (RX)
RxD       D1 (TX)
RTS       To RESET with a 0.1 µF capacitor in series with it (green wire)

Jetzt können Sie Skizzen unter Umgehung des USB-Chips direkt auf den Hauptprozessor hochladen.


Sie können auch meinen eigenständigen Atmega-Chip-Programmierer zum Hochladen von .hex-Dateien verwenden. Auf diese Weise können Sie die .hex-Datei für eine Skizze auf eine SD-Karte kopieren und die Karte dann über den ICSP-Header programmieren.


Fehler beim ATmega328P-Chip

Der Hauptprozessor kann ziemlich einfach ausgetauscht werden, wenn er in einen Sockel eingebaut ist. Holen Sie sich einen Ersatzchip von einem Ort wie Adafruit für etwa 6 US-Dollar. Alternativ können Sie auch eBay ausprobieren. Versuchen Sie, einen Chip zu bekommen, auf dem sich bereits der Optiboot-Bootloader befindet, um Ärger zu sparen.

Hebeln Sie den vorhandenen Chip vorsichtig aus dem Sockel und installieren Sie den neuen, wobei Sie die Position von Pin 1 beachten. Pin 1 weist eine Kerbe auf dem Chip auf. Die richtige Ausrichtung ist auf dem ersten Foto in diesem Beitrag mit einem gelben Strich angegeben Punkt (am nächsten an der Kante der Platine). Sie müssen wahrscheinlich die Beine etwas strecken. Halten Sie den Chip an den Enden und drücken Sie ihn vorsichtig auf eine ebene Fläche wie einen Schreibtisch, bis er etwas nach innen gedrückt wird. Versuchen Sie, die Metallstifte nicht zu berühren. Sie können sie mit statischer Elektrizität zappen.


ATmega328P antwortet, hat aber keinen Bootloader

Ich habe eine Skizze bei Atmega Bootloader Programmer, die den Optiboot Bootloader ersetzen wird. Die Verkabelung ist die gleiche wie bei der Chipdetektorskizze. Der Code ist bei GitHub - nickgammon / arduino_sketches . Wenn Sie auf dieser Seite auf die Schaltfläche Herunterladen klicken, erhalten Sie eine Reihe nützlicher Skizzen. Der von Ihnen gewünschte Name lautet "Atmega_Board_Programmer".

Installieren Sie die Skizze auf Ihrem "bekanntermaßen guten" Uno und verbinden Sie sie mit der zuvor gezeigten Verkabelung mit der Zielplatine.

Testen Sie den ATmega328P-Chip

Öffne den Serial Monitor auf deinem "guten" Uno und du solltest folgendes sehen:

Atmega chip programmer.
Written by Nick Gammon.
Version 1.35
Compiled on Jul  9 2015 at 15:06:58 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Type 'L' to use Lilypad (8 MHz) loader, or 'U' for Uno (16 MHz) loader ...

Geben Sie "U" für den Uno (Optiboot) -Lader ein.

Using Uno Optiboot 16 MHz loader.
Bootloader address = 0x7E00
Bootloader length = 512 bytes.
Type 'Q' to quit, 'V' to verify, or 'G' to program the chip with the bootloader ...

Geben Sie "G" ein, um den Chip zu programmieren.

Das solltest du sehen:

Erasing chip ...
Writing bootloader ...
Committing page starting at 0x7E00
Committing page starting at 0x7E80
Committing page starting at 0x7F00
Committing page starting at 0x7F80
Written.
Verifying ...
No errors found.
Writing fuses ...
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Done.
Programming mode off.
Type 'C' when ready to continue with another chip ...

Dies dauert ungefähr eine Sekunde. Nun ist der Bootloader installiert.


Watchdog-Timer-Probleme

Der Watchdog-Timer (standardmäßig deaktiviert) kann so konfiguriert werden, dass der Prozessor nach einer bestimmten Zeit zurückgesetzt wird. Die Absicht ist, sich von einem "Hang" eines im Feld eingesetzten Prozessors zu erholen. Wenn der Timer jedoch für einen kurzen Zeitraum (z. B. 16 ms) eingestellt ist, kann der Prozessor erneut zurückgesetzt werden, bevor der Bootloader die Möglichkeit hat, etwas zu tun.

Die Symptome sind, dass Sie keine neuen Skizzen hochladen können. Einige moderne Bootloader (wie Optiboot) unternehmen Schritte, um dieses Problem als eines der ersten Dinge zu beenden, die sie tun. Andere jedoch nicht.

Dies kann schwierig zu beheben sein, da beim Ausführen der Skizze das Problem auftritt, dass sie zurückgesetzt wird. Wenn das Problem auftritt, können Sie die Skizze nicht ersetzen. Die Leute berichten oft, dass sie einen neuen Bootloader brennen müssen, um sich zu erholen. Dies liegt jedoch nur daran, dass beim Brennen eines Bootloaders die aktuelle Skizze gelöscht wird.

Es gibt einen Weg, sich zu erholen. Gehen Sie folgendermaßen vor:

  • Schalten Sie die Karte vollständig aus (entfernen Sie das USB-Kabel).
  • Halten Sie die Reset-Taste gedrückt und halten Sie sie gedrückt (oder führen Sie ein Überbrückungskabel vom RESET-Pin zum GND-Pin). Dadurch wird der Start der Problemskizze und damit die Aktivierung des Watchdog-Timers verhindert
  • Halten Sie die Reset-Taste weiterhin gedrückt, und schließen Sie das USB-Kabel wieder an.
  • Laden Sie eine Skizze hoch, die dieses Problem nicht aufweist (z. B. Blinken).
  • Sobald die IDE "Uploading" meldet, lassen Sie die Reset-Taste los (oder entfernen Sie den Überbrückungsdraht).
  • Es sollte jetzt OK hochgeladen werden - da die Skizze, die den Watchdog-Timer aktiviert hat, nie gestartet wurde.

Probleme mit dem Mega2560-Upload

Ich erwähne dies hier, obwohl dieser Beitrag wirklich das Uno-Board betrifft, weil er ziemlich häufig ist.

Einige Versionen des Mega2560-Bootloaders suchen nach "!!!" Wechseln Sie beim eingehenden Upload vom PC in den Debugging-Modus. Dadurch schlägt der Upload fehl.

Beispielcode:

Serial.println ("Furnace overheating!!!");

Lösungen:

  • Installieren Sie einen neueren Bootloader. Meine "Bootloader-Uploader" -Skizze, die zuvor in dieser Antwort erwähnt wurde, sollte einen Bootloader installieren, der dieses Problem nicht aufweist.

Oder (einfacher):

  • Verwende nicht "!!!" in deiner Skizze.

Probleme beim Hochladen auf Leonardo / Micro / Esplora usw.

Boards mit dem ATmega32u4 als Hauptprozessor (und einzigem) können schwieriger zu laden sein. Dies liegt daran, dass derselbe Chip Uploads verarbeiten und auch Ihren Code ausführen muss.

Es gibt ein kleines Zeitfenster, in dem nach dem Zurücksetzen des Boards nach einer neuen Skizze gesucht wird, die hochgeladen werden soll. Die Technik zum Hochladen auf diese Boards ist:

  • Stellen Sie Ihre Skizze fehlerfrei zusammen.
  • Starten Sie den Upload
  • Sobald die IDE "Uploading" meldet, drücken Sie kurz die Reset-Taste.

Sie haben nur etwa eine Sekunde Zeit, bevor die alte Skizze ausgeführt wird. Lassen Sie sich nicht entmutigen, wenn Sie diesen Vorgang einige Male wiederholen müssen. Das ist normal.


Verweise


5
Beeindruckend. Dies ist eine großartige, großartige Antwort
rpax

1
Das ist eine wunderbare Antwort, Sir.
Mert Gülsoy

"Wenn Sie 5 V mit angeschlossenem USB, aber nicht mit dem Netzteil erhalten, ist der Spannungsregler (auf dem Foto markiert) wahrscheinlich beschädigt. Oder das Netzteil ist möglicherweise ausgefallen. Versuchen Sie, ein anderes Netzteil zu verwenden, um festzustellen, um welches es sich handelt . " - Warum könnten Sie dadurch keine Skizzen hochladen?
user2813274

Sie haben völlig recht, würde es nicht. Die Checkliste sollte jedoch eine allgemeine Checkliste für Fehler sein. In diesem Fall würde es eher lauten: "Ich kann eine Skizze hochladen, aber im Feldeinsatz mit einem Netzteil (Wall-Warze) funktioniert es nicht."
Nick Gammon

1
Ich hatte vor kurzem ein Problem mit den neuen FTDI-Treibern, die chinesische "FTDI-kompatible" (man könnte sagen Nachahmung) Chips "brocken". Sie setzen die PID des Geräts auf 0x0000, wodurch die Treiber ungültig werden. Sie können wählen, ob Sie die PID mit dem Tool M_PROG auf FTDI zurücksetzen oder die Treiber ändern möchten (und Fenster einrichten, um nicht verifizierte Treiber zuzulassen).
Paul

14

Zumindest, da ich davon ausgehe, dass Sie Ihre Skizze über avrdude hochladen, geben Sie bitte weitere Informationen zum Upload-Fehler an (z. B. Ausgabe des Skizzen-Uploaders), damit die Leute hier Ihnen besser helfen können.

Neben der großartigen Antwort von Nick Gammon suchen Sie in Ihrer Skizze nach Ausrufezeichen. Wenn Ihre Skizze eine Zeichenfolge mit mehr als oder gleich 3 Ausrufezeichen enthält, schlägt der Upload fehl, da alte Versionen des Arduino Bootloader diese Ausrufezeichen als eine andere Funktion interpretieren und der Upload angehalten wird.

Ein Beispiel zum Stoppen des Uploads:

char* test = "This will stop the upload!!!";

Siehe Google Code-Problem .


1
Guter Punkt. Dies gilt hauptsächlich für den Mega2560, aber ich gebe zu, dass ich das weggelassen habe. :)
Nick Gammon

1
Es wurde ein Abschnitt hinzugefügt, der sich mit diesem Problem befasst.
Nick Gammon

2

Ich habe 2x ATMega328P auf meinem Arduino Uno-Board aufgrund statischer Aufladung gemauert (glaube ich).

Die Statik scheint den TX-Pin zerstört zu haben und daher kann das Programm nicht über das USB-Kabel heruntergeladen werden.

Die einfachste Lösung ist der Austausch des Mikrocontrollers. Sie können ein neues ATMega328P-DIP kaufen, das mit dem Arduino-Bootloader ( wie diesem von Adafruit ) programmiert wurde, und sind wieder einsatzbereit.

Alternativ können Sie die ATMega328P weiterhin mit dem AVRISPmkII-Programmierer programmieren. Wenn Sie dies tun, funktionieren alle außer dem Tx-Stift einwandfrei.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.