Forum: Mikrocontroller und Digitale Elektronik ATmega2560 (Arduino) nicht mit AVRDUDE flashbar


von Andi (beefi)


Lesenswert?

Hallo zusammen,

ich habe hier ein altes ausgeschlachtetes 3D-Drucker Board "Geeetech 
GT2560", was sich wegen der Schrittmotortreibervorbereitung für ein 
aktuelles Projekt von mir eignen würde.
Im Grunde ist es ein Arduino Board mit einem ATmega2560 und 
entsprechendem Bootloader.

Leider bekomme ich die Hex nicht mit AVRDUDE auf den Controller. 
Geflasht werden muss der Chip mit dem STK500v2 Protokoll. Wähle ich 
hierzu den Programmer "wiring" (in AVRDUDE), kann ich zwar die 
Chipkennung auslesen...
1
>>>: avrdude.exe -c wiring -P COM3 -b 57600 -p m8 
2
Detected 1e9801 = ATmega2560
...aber nicht nicht den Flash-Speicher programmieren:
1
>>>: avrdude.exe -c wiring -p m2560 -P COM3 -b 57600 -U flash:w:"C:\avr\output.hex":a 
2
Error: command failed
3
Error: chip erase failed
4
5
Avrdude done.  Thank you.


Ich habe es auch mal mit der Arduino-IDE probiert, auch die kann ihn 
nicht flashen. Die Fehlermeldungen sind anders...es kommt hier dieser 
typische "not in sync"-Fehler, der mit AVRDUDE auch beim STK500v1 
Protokoll kommen würde. Den Reset-Knopf zeitpassend zum Flashen 
loslassen, funktioniert hier in diesem Fall nicht als Workaround.

Komischerweise geht mit Bascom alles einwandfrei, wenn ich den Arduino 
STK500v2 Programmer wähle. Der Chip wird erkannt und kann auch das mit C 
erstellte Programm rüberflashen.

Ich würde hier aber gerne Bascom rauslassen...auch ist es etwas 
umständlich, während der Programmentwicklung die C-Kompilate ständig 
über Bascom zu flashen.
Das Programm würde ich gerne in C schreiben, nicht in dem Arduino-C++ 
und nicht in Bascom.

Hätte vielleicht jemand einen Tip, was ich falsch mache? Per ISP kann 
ich das Teil leider nicht bespielen...dazu fehlen die Anschlüsse.

Beitrag #7836795 wurde vom Autor gelöscht.
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Andi schrieb:
> -b 57600

 -b115200 -v

Andi schrieb:
> Ich habe es auch mal mit der Arduino-IDE probiert, auch die kann ihn
> nicht flashen. Die Fehlermeldungen sind anders.

Wenn es mit der Arduino IDE nicht geht, hast du ein "tieferes" Problem, 
welches du mit AVRdude Parametern nicht beheben kannst.

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

Das Problem heißt: Trial & Error ohne Wissen.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Andi schrieb:
> Per ISP kann
> ich das Teil leider nicht bespielen...dazu fehlen die Anschlüsse.
Das glaube ich dir nicht!

: Bearbeitet durch User
von Sebastian R. (sebastian_r569)


Angehängte Dateien:

Lesenswert?

Andi schrieb:
> Per ISP kann
> ich das Teil leider nicht bespielen...dazu fehlen die Anschlüsse.

Sicher?

von Andi (beefi)


Angehängte Dateien:

Lesenswert?

Danke für den Hinweis, das mit der ISP-Möglichkeit über den SD-Card 
Anschluss habe ich glatt übersehen. Sebastian, vielen Dank für den 
Auszug aus dem Schaltplan.

Jetzt wollte ich es mal ausprobieren und bekomme es aber leider wieder 
nicht hin. Verwendet habe ich den Atmel-ICE...sowohl mit AVRDUDE, als 
auch mit Microchip-Studio bekomme ich keine Verbindung zum Controller 
bzw. kann die Signatur nicht auslesen. Der Programmer misst lediglich 
0,3-0,5 V an der Platine.

Kennt sich jemand mit dem Atmel-ICE aus? Bisher verwendete ich lediglich 
den ISP-Adapter für die standardisierte ISP-Pfostenbuchse. In diesem 
Fall sind die ISP-Anschlüsse ja anders auf der SD-Buchse verteilt, so 
habe ich den anderen Adapter verwendet...ich nehme schon an, dass die 
aufgedruckten Ziffern dem entsprechenden Pin eines ISP-Anschluss 
entsprechen?! :)

Die Platine habe ich natürlich auch mit Strom versorgt.
Ebenso habe ich für VCC den Pin 1 des daneben liegenden LCD-Anschlusses 
probiert.
Hättet ihr noch einen Rat für mich?

von Andi (beefi)


Lesenswert?

Andi schrieb:
> ...ich nehme schon an, dass die
> aufgedruckten Ziffern dem entsprechenden Pin eines ISP-Anschluss
> entsprechen?!

Ich habe es gerade noch mit einem AVRISP mkII probiert, bei dem ich die 
Belegung des Adapters sicher kenne. Ebenso ohne Erfolg, er sagt sogar 
0,0 V.

von Andi (beefi)


Lesenswert?

So, es funktioniert jetzt :)
Falls jemand mitliest und zufällig das gleiche Board hat...die 
Pfosten-Buchsen sind (zumindest bei mir) falsch herum aufgelötet. So 
habe ich die Pins natürlich vertauscht.

Draufgekommen bin ich über dieses Video:
https://www.youtube.com/watch?v=yVgReNF1KQA

von Harald K. (kirnbichler)


Lesenswert?

Andi schrieb:
> ich nehme schon an, dass die
> aufgedruckten Ziffern dem entsprechenden Pin eines ISP-Anschluss
> entsprechen?! :)

Die entsprechen der Nummer im Flachbandkabel. 1 ist mit einem roten 
Streifen markiert.

Wie sieht denn Dein sonst genutzter ISP-Adapter aus? Dein Atmel-ICE hat 
ja kein Flachbandkabel in 0.05"-, sondern eins im 0.025"-Raster, so daß 
es mit entsprechender Schneidklemmbuchse auf Stiftleisten im 0.05"- 
statt des üblichen 0.1"-Raster passt.

Dazu gehört also sowieso ein Adapter. Sieh Dir den mal genau an ...

von Wastl (hartundweichware)


Lesenswert?

Andi schrieb:
> Ebenso ohne Erfolg, er sagt sogar 0,0 V.

Kannst du denn am Pin 1 ohne angeschlossenen Programmer
(Atmel ICE) die 3.3V nachweisen (Voltmeter)? Und mit
Programmer (Messung mit Voltmeter) bricht die Spannung
dann ein? Dann hast du ein Verkabelungs-Problem.

von Andi (beefi)


Angehängte Dateien:

Lesenswert?

Wir haben jetzt zeitgleich geschrieben, den Fehler konnte ich 
zwischenzeitlich finden (steht weiter oben geschrieben).

Harald, im Anhang ein Foto vom üblichen ISP-Adapter des Atmel-ICE.


Um das ganze noch zu vervollständigen...
Ich habe jetzt den Bootloader über die Arduino-IDE mittels des AVRISP 
mkII neu geflasht, dass wieder alles Arduino-Konform ist.
Geändert hat sich jetzt, dass ich den Controller über 115200 baud 
anstatt 57200 baud ansprechen kann. Damit meine ich, dass ich über 
AVRDUDE zumindest bei 115200 baud die Signatur auslesen kann. Das 
Flashen (über USB/Bootloader) hat zunächst wieder nicht mit AVRDUDE 
geklappt. Ein Beispielprogramm über die Arduino-IDE konnte ich jedoch 
flashen (nutzt ja ebenso AVRDUDE)...diese nutzt 115200 baud für den 2560 
(wohl der Grund, warum es vorher nicht klappte).
Dabei ist mir aufgefallen, dass die Arduino-IDE zusätzlich den 
Kommandozeilenparameter "-D" verwendet, um den Flash-Speicher NICHT zu 
löschen.
Mit diesem Parameter funktioniert es jetzt auch außerhalb der 
Arduino-IDE, also pur mit AVRDUDE bzw. AVRDUDESS (was ich verwende).

Es ist also alles gelöst und das Projekt kann anlaufen :)

Falls noch jemand eine Info hätte (rein zum Verständnis), wieso man den 
Flash-Speicher beim ATmega2560 nicht löschen sollte bzw. was da mit und 
ohne dem Parameter "-D" genau passiert, würde mich freuen.

Ich habe zwar eine Beschreibung für diesen Parameter gefunden, werde 
aber daraus nicht wirklich schlau. So wie ich das verstehe, sollte der 
"-D" Parameter eigentlich nicht verwendet werden :)
1
-D
2
Disable auto erase for flash. When the -U option with flash memory is specified, avrdude will perform a chip erase before starting any of the programming operations, since it generally is a mistake to program the flash without performing an erase first. This option disables that. Auto erase is not used for ATxmega devices as these devices can use page erase before writing each page so no explicit chip erase is required. Note however that any page not affected by the current operation will retain its previous contents.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Andi schrieb:
> Der Programmer misst lediglich
> 0,3-0,5 V an der Platine.

Logisch, ohne Stromversorgung

> Die Platine habe ich natürlich auch mit Strom versorgt.

Davon sehe ich nichts,

Tue dir und uns allen einen Gefallen: Zeige echte Fotos vom Aufbau, 
keine irreführenden Fake-Fotos.

: Bearbeitet durch User
von Andi (beefi)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Logisch, ohne Stromversorgung

Sherlock 🕵🏽‍♂️ schrieb:
> Davon sehe ich nichts,
>
> Tue dir und uns allen einen Gefallen: Zeige echte Fotos vom Aufbau,
> keine irreführenden Fake-Fotos.

Dann tue dir und uns allen bitte ebenso den Gefallen, die Fotos genauer 
anzusehen und den geschriebenen Text zu verinnerlichen, bevor du eine 
solche Formulierung verwendest.
Die Fotos sind natürlich echt und waren der tatsächliche Aufbau. Wenn du 
das sogenannte Fake-Foto genauer angesehen hättest, wirst du auch sehen, 
dass unter der Platine noch eine Stromleitung hervorkommt. Da ich den 
Stecker für die offizielle Buchse aktuell nicht da habe, habe ich 
vorübergehend für Tests eine Ersatzleitung angelötet. Ja, auf dem Foto 
hatte ich leider das Netzteil ausgesteckt, daher leuchtet keine 
LED...das Foto diente jedoch lediglich dazu, um den Anschluss der 
nummerierten Stecker zu zeigen. *Ich habe es aus diesem Grund explizit 
dazu geschrieben, dass ich es mit Strom versorgt habe.*

Wie du sicherlich auch gelesen hast, hat sich das ganze auch aufgeklärt.
Wastl hatte den richtigen Riecher, der Fehler lag am Board...die Pegel 
haben gar nicht gepasst.
Wer hätte gedacht, dass die ganze Buchse verdreht aufgelötet ist, wenn 
in früherer Anwendung die Funktion mit Display und SD-Kartenleser 
funktioniert hat...auf den separaten Komponenten waren die Buchsen 
wahrscheinlich auch verkehrt herum.

von Alexander S. (alesi)


Lesenswert?

Andi schrieb:
> Im Grunde ist es ein Arduino Board mit einem ATmega2560 und
> entsprechendem Bootloader.

Andi schrieb:
> Falls noch jemand eine Info hätte (rein zum Verständnis), wieso man den
> Flash-Speicher beim ATmega2560 nicht löschen sollte bzw. was da mit und
> ohne dem Parameter "-D" genau passiert, würde mich freuen.

Beitrag "Re: Bootloader auf Attiny85 jedesmal neu brennen?"

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.