Forum: Mikrocontroller und Digitale Elektronik Makefile für Atmega2560 mit AVRdude klemmt


von Matthias W. (matt007)


Lesenswert?

Mit der Arduino-Umgebung (arduino-1.6.12-windows.exe) lässt sich unter 
Win7 64bit der LED-Blinker auf die mega2560 R3-Platine laden. Es blinkt 
korrekt. Die Hardware und die Verbindung geht also.

Zur normalen Arbeit soll WinAVR-20100110 verwendet werden mit Makefile. 
Dieser Weg funktioniert mit ATmega328p.

Das Makefile wurde angepasst für mega2560. "Make program" erzeugt ein 
main.hex. Die folgende Zeile im Makefile soll main.hex programmieren:
avrdude -v -v -v -v -p m2560 -c arduino -P COM10 -b 57600 -l log.txt -U 
flash:w:main.hex

Es sind Meldungen eingeschaltet (-v -v -v -v). Der Ladevorgang schlägt 
fehl. In log.txt steht:

avrdude: Version 6.3, compiled on Sep 12 2016 at 17:24:16
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is 
"C:\WinAVR-20100110\bin\avrdude.conf"

         Using Port                    : COM10
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600
avrdude: Send: 0 [30]   [20]
avrdude: Send: 0 [30]   [20]
avrdude: Send: 0 [30]   [20]
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xad
avrdude: Send: 0 [30]   [20]
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xad
avrdude: Send: 0 [30]   [20]
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xad
avrdude: Send: 0 [30]   [20]
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xad
avrdude: Send: 0 [30]   [20]
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xad
avrdude: Send: 0 [30]   [20]
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xad
avrdude: Send: 0 [30]   [20]
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xad
avrdude: Send: 0 [30]   [20]
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xad
avrdude: Send: 0 [30]   [20]
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xad
avrdude: Send: 0 [30]   [20]
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xad

avrdude done.  Thank you.

avrdude.exe und avrdude.conf wurden auf Stand 2016 gebracht.

Im Netz sind Hinweise zu finden wie:
https://stackoverflow.com/questions/19765037/arduino-sketch-upload-issue-avrdude-stk500-recv-programmer-is-not-respondi
"none of my attempts are working and they result in the same error every 
time I try it - avrdude: stk500_recv(): programmer is not responding."
"when uploading, you can see avrdude sending three packets avrdude: 
Send: 0 [30]   [20] (with corresponding RX flashes on the board) right 
before the avrdude: ser_recv(): programmer is not responding error."

"The trick is to hit the reset button on the board immediately before 
these three packets are sent. Then the program will be uploaded 
successfully."

Es ist von einem Trick die Rede den Reset-Knopf zur richtigen Zeit zu 
drücken. Leider klappte ein Test damit nicht.

Da das Laden mit der Arduino-Umgebung klappt und das Laden per Makefile 
mit dem ATmega328p klappt müsste der mega2560 doch auch mit Makefile 
klappen?

Was habe ich übersehen?

Matthias

von Einer K. (Gast)


Lesenswert?

Matthias W. schrieb:
> Was habe ich übersehen?

Aktiviere die ausführlichen Ausgaben der Arduino IDE und schaue dir dann 
das AVRDUDE Kommando an.
Gleiche die Differenzen aus.

Dann sollte es auch mit deinem make gelingen.

von Matthias W. (matt007)


Lesenswert?

Arduino Fanboy D. schrieb:
> Aktiviere die ausführlichen Ausgaben

Danke für den Hinweis !

von Stefan F. (Gast)


Lesenswert?

Vielleicht musst du die Baudrate auf 115200 ändern, das braucht der neue 
Arduino Bootloader.

von Halb Wissender (Gast)


Lesenswert?

Matthias W. schrieb:
> Was habe ich übersehen?

Kein Bootloader auf dem mega2560 oder (Boot-) Fuses nicht korrekt.

von Stefan F. (Gast)


Lesenswert?

Halb Wissender schrieb:
> Kein Bootloader auf dem mega2560 oder (Boot-) Fuses nicht korrekt.

Dann würde es mit der Arduino IDE auch nicht funktionieren. Tut es aber, 
laut Eröffnungsbeitrag.

von Halb Wissender (Gast)


Lesenswert?

Matthias W. schrieb:
> Die folgende Zeile im Makefile soll main.hex programmieren:
> avrdude -v -v -v -v -p m2560 -c arduino -P COM10 -b 57600 -l log.txt -U
> flash:w:main.hex

Nach eigenem Ausprobieren müsste das hier funktionieren, (tut
es jedenfalls bei mir):

avrdude -Cavrdude.conf -v -patmega2560 -cwiring -PCOM14 -b115200 -D 
-Uflash:w:default/MyHexFile.hex:i

Entscheidend / unterscheidend hier dass eine Datei avrdude.conf
präsent sein muss sowie der Parameter -cwiring.

Auf meinem Test-Arduino ist der Bootloder

stk500boot_v2_mega2560.hex

drauf.

von Matthias W. (matt007)


Lesenswert?

Stefanus F. schrieb:
> Vielleicht musst du die Baudrate auf 115200 ändern, das braucht der neue
> Arduino Bootloader.

Danke Stefanus für den wertvollen Hinweis !

es klappt nun !

in der Zeile die die Arduino-Umgebung erzeugt hat steht tatsächlich 
115200. Ich kann schauen was passiert wenn ich das reduziere.

von Matthias W. (matt007)


Lesenswert?

Halb Wissender schrieb:
> Entscheidend / unterscheidend hier dass eine Datei avrdude.conf
> präsent sein muss sowie der Parameter -cwiring.

Danke !

Es geht bei mir auch ohne den Hinweis auf avrdude.conf.

Der Parameter -cwiring könnte entscheidend sein, falls es nicht die 
115kbd sind. Das kann ich noch testen.

von Einer K. (Gast)


Lesenswert?

Matthias W. schrieb:
> in der Zeile die die Arduino-Umgebung erzeugt hat steht tatsächlich
> 115200. Ich kann schauen was passiert wenn ich das reduziere.
Da gibts nichts zu probieren!
Die Kröte ist widerspruchslos zu schlucken.

von Matthias W. (matt007)


Lesenswert?

Arduino Fanboy D. schrieb:
> Die Kröte ist widerspruchslos zu schlucken.

eine Kröte ist das ja nicht. Es ist ja ok wenns auch schnell geht.

von Joachim B. (jar)


Lesenswert?

Arduino Fanboy D. schrieb:
> Die Kröte ist widerspruchslos zu schlucken.

Matthias W. schrieb:
> eine Kröte ist das ja nicht. Es ist ja ok wenns auch schnell geht.

zuerst fand ich das neue Tempo ja toll, aber als mein wUSB nicht mehr 
ging eher weniger!

Ergo habe ich bei allen nanos Optiboot auf 57k6 wieder reduziert, was 
nutzt schnell wenn es u.U. anderswo klemmt.

So habe ich nun 4 Auswahlmöglichkeiten:
1
## Arduino Nano w/ ATmega328P (new boot full mem low upload)
2
## --------------------------
3
nano.menu.cpu.atmega328fullmemlowup=ATmega328P (New Boot Full Mem Low Upload)
4
5
nano.menu.cpu.atmega328fullmemlowup.upload.maximum_size=32256
6
nano.menu.cpu.atmega328fullmemlowup.upload.maximum_data_size=2048
7
nano.menu.cpu.atmega328fullmemlowup.upload.speed=57600
8
9
nano.menu.cpu.atmega328fullmemlowup.bootloader.low_fuses=0xFF
10
nano.menu.cpu.atmega328fullmemlowup.bootloader.high_fuses=0xDE
11
nano.menu.cpu.atmega328fullmemlowup.bootloader.extended_fuses=0xFD
12
nano.menu.cpu.atmega328fullmemlowup.bootloader.file=optiboot/optiboot_atmega328.hex
13
14
nano.menu.cpu.atmega328fullmemlowup.build.mcu=atmega328p
15
16
## Arduino Nano w/ ATmega328P (new bootloader full mem)
17
## --------------------------
18
nano.menu.cpu.atmega328fullmem=ATmega328P (New Bootloader Full Mem)
19
20
nano.menu.cpu.atmega328fullmem.upload.maximum_size=32256
21
nano.menu.cpu.atmega328fullmem.upload.maximum_data_size=2048
22
nano.menu.cpu.atmega328fullmem.upload.speed=115200
23
24
nano.menu.cpu.atmega328fullmem.bootloader.low_fuses=0xFF
25
nano.menu.cpu.atmega328fullmem.bootloader.high_fuses=0xDE
26
nano.menu.cpu.atmega328fullmem.bootloader.extended_fuses=0xFD
27
nano.menu.cpu.atmega328fullmem.bootloader.file=optiboot/optiboot_atmega328.hex
28
29
nano.menu.cpu.atmega328fullmem.build.mcu=atmega328p
30
31
## Arduino Nano w/ ATmega328P (new bootloader old mem)
32
## --------------------------
33
nano.menu.cpu.atmega328=ATmega328P (New Bootloader Old Mem)
34
35
nano.menu.cpu.atmega328.upload.maximum_size=30720
36
nano.menu.cpu.atmega328.upload.maximum_data_size=2048
37
nano.menu.cpu.atmega328.upload.speed=115200
38
39
nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF
40
nano.menu.cpu.atmega328.bootloader.high_fuses=0xDA
41
nano.menu.cpu.atmega328.bootloader.extended_fuses=0xFD
42
nano.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex
43
44
nano.menu.cpu.atmega328.build.mcu=atmega328p
45
46
## Arduino Nano w/ ATmega328P (old bootloader low mem)
47
## --------------------------
48
nano.menu.cpu.atmega328old=ATmega328P (Old Bootloader Low Mem Low Upload)
49
50
nano.menu.cpu.atmega328old.upload.maximum_size=30720
51
nano.menu.cpu.atmega328old.upload.maximum_data_size=2048
52
nano.menu.cpu.atmega328old.upload.speed=57600
53
54
nano.menu.cpu.atmega328old.bootloader.low_fuses=0xFF
55
nano.menu.cpu.atmega328old.bootloader.high_fuses=0xDA
56
nano.menu.cpu.atmega328old.bootloader.extended_fuses=0xFD
57
nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
58
59
nano.menu.cpu.atmega328old.build.mcu=atmega328p

von Matthias W. (matt007)


Lesenswert?

Joachim B. schrieb:
> zuerst fand ich das neue Tempo ja toll, aber als mein wUSB nicht mehr
> ging eher weniger!
> Ergo habe ich bei allen nanos Optiboot auf 57k6 wieder reduziert, was
> nutzt schnell wenn es u.U. anderswo klemmt.

Danke Joachim für den Hinweis !
Du hast also im Bootloader etwas geändert.
Deine 4 möglichen Versionen sind nun unterschiedlich in Size und Speed.

Mit welcher Werkzeugkette hast Du das gemacht?

von Ralph S. (jjflash)


Lesenswert?

Matthias W. schrieb:
> Der Parameter -cwiring könnte entscheidend sein

...  warum auch immer, bei mir hat -c wiring nur in Verbindung mit 
abgeschaltetem Auto-Erase (-D) funktioniert !

von Joachim B. (jar)


Lesenswert?

Matthias W. schrieb:
> Mit welcher Werkzeugkette hast Du das gemacht?

mit Atmel Studio 4.18

Den Quellcode vom Optiboot genommen, die Baudrate geändert und per ISP 
auf die Nanos gebracht, ggffs noch die fuse geändert Bootsektorgröße, 
mit der Änderung der board.txt kann ich nun auswählen welcher nano oder 
uno bedient werden will, wenns klemmt, keine Verbindung muss ich halt 
kurz probieren wer sich meldet.

: Bearbeitet durch User
von Matthias W. (matt007)


Lesenswert?

Joachim B. schrieb:
> Den Quellcode vom Optiboot genommen

Vielen Dank Joachim !

von Matthias W. (matt007)


Lesenswert?

Ralph S. schrieb:
> -c wiring nur in Verbindung mit
> abgeschaltetem Auto-Erase (-D)

Danke Ralf. Dieses -D steht bei Arduino auch dabei.

von knotty (Gast)


Lesenswert?

Hi,
ich hab da ein sehr ähnliches Problem, dieses Forum hat mir hier schon 
sehr weiter geholfen, ich hatte ebenfalls das Problem, dass mein Arduino 
Mega2560 nicht geantwortet hat.
Allerdings entwickle ich mein Programm nicht in der Arduino IDE, sondern 
nutze Atmel Studio 7.

Halb Wissender schrieb:
> avrdude -Cavrdude.conf -v -patmega2560 -cwiring -PCOM14 -b115200 -D
> -Uflash:w:default/MyHexFile.hex:i

Dies hat mich soviel weiter gebracht, dass mein PC jetzt mit dem Arduino 
kommunizieren kann, wenn das Programm jedoch starten sollte, passiert 
nichts. Das Programm wird also nicht hochgeladen.

Meine Vermutung ist, dass das irgendwie mit -cwiring zusammenhängt..?

Wäre nett, wenn ihr mir bei diesem Problem weiter helfen könntet!

Das ist die momentane Output-Meldung von AS7:
1
             System wide configuration file is "C:\AVRdude\avrdude.conf"
2
3
             Using Port                    : COM6
4
             Using Programmer              : wiring
5
             Overriding Baud Rate          : 115200
6
             AVR Part                      : ATmega2560
7
             Chip Erase delay              : 9000 us
8
             PAGEL                         : PD7
9
             BS2                           : PA0
10
             RESET disposition             : dedicated
11
             RETRY pulse                   : SCK
12
             serial program mode           : yes
13
             parallel program mode         : yes
14
             Timeout                       : 200
15
             StabDelay                     : 100
16
             CmdexeDelay                   : 25
17
             SyncLoops                     : 32
18
             ByteDelay                     : 0
19
             PollIndex                     : 3
20
             PollValue                     : 0x53
21
             Memory Detail                 :
22
23
                                      Block Poll               Page                       Polled
24
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
25
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
26
               eeprom        65    10     8    0 no       4096    8      0  9000  9000 0x00 0x00
27
               flash         65    10   256    0 yes    262144  256   1024  4500  4500 0x00 0x00
28
               lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
29
               hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
30
               efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
31
               lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
32
               calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
33
               signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
34
35
             Programmer Type : Wiring
36
             Description     : Wiring
37
             Programmer Model: AVRISP
38
             Hardware Version: 15
39
             Firmware Version Master : 2.10
40
             Vtarget         : 0.0 V
41
             SCK period      : 0.1 us
42
43
avrdude.exe: AVR device initialized and ready to accept instructions
44
45
Reading | ################################################## | 100% 0.01s
46
47
avrdude.exe: Device signature = 0x1e9801 (probably m2560)
48
avrdude.exe: safemode: lfuse reads as FF
49
avrdude.exe: safemode: hfuse reads as D8
50
avrdude.exe: safemode: efuse reads as FF
51
52
avrdude.exe: safemode: lfuse reads as FF
53
avrdude.exe: safemode: hfuse reads as D8
54
avrdude.exe: safemode: efuse reads as FF
55
avrdude.exe: safemode: Fuses OK (E:FF, H:D8, L:FF)
56
57
avrdude.exe done.  Thank you.

von Stefan F. (Gast)


Lesenswert?

Du hast de BOOTRST Fuse gesetzt, war das Absicht?

von Einer K. (Gast)


Lesenswert?

Kommandozeile und Meldungen passen nicht zusammen.

Und nein, wiring ist schon richtig, wenn da ein Bootloader drauf ist.

von Tobias S. (knotty)


Lesenswert?

Nein, das war keine Absicht, allerdings weiß ich nicht wie man den 
deaktiviert,.. bin neu bei AS7.

Hier mal mein Argument für avrdude.exe:

-C"C:\AVRdude\avrdude.conf" -v -patmega2560 -cwiring -PCOM6 -b115200 -D

Versuche ich etwas hochzuladen mit folgendem:

-C"C:\AVRdude\avrdude.conf" -v -patmega2560 -carduino -PCOM6 -b115200

funktioniert das ganze nicht mehr..

von Einer K. (Gast)


Lesenswert?

Tobias S. schrieb:
> Hier mal mein Argument für avrdude.exe:

Is ja klar, da fehlt ja auch das wichtigste um zu funktionieren.

Warum verstümmelst du das überhaupt?

von Stefan F. (Gast)


Lesenswert?

Tobias S. schrieb:
> Nein, das war keine Absicht, allerdings weiß ich nicht wie man den
> deaktiviert,.. bin neu bei AS7.

Finde es heraus! Ich kann schon ganz alleine Schuhe binden und Laufrad 
fahren.

von Tobias S. (knotty)


Angehängte Dateien:

Lesenswert?

Arduino Fanboy D. schrieb:
>
> Is ja klar, da fehlt ja auch das wichtigste um zu funktionieren.

Wieso? Hab hier mal meine Tools in nem Screenshot angehängt.
Mit meinem Atmega328P funktioniert alles Problemlos

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Tobias S. schrieb:
> Wieso?

Erst hijackst du einen fremden Thread, der NICHTS mit deinem Problem zu 
tun hat.

Dann zeigst du einen Aufruf.
Dann Meldungen.
Beides passt nicht zusammen.

Dann 2 bis zur Funktionslosigkeit verstümmelte Aufrufe.
Und dann fragst du "Wieso?"

Das "Wieso" solltest eigentlich du viel besser beantworten können, als 
ich.

Aber ich sehe schon, mit uns beiden wird das wohl nix mehr.

von Hugo H. (hugohurtig1)


Lesenswert?

Was ihr immer mit AVRDUDE etc. habt ...

Ich nutze AS 7 - manchmal AS 4.18 und noch manchmaler Arduino IDE.

Code schreiben, compilieren und ggf. debuggen u/o auf den Chip 
"brennen".

AVRDUDE - schön und sehr nutzbringend, läuft ohne mein Eingreifen :-).

Muss ich die Motorsteuerung kennen, um Auto fahren zu können?

von Tobias S. (knotty)


Lesenswert?

Okay, tut mir leid, dass ich diesen Beitrag gehijacked habe,... werde es 
wohl auf eigene Faust versuchen, das ganze zum laufen zu bringen.
Ich habe diese Frage nur hier gestellt, da ich ursprünglich das selbe 
Problem hatte wie der Autor dieses Beitrags und mir ein paar Antworten 
weitergeholfen haben und dachte, dass ihr mir da nun ebenfalls helfen 
könnt.

Nur eins noch:

Arduino Fanboy D. schrieb:
> 2 bis zur Funktionslosigkeit verstümmelte Aufrufe.

Ich verstehe ja, was du meinst, allerdings kann ich den Fehler nicht 
beheben...

von Einer K. (Gast)


Lesenswert?

Tobias S. schrieb:
> Ich verstehe ja, was du meinst, allerdings kann ich den Fehler nicht
> beheben...

Tja, und ich kann dir nicht helfen, wenn du keine Zusammenhänge zeigen 
willst/kannst.

von Tobias S. (knotty)


Lesenswert?

Alles gut, habe eine Lösung gefunden, das Programm kann nun geladen 
werden.

von Hugo H. (hugohurtig1)


Lesenswert?

Tobias S. schrieb:
> Alles gut, habe eine Lösung gefunden, das Programm kann nun geladen
> werden.

Ja - behalte die bitte für Dich, damit Leute wie Du hier wieder fragen 
können ohne auf eine Antwort verwiesen werden zu können (oder diese gar 
selbst finden können - merde).

von Stefan F. (Gast)


Lesenswert?

Wie hast du dein Problem gelöst? Lasse die Community an deiner 
Erkenntnis teilhaben.

von Tobias S. (knotty)


Lesenswert?

Jetzt mal langsam ok.. hatte doch noch ein kleines Problem, das dann 
allerdings glücklicherweise nur n Fehler im Code war.

Um das Problem mit dem Hochladen zu lösen, habe ich lediglich das 
-cwiring vor die file directory meiner hex datei des Programms gestellt:

-patmega2560 -cwiring -P\\.\COM6 -b115200 -D 
-Uflash:w:"$(ProjectDir)Debug\$(TargetName).hex":i

Nun funktioniert das Hochladen einwandfrei.

von Stefan F. (Gast)


Lesenswert?

Hä? -cwiring hattest du dich vorher schon angeblich ohne Erfolg 
versucht!

von Tobias S. (knotty)


Lesenswert?

Ja, es ist komisch, das einzige was ich wirklich verändert habe war, das 
ich die Position des programmers und das auto erase vor das Verzeichnis 
meiner Programmdatei gesetzt habe.

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.