mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bootloader über Arduino auf Atmega328


Autor: Joel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Ich habe probiert den Arduino Bootloader auf einen Atmega328 zu flashen.
Dafür habe ich das Arduino ISP Example auf einen Arduino Nano geladen, 
den Programmer auf Arduino as ISP umgestellt und Burn Bootloader 
gedrückt.

Leider bekomme ich diese Fehlermeldungen:
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x15
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x15
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x02
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x10

Ich weis leider nicht von wo der Fehler kommt. Ich habe alle 
verbindungen x-mal überprüft. Als Taktgeber habe ich einen 16MHz Quarz 
von einem Arduino UNO geklaut und ich habe 22pF Lastkapazität (in 
Kondesatoren).

Im Anhang findet ihr das gesammte Schema meines Projektes, jedoch ist 
nur der Mikrocontroller Teil interessant da der Rest nicht aufgebaut 
ist. Weiter wird der Atmega vom Arduino und nicht über USB gespiesen.

Schon mal danke für die Hilfe!!

Gruss
Joel

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

hast du bei deinem Nano (dem Programmer) einen Kondensator (10uF) 
zwischen Reset und Ground?

Das fehlen desselben hat bei mir zu genau dem beschriebenen Effekt 
geführt.

Autor: Joel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Frank

Nein den habe ich nicht.... Ich werde das austesten wenn ich zuhause 
bin. :)

Autor: Joel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Leider muss ich diesen Thread wiederbeleben.

Zuerst aber vielen dank an Frank. Dein Tipp hat mich ganz wenig weiter 
gebracht:)

Also ich wollte nun wieder versuchen den Bootloader auf meinen ATMEGA zu 
laden, aber nun krieg ich den fehler: avrdude: Device signature = 
0x000000 (retrying)

genau:
C:\Users\Joel-\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14/bin/avrdude -CC:\Users\Joel-\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14/etc/avrdude.conf -v -patmega328p -carduino -PCOM5 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDA:m -Ulfuse:w:0xFF:m 

avrdude: Version 6.3-20171130
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\Joel-\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14/etc/avrdude.conf"

         Using Port                    : COM5
         Using Programmer              : arduino
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x000000 (retrying)

Error while burning bootloader.
Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Ich habe im Internet gelesen es könnte an der verkabelung oder an einem 
falschen takt liegen.

Die verkabelung sollte richtig sein. Hab alles 10x überprüft.
Den Quarz und die Kondesatoren habe ich von einem Arduino Uno geklaut, 
somit sollten die auch die richtigen sein.

Was könnte sonnst noch falsch sein??

P.S. Ich habe #define USE_OLD_STYLE_WIRING ausgeklammert da ich den ISP 
Stecker auf dem Arduino benutze

Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joel schrieb:
> Den Quarz und die Kondesatoren habe ich von einem Arduino Uno geklaut,

Der originale UNO ist mit einem Resonator ausgerüstet. kein Quarz.
Zusätzliche Kondensatoren sind für den Resonator nicht nötig.

Laut deinem Plan ist Pin 22 des ATMega328P nicht angeschlossen.
Warum?
Und Aref hast du auf GND gelegt! Das gibt Rauch.

Joel schrieb:
> P.S. Ich habe #define USE_OLD_STYLE_WIRING ausgeklammert da ich den ISP
> Stecker auf dem Arduino benutze
Wieso?
Welche Füchse jagen dich da?

Verwende das originale, unveränderte "Arduino as ISP" Programm!
Und natürlich kannst du dann den ISP Stecker verwenden.
Nur die Resetleitung braucht eine Extrawurst.

Autor: Joachim B. (jar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein ATmega wird mit internen Clock 8MHz und clk/div 8 geliefert.

1. mal die Fuses setzen clk/div 8 raus,
2. wenn der wirklich am 16 MHz sitzt dann darf man auf ext. Clock 
umstellen, sonst passt das HEX ja vom Bootloader nicht.

Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ihm möchte den Bootloader aufspielen.
Dabei werden alles Fuses richtig gesetzt.

Der ISP Takt ist dabei so gewählt, dass auch fabrikneue 1MHz AVRs 
beschreiben werden können.

Autor: Joachim B. (jar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Arduino Fanboy D. schrieb:
> Ihm möchte den Bootloader aufspielen.
> Dabei werden alles Fuses richtig gesetzt.
>
> Der ISP Takt ist dabei so gewählt, dass auch fabrikneue 1MHz AVRs
> beschreiben werden können.

hmmm, das wusste ich nicht, im Atmel Studio muss

ich erst mal reinkommen, also ISP clk runterstzen!
dann muss
ich brav die Reihenfolge für die Fuse einhalten, erst Fuse clk/div8 
raus, ext. clock 8- wählen bevor ich anfange mir den zu "verfusen"
dann gehts weiter je nach bootloader words reservieren und bootrst 
setzen

dann kann ich erst das Programm die .hex hochladen
bis jetzt immer nur bootloder, denn wenn der aktiv ist benötige ich den 
ISP ja nicht mehr.

Wenn es über Arduino als ISP leichter ist OK, aber ich dachte er kopiert 
nur seinen eigenen und ich wollte "meinen" (optiboot, modifiziert) 
programmieren

Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> Wenn es über Arduino als ISP leichter ist OK,

Ja, es ist sehr leicht.
Wenn denn der Programmieradapter funktioniert und die Verkabelung 
stimmig ist.

Die Arduino IDE, bzw. der Builder erzeugt eine Handvoll Avrdude Aufrufe.

Da kann man kaum was falsch machen, da keine Einflussmöglichkeiten.
(außer natürlich: Man kann die Konfigurationsdateien verpfuschen)

: Bearbeitet durch User
Autor: Joachim B. (jar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Arduino Fanboy D. schrieb:
> Ja, es ist leicht!
> Wenn der Programmieradapter funktioniert.
> Und die Verkabelung stimmig ist.

aber ob der nur seinen eigenen (aus sich selber oder aus dem Arduino 
Ordner) kopiert sagst du nicht:

Joachim B. schrieb:
> Wenn es über Arduino als ISP leichter ist OK, aber ich dachte er kopiert
> nur seinen eigenen und ich wollte "meinen" (optiboot, modifiziert)
> programmieren

: Bearbeitet durch User
Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> aber ob der nur seinen eigenen (aus sich selber oder aus dem Arduino
> Ordner) kopiert sagst du nicht:

Achso ....
Welcher Bootloader gebrannt wird, ist (ebenso wie die Fuses) in der 
jeweiligen boards.txt fest geschrieben.
Der Bootloader gehört zum Lieferumfang der Arduino IDE.

Das bedeutet:
Wenn du einen selbst modifizierten Bootloader mit der Arduino IDE auf 
einen AVR schreiben willst, musst du vorher eine eigene Boarddefinition 
erzeugen, oder eine bestehende modifizieren.

Ist alles möglich und einigermaßen gut beschrieben:
https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification

Autor: Joachim B. (jar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Arduino Fanboy D. schrieb:
> Achso ....
> Welcher Bootloader gebrannt wird, ist (ebenso wie die Fuses) in der
> jeweiligen boards.txt fest geschrieben.
> Der Bootloader gehört zum Lieferumfang der Arduino IDE.

eben und ich suche mir jedesmal einen wolf welche board.txt gilt, bzw. 
welche die IDE verwendet, durch die Umstellung gibt es bei mir 
verschiedene Pfade, am home PC nutze ich das NAS, aber unterwegs habe 
ich keinen Zugriff also die lokale auf D: und am PI finde ich die nicht 
mal.

Ich suche dann immer bis ich meine modifizierte finde (die mit mehr nano 
328p Einträge) und versuche diese solange einzusetzen bis es in der IDE 
wählbar ist.

Diese ehmalige Arduino.15 nervt mich, man weiss nie wo man suchen soll, 
noch schlimmer wenn ESP und Co. dazu kommen.

Autor: Arduino Fanboy D. (ufuf)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm...
Ausführliche Ausgaben aktivieren, dann zeigts dir welche Definitionen, 
Pfade, Libraries und Tools verwendet werden.
Das erste Bild zeigt die Default Einstellungen.
Das zweite die richtigen Einstellungen für ausführliche Ausgaben.

Ich kann dir zur portablen Installation raten!
Dann verteilt sich das nicht über das ganze System.
https://www.arduino.cc/en/Guide/PortableIDE

: Bearbeitet durch User
Autor: Joachim B. (jar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Arduino Fanboy D. schrieb:
> Ich kann dir zur portablen Installation raten!

das war ja mein Wunsch, hatte aber bei mir irgendwie nicht geklappt.
Ich hatte ja vor 1.8.x die 1.0.5 erweitert mit mighty mini 1284p und 
danach fand ich den Ansatzpunkt nicht mehr wo eintragen.

Deinstallieren suchen & löschen hat auch nicht geholfen, irgendwo gab es 
noch alte Einträge die wieder alles verdarben.

Ich bin immer noch ein Arduino DAU oder Noob, am PI finde ich nicht mal 
die boards.txt weil es rekursive Dateien gibt wo der pcmanfm in einer 
Endlosschleife stehenbleibt.

: Bearbeitet durch User
Autor: Joel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Info @Arduino Fanboy D.



Arduino Fanboy D. schrieb:
> Der originale UNO ist mit einem Resonator ausgerüstet. kein Quarz.
> Zusätzliche Kondensatoren sind für den Resonator nicht nötig.

Ich denke mal das sollte dem nicht schaden?? Ich mein die Kondensatoren 
waren mit den Resonator auf dem Arduino Uno verbunden.

Arduino Fanboy D. schrieb:
> Laut deinem Plan ist Pin 22 des ATMega328P nicht angeschlossen.
> Warum?

Weil ich die "32 MLF" Version habe und nicht die "PDIP". Bei mir ist Pin 
22 wie beschrieben AD7 und nicht Ground.

Arduino Fanboy D. schrieb:
> Verwende das originale, unveränderte "Arduino as ISP" Programm!
> Und natürlich kannst du dann den ISP Stecker verwenden.
> Nur die Resetleitung braucht eine Extrawurst.

Mach ich ja. Das ist die Version welche mit Arduino Studio 1.8.7 
mitkommt.

Arduino Fanboy D. schrieb:
> Und Aref hast du auf GND gelegt! Das gibt Rauch.

https://www.arduino.cc/en/uploads/Main/Arduino_Nano-Rev3.2-SCH.pdf

Im arduino Nano Schema ist er auch auf Ground. Weiter habe ichs gerade 
auf Vcc gelegt und fast mein USB Port damit kaputt gemacht.

Autor: Joachim B. (jar)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Joel schrieb:
> https://www.arduino.cc/en/uploads/Main/Arduino_Nano-Rev3.2-SCH.pdf
>
> Im arduino Nano Schema ist er auch auf Ground

wo denn?
jedenfalls nicht im Link!

nicht mal hier

: Bearbeitet durch User
Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joel schrieb:
> Weiter habe ichs gerade auf Vcc gelegt

Das ist genau so falsch!

Entweder offen lassen, oder einen Kerko dran.
(evtl auch eine externe Referenz, aber nur wenn nötig)

-------

Joel schrieb:
> Ich denke mal das sollte dem nicht schaden?? Ich mein die Kondensatoren
> waren mit den Resonator auf dem Arduino Uno verbunden.
Der Resonator verträgt keine externen Kondensatoren.

Also hattest du wohl keinen originalen UNO, sondern einen mit Quarz

: Bearbeitet durch User
Autor: Joel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> Joel schrieb:
>> https://www.arduino.cc/en/uploads/Main/Arduino_Nano-Rev3.2-SCH.pdf
>>
>> Im arduino Nano Schema ist er auch auf Ground
>
> wo denn?
> jedenfalls nicht im Link!

OK sorry da habe ich mich falsch ausgedrückt. Aber mein AREF ist auch 
mit einem 100nf verbunden wenn jmd sich mein Schema genauer anschauen 
würde.
Ich habe @Arduino Fanboy Dso verstanden das der Kondensator nicht an GND 
gehen muss.

Trotzallem ich bekomms immernochnicht hin den Bootloader auf den ATMEGA 
zu flashen.

Hier mal meine vorgehensweise:
-Alle Kabel vom Arduino ausstecken
-Arduino mit einer leeren darei wipen (In dem Arduino IDE auf File-> New 
und dann draufladen)
-Arduino ISP draufladen (Board:Arduino Nano, Processor Atmega328p (Old 
bootloader), Programmer AVR ISP)
-Wenn das draufgeladen ist kabel zu meinem Board auf den Arduino ISP 
Connector stecken
-Programmer auf "Arduino as ISP" stellen
-Zuletzt "Burn Bootloader" clicken

Ist in diesem Vorgang was falsch?

Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joel schrieb:
> OK sorry da habe ich mich falsch ausgedrückt. Aber mein AREF ist auch
> mit einem 100nf verbunden wenn jmd sich mein Schema genauer anschauen
> würde.
> Ich habe @Arduino Fanboy Dso verstanden das der Kondensator nicht an GND
> gehen muss.

Ja, das mit dem Gehäuse habe ich verpatzt.
Ignoriere bitte meine falschen Ansagen.

Denn:
Joel schrieb:
> Weil ich die "32 MLF" Version habe und nicht die "PDIP".

Autor: Joachim B. (jar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joel schrieb:
> -Programmer auf "Arduino as ISP" stellen
> -Zuletzt "Burn Bootloader" clicken

ich sehe zu keiner Zeit wie du den ISP Clock passend einstellst
aber nach Lesen von
https://www.heise.de/make/artikel/Microcontroller-flashen-Arduino-Uno-als-In-System-Programmer-2769246.html

ist das wohl in der IDE berücksichtigt?

sonst würde es mit intern 8MHz und div8 nicht klappen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.