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


von Joel (Gast)


Angehängte Dateien:

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:
1
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x15
2
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x15
3
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14
4
avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x02
5
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

von Frank (Gast)


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.

von Joel (Gast)


Lesenswert?

Hallo Frank

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

von Joel (Gast)


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:
1
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 
2
3
avrdude: Version 6.3-20171130
4
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
5
         Copyright (c) 2007-2014 Joerg Wunsch
6
7
         System wide configuration file is "C:\Users\Joel-\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14/etc/avrdude.conf"
8
9
         Using Port                    : COM5
10
         Using Programmer              : arduino
11
         Overriding Baud Rate          : 19200
12
         AVR Part                      : ATmega328P
13
         Chip Erase delay              : 9000 us
14
         PAGEL                         : PD7
15
         BS2                           : PC2
16
         RESET disposition             : dedicated
17
         RETRY pulse                   : SCK
18
         serial program mode           : yes
19
         parallel program mode         : yes
20
         Timeout                       : 200
21
         StabDelay                     : 100
22
         CmdexeDelay                   : 25
23
         SyncLoops                     : 32
24
         ByteDelay                     : 0
25
         PollIndex                     : 3
26
         PollValue                     : 0x53
27
         Memory Detail                 :
28
29
                                  Block Poll               Page                       Polled
30
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
31
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
32
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
33
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
34
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
35
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
36
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
37
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
38
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
39
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
40
41
         Programmer Type : Arduino
42
         Description     : Arduino
43
         Hardware Version: 2
44
         Firmware Version: 1.18
45
         Topcard         : Unknown
46
         Vtarget         : 0.0 V
47
         Varef           : 0.0 V
48
         Oscillator      : Off
49
         SCK period      : 0.1 us
50
51
avrdude: AVR device initialized and ready to accept instructions
52
53
Reading | ################################################## | 100% 0.00s
54
55
avrdude: Device signature = 0x000000 (retrying)
56
57
Reading | ################################################## | 100% 0.00s
58
59
avrdude: Device signature = 0x000000 (retrying)
60
61
Error while burning bootloader.
62
Reading | ################################################## | 100% 0.01s
63
64
avrdude: Device signature = 0x000000
65
avrdude: Yikes!  Invalid device signature.
66
         Double check connections and try again, or use -F to override
67
         this check.
68
69
70
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

von Einer K. (Gast)


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.

von Joachim B. (jar)


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.

von Einer K. (Gast)


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.

von Joachim B. (jar)


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

von Einer K. (Gast)


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)

von Joachim B. (jar)


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
von Einer K. (Gast)


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

von Joachim B. (jar)


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.

von Einer K. (Gast)


Angehängte Dateien:

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

von Joachim B. (jar)


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
von Joel (Gast)


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.

von Joachim B. (jar)


Angehängte Dateien:

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
von Einer K. (Gast)


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

von Joel (Gast)


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?

von Einer K. (Gast)


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".

von Joachim B. (jar)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.