Forum: Mikrocontroller und Digitale Elektronik Atmega2561 Programmieren mit AVRDude


von Andreas Plonka (Gast)


Angehängte Dateien:

Lesenswert?

ich möchte gerne einen Atmega2561 mit AVRDude Programmieren.
Ich benutze einen SDK200 kompatiblen Programmer (den von embedit.de).

Ich erhalte leider immer den selben Fehler bei der Verifizierung der 
Daten.

Fuses usw. kann ich lesen, scheint prinzipiell zu funktionieren aber ich 
bekomme bei mehrmaligem auslesen Unterschiedliches heraus.

Ich habe die Hardware mehrmals gecheckt und frage mich nun ob es andere 
mögliche Fehler gibt (zumal das lesen der Fuses usw. funktioniert).

Ich verwende folgenden Befehl und habe die neueste WinAVR Version 
installiert mit AVRDude-GUI: "C:\WinAVR\bin\avrdude.exe" -p atmega2561 
-c stk200 -C "C:\WinAVR\bin\avrdude.conf" -P lpt1 -U 
flash:r:"C:\Dokumente und 
Einstellungen\Admin\Desktop\displaycheckwrong.hex":i

Außerdem anbei noch der Hexcode den ich gerne Flashen würde und das was 
herauskommt wenn man wieder (zum ersten mal) ausliest.#

Könnt Ihr mir helfen?

von Andreas Plonka (Gast)


Lesenswert?

Hier anbei noch die ursprüngliche hex-file, der Anhang oben ist die nach 
dem Programmieren ausgelesene.

von Andreas Plonka (Gast)


Angehängte Dateien:

Lesenswert?

...

von Andreas Plonka (Gast)


Lesenswert?

Weiß niemand etwas?

von Christian U. (z0m3ie)


Lesenswert?

Ausser du gibst 14 Eur für nen Controller aus und 20 ct für den 
programmer ? fällt mir dazu nix ein ?! Hast du wenigstens gleich 4 
Controller geholt damit du die verfusten gleich ersetzen kannst ?

von Andreas Plonka (Gast)


Lesenswert?

Ja, konstruktive beiträge?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

HEX-File ist nicht gleich HEX-File. Das Intel HEX Format erlaubt es die 
gleichen Binärdaten in unterschiedlich aussehenden HEX-Dateien 
abzubilden. Erst wenn du aus den Hex-Files die Binärdateien machst (mit 
einem hex2bin-Konverter s. Links in der Artikelsammlung bei EPROM), 
kannst du auf Binärebene Unterschiede suchen. Für mich sehen deine 
beiden Hex-files gleich aus, sie sind nur anders formatiert.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Jetzt hat die Forensoftware meine Bearbeitung gefressen!

Also nochmal:

Der Anfang ist OK. Ab 0x0072 treten beim Auslesen Fehler auf. Dass der 
Anfang OK gelesen wurde kann auch ein Grund sein, dass das Bearbeiten 
der Fuses klappt. Dort brauchst du keine langen Schreib- und Leseorgien.

Herauszufinden was der Grund für die Probleme ist, ist Fummelarbeit, die 
ich mir nicht machen würde. Ich würde an deiner Stelle, so wie Christian 
auch meint, eine zuverlässigere ISP Hardware einsetzen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Möglicherweise ist die ISP-Frequenz zu hoch für die benutzte
Kabellänge.  (Wenn sie zu hoch für die CPU-Frequenz des AVRs wäre,
dann käme gleich nur Schrott raus.)  Man kann bei avrdude mit der
-i-Option zusätzliche Delays zwischen den Takten einbauen und damit
die ISP-Frequenz verringern (natürlich geht dann alles langsamer).
Probier einfach mal, ein -i 10 mit in das Kommando aufzunehmen.

von Andreas Plonka (Gast)


Lesenswert?

einmal flashen dauert im schnitt ca. 70 sekunden (ohne verifizierung), 
die Taktrate des µC ist 8Mhz extern,  ist das normal (ich habe bisher 
nie eine so extrem lange zeit zum flashen benötigt, allerdings ebenfalls 
noch nie mit diesem controllertyp und der taktrate gearbeitet)

von Andreas Plonka (Gast)


Lesenswert?

sowohl mit -1 10 als auch mit -i 100 keine änderung, immer der selbe 
fehler

verification error, first mismatch at byte 0x0000
             0x0c != 0x00

Die Kabellänge sind die (langen) mitgelieferten 80cm, der programmer ist 
brandneu und bidher unbenutzt gewesen, d.h. er hat auch noch nicht 
funktioniert. Hat jemand noch eine idee?

von Andreas Plonka (Gast)


Lesenswert?

ICh habe nun mit dem selben Programmer ein anderes, altes mega16-board 
beschrieben, und es funktioniert.

nun ist die frage, es liegt offensichtlich an meinem atmega2561 board, 
welches aber bereits vorher erfolgreich geflasht wurde.

- kann es zu inkompatiblitäten zwischen dem Chip und dem Programmer 
kommen?
- kann sich ein hardwareproblem so auswirkewn dass fuses editierbar und 
lesbar sind, flashspeicher aber nicht?

von Andreas Plonka (Gast)


Lesenswert?

Das "kleine" Testprogramm funktioniert nun auch auf dem mega2561, d.h. 
es liegt an der codegröße? kann auch die Hex-Datei fehlerhaft sein?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Welche avrdude-Version hast du denn?

Ich muss allerdings zugeben, dass ich mit den Billig-Bitwackel-
Adaptern noch nicht versucht habe, einen ATmega256x zu programmieren.
Kann also auch sein, dass der Code da noch 'nen Bug hat oder die
ISP-Befehle im avrdude.conf nicht korrekt sind.

von Andreas Plonka (Gast)


Lesenswert?

ich habe im Moment AVRDude aus der neuesten WinAVR Version. Das 
Programmieren genau derselben Softwaregröße hatte komischerweise mit 
einem anderen (aber baugleichen) stk200 Adapter bereits völlig 
problemlos funktioniert.

von Andreas Plonka (Gast)


Lesenswert?

Kurz Kabellänge, dennoch keine Verbesserung, hat jemand noch Ideen?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

1/ Sieht man etwas, wenn man AVRDUDE mit -v im Verbosemodus betreibt? 
D.h. wenn man versucht möglichst viel Infos zur Übertragung 
mitzubekommen? Du kannst den Umfang (verbosity) durch mehrere -v erhöhen 
(bis wieviel max. finde ich auf die Schnelle nicht ohne in die Source zu 
schauen).

Ideal wäre es, wenn man irgendwann ein Art Logfile/Ausgabe erhält, in 
dem steht oder sichtbar ist, was wann übertragen wird. Vielleicht 
bremsen andere Anwendungen. Zumindest sieht man dann auch die AVRDUDE 
Versionsnummer.

2/ Welche Einstellung hast du an der Parallelschnittstelle? Ich würde 
EPP einstellen (BIOS?)
http://www.tarigon.de/tramp/epp-ecp.html

von Andreas Plonka (Gast)


Lesenswert?

Also die Biossettungs ändern nichts, ich werde jetzt einmal den verbose 
mode ausprobieren und die resultate hier posten

von Andreas Plonka (Gast)


Angehängte Dateien:

Lesenswert?

Anbei eine Logfile der Übertragung im Verbose Mode von AVRDude.

Könnt Ihr mir hierzu etwas sagen?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Andreas Plonka wrote:
> Anbei eine Logfile der Übertragung im Verbose Mode von AVRDude.
>
> Könnt Ihr mir hierzu etwas sagen?

Nur, dass der ganze Kram hier die Synchronisation verliert:
1
bitbang_cmd(): [ 48 00 4A 94 ] [ 0C 48 00 4A ]
2
bitbang_cmd(): [ 40 00 4B E7 ] [ 94 40 00 4B ]
3
bitbang_cmd(): [ 48 00 4B 04 ] [ E7 48 00 4B ]
4
bitbang_cmd(): [ 40 00 4C 0C ] [ 04 40 00 4C ]
5
bitbang_cmd(): [ 48 00 4C 94 ] [ 0C 48 00 4C ]
6
bitbang_cmd(): [ 40 00 4D E7 ] [ 94 40 00 4D ]
7
bitbang_cmd(): [ 48 00 4D 04 ] [ E7 48 00 00 ]
8
bitbang_cmd(): [ 40 00 4E 0C ] [ 00 00 00 00 ]
9
bitbang_cmd(): [ 48 00 4E 94 ] [ 00 00 00 00 ]
10
bitbang_cmd(): [ 40 00 4F E7 ] [ 00 00 00 00 ]
11
bitbang_cmd(): [ 48 00 4F 04 ] [ 00 00 00 00 ]
12
bitbang_cmd(): [ 40 00 50 0C ] [ 00 00 00 00 ]

Ab dieser Stelle ist vom AVR nichts mehr zu hören oder zu lesen, der
scheint den programming mode verlassen zu haben.

von Stefan B. (stefan) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier das Logfile ohne die 0x00 und auf das wesentliche gekürzt.

AVRDUDE klappert die richtige Datei stur bis zum Ende. Ab einer gewissen 
Stelle (Markierung mit Fehler) antwortet der Atmega2561 nicht mehr 
korrekt.

Im Moment bin ich auch noch nicht schlauer.

von Andreas Plonka (Gast)


Lesenswert?

hat jemand vielleicht erfahrungen mit dem verhalten? kann es sein dass 
der µC nicht robust genug im resetb gehalten wird oder ähnliches?

von Andreas Plonka (Gast)


Lesenswert?

wenn ich avrdude extrem verlangsame (-i 10000 usw.) kann ich nicht 
einmal die  device-id auslesen, d.h. ich glaube dass der fehler etwas 
mit der zeit zu tun hat die nach dem initialisieren vergeht.

könnt Ihr mir sagen was da genau passiert und wie ich darauf einfluss 
nehmen kann? Danke schonmal. Andreas

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ich bin nun endlich mal dazu gekommen, meinen alten Bitwackel-Adapter
aus der Kiste zu kramen und an einen ATmega2561 zu klemmen.  Das ist
Typ "alf" im avrdude.conf, einen STK200 selbst habe ich nicht, aber
viel mehr als die Pinbelegung ist ja bei diesen Dingern nicht anders.

Geht alles einwandfrei, ich habe keine Probleme damit.

Was mir aber gerade einfällt und was auch zu deiner Beobachtung mit
der Zeit, die vergehen muss passt: Hast du sicher gestellt, dass sonst
nichts und niemand in der Zeit versucht, auf den Port zuzugreifen?
Das ist ja 'n Windows, da werden die Portzugriffe ohne Treiber direkt
mittels INB/OUTB gemacht, da Windows keinen Usermode-Treiber für den
Parallelport bietet.  Wenn aber natürlich mitten beim Programmieren
deines AVRs vielleicht der Windows-Printspooler daherkommt und den
Druckerstatus erfragen will, dann hast du verloren.

Wenn du mir noch sagst, was das Hexfile tut, kann ich gucken, ob mein
ATmega2561 das auch macht. ;-)

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.