Kochbuch LEONARDO Bootloader flashen

 

 

 

 

 

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. Leonardo_FrontDa 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 SchritteSketch Arduino ISP

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ächstArduino_ICSP_Headeres 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-ProgrammerArduino_6Pin_ICSP_Header 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:

Testaufbau_588x331

 

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, da6Pin_ICSP_Pinoutss 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 Bootloader installiertdem 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.

Arduino  Funktion
D7           Heartbeat
D8           Error
D9           Programming