Vor einigen Tagen hatte ich es irgendwie geschafft, mein Leonardo Board zu killen. Der USB COM-Port war sowohl in meiner Arduino IDE als auch mit allen anderen Tools vom PC aus nicht mehr erreichbar. Bei der Programmierung eines Sketches hatte ich vermutlich einmal ein falsches Board gewählt, zum falschen Zeitpunkt das USB-Kabel vom Leonardo gezogen oder irgendetwas ähnlich Ungeschicktes getan. Die LEDs auf dem Board blinkten vom letzten Sketch zwar noch vor sich hin, aber ansonsten war das Board nicht mehr zu gebrauchen, da über USB schlichtweg nicht mehr zu erreichen. Da auch Google mir erst einmal nicht weiterhalf, legte ich alles an die Seite, bis heute.
Da ich schon mehrfach für diverse Barebones den Bootloader eines auf dem Arduino Uno basierenden Atmega328 Controllers mit meinem Uno geflasht hatte, hoffte ich beim Leonardo ähnlich vorgehen zu können. Und tatsächlich funktioniert es ähnlich.
Acht Schritte
1. Wir verbinden den PC über ein USB-Kabel mit unserem Arduino Uno, den wir gleich als sogenannten ISP (In-System-Programmer) verwenden werden. In der Arduino IDE (bei mir Release 1.0.5) finden wir unter Datei und Beispiele den passenden Sketch ArduinoISP.
2. Als nächstes wählen wir unter Tools und Board unseren Arduino Uno aus, der nun in Kürze den Serial Peripheral Interface (SPI) Programmer spielen darf. Weiterhin muss im Menü unter Tools und Serieller Port natürlich der richtige COM-Port ausgewählt werden.
3. Als nächstes den Programmer-Sketch über Datei und Upload oder das entsprechende Upload-Symbol auf das Uno-Board hochladen.
4. Nachdem wir die USB-Verbindung und ggf. auch die Stromversorgung des Arduino UNO wieder getrennt haben, erfolgt die Verkabelung mit dem zu programmierenden LEONARDO. Dazu habe ich in den Sparkfun Tutorials nebenstehendes anschauliches Bild gefunden, dass die Positionen der ggf. vorhandenen ICSP-Header eines UNOs beschreibt. Links oben ist der ICSP-Header (In-Circuit Serial Programming) des USB-Controllers zu finden, rechts außen der des embedded Controllers Atmega328 oder wie beim Leonardo der Atmega32U4. Der 6-Pin ICSP-Header des LEONARDO muss nun mit dem UNO SPI-Programmer verbunden werden. Links in nachfolgendem Bild ist der UNO als Programmer zu sehen, rechts davon wird unser LEONARDO werden, dessen Bootloader neu geflasht werden soll.
In meinem Testaufbau sieht das wie folgt aus:
Auch hier links auf dem Foto ist der UNO zu sehen, der nun als SPI-Programmer fungiert. Rechts davon der LEONARDO, der über den 6-Pin ICSP-Header mit dem Bootloader programmiert werden soll. Beim LEONARDO ist unbedingt zu beachten, dass das SPI-Interface nicht über die üblichen Digital Pins D11 , D12 und D13 herausgeführt ist, sondern nur über den 6-poligen ICSP-Header!
Der 6-Pin ICSP-Header hat generell die folgende Belegung.
.
Arduino as ISP AVR Programmer ISP Header ATmega328 ATmega32U4 ATmega2560
Vcc/5V 5V Pin 2 Vcc Vcc Vcc
GND GND Pin 6 GND GND GND
MOSI/D11 MOSI Pin 4 D11 D16 Pin 51
MISO/D12 MISO Pin 1 D12 D14 Pin 50
SCK/D13 SCK/CLK Pin 3 D13 D15 Pin 52
D10 Reset Pin 5 Reset Reset Pin 53
5. Nach der SPI-Verkabelung des LEONARDO mit dem UNO stellen wir den USB-Anschluss zum PC wieder her.
6. Als nächstes müssen wir entscheiden, welcher Bootloader auf unser LEONARDO Board geladen wird. Dazu wählen wir einfach unter Tools und Board den LEONARDO aus. Zur Sicherheit überprüfen wir auch gleich noch den COM-Port. Dieser muss dem UNO ISP-Programmer entsprechen.
6. Unter Tools und Programmer wählen wir als nächstes den Menüpunkt Arduino as ISP aus. Damit wird der UNO nun als Programmer ausgewählt.
7. Nun müssen wir nur noch unter Tools den Punkt Bootloader installieren auswählen. Die LED an Pin 13 wie auch die beiden RX/TX LEDs auf dem UNO blinken nun eine ganze Weile. Dann erfolgt die Meldung in der Arduino IDE: „Bootloader wurde installiert“. Das war es bereits. Die LED auf dem LEONARDO sollte nun im Sekundentakt blinken.
8. Optional können an die Arduino Uno Digital Pins D7, D8 und D9 noch LEDs über entsprechende Vorwiderstände (330 Ohm) angeschlossen.
DANKE!!!
Vielen Dank hat Super funktioniert 😉
Vielen Dank!
Hat auf meinem gebricktem Arduino Micro prima funktioniert und ihn wieder zum Leben erweckt.
Nur die Pin Belegung für den ICSP am Micro war zuerst etwas verwirrend. Offenbar ist die Seite mit dem Micro USB Anschluss OBEN. Das sollte beim anschließen der ICSP Pins an den ISP Arduino beachtet werden.
Ich habe mich zunächst vom aufgedruckten „ICSP“ verwirren lassen und es falsch herum angeschlossen. Hat dem Board zwar nicht geschadet, aber hat eben auch nicht funktioniert. 😉
Hallo,
(falls hier noch jemand ist), ich bekomme beim Anklicken von „Bootloader brennen“ eine Fehlermeldung:
„Fehler beim Brennen des Bootloaders
avrdude: stk500_getsync(): not in sync: resp=0x00“
Ansonsten habe ich alles so gemacht, wie es in der feinen Beschreibung aufgeführt ist.
Gibt es eine Lösung für mein Problem?
Vielen Dank!
Ich habe mich auch an die tolle Anleitung hier gehalten und hatte dann auch Fehlermeldungen wie etwa diese hier:
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x01
Das Problem ließ sich beheben, indem ich auf dem als ISP verwendeten Arduino Uno einen 10uF-Kondensator zwischen Reset und GND angeschlossen habe. Das Problem tritt unter Linux auf, weil dort das erste Ansprechen der seriellen Schnittstelle via USB zum Reset des Arduino (hier des ISP) führt (glaube ich zumindest). Unter Windows sollte das Problem nicht auftreten. Der Kondensator verhindert den Reset und dann hat es auch bei mir geklappt.
Danke,
Hat alles Super funktioniert ich hab´s mit dem Arduino Uno gemacht. Also mit dem Arduino Uno den Bootloader von nem Arduino Uno aufgesetzt.
Nochmal vielen Danke!
Der Arduino Leonardo kann man auch noch über den „Arduino Leonardo bootloader“ USB-Gerät retten. Ich hatte meinen Leonardo leider auch in „den Tod“ geschickt .. aber wusste das der Leonardo sich zu allererst mit dem oben genannten USB-Gerät anmeldet (einfach mal im Geräte-Manger unter Windows die ausgeblendeten Geräte anzeigen lassen, dann sieht man es). Zum retten einfach den Leonardo resetten und auf „Port“ im Arduino-IDE achten, dort taucht der Leonardo Bootloader auf und verschwindet dann gleich wieder, danach taucht der normale Leonardo auf. Also einen leeren Sketch erstellen, Leonardo resetten und wenn der Bootloader im IDE auftaucht den auswählen. Dann nochmal resetten und Ctrl+U (upload) im IDE drücken, klappt vielleicht nicht beim allerersten mal, evtl. etwas später Ctrl+U drücken, aber spätestens nach dem dritten versuch sollte der Leonardo gerettet sein. 😀
Vielen Dank! Hab somit mein totgeglaubtes Board wiederbeleben können.
Als Arduino Einsteiger den LEONARDO Bootloader offensichtlich gleich geschrottet. Dank dieser Anleitung konnte ich die Platine wiederbeleben! Der COM-Port wurde nun auch endlich wieder erkannt und die Kommunikation mit der IDE klappt
nach einem einmaligen Rest tadellos. I’m happy. Vielen Dank an dieser Stelle.