Forum: Mikrocontroller und Digitale Elektronik AVR Dragon und ATMEGA 32


von Moe K. (moe2012)


Lesenswert?

Hallo,
bin neu hier und hab schon meine erste Frage.
Habe Probleme mit der Programmierung eines ATMEGA 32 mit dem AVR Dragon 
über JTAG.
Zur Programmierung verwende ich das AVR Studio 5.0.
Ich habe anfangs ein Nokia 3310 Display an einen ATMEGA 16 angebunden 
und über die Bibliothek von www.jtronics.de eingebunden. Das Debuggen 
und Programmieren lief über die JTAG-Schnittstelle problemlos. Das 
Display erfüllte seine Funktion. Auf den ATMEGA 16 war auf einmal kein 
Zugriff über JTAG mehr möglich. Hatte den Microcontoller  in Verdacht 
(Device ID des Controllers konnte nicht mehr ausgelesen werden).
Der ATMEGA 16 wurde durch den ATMEGA 32 ausgetauscht, diese war noch 
rumgelegen. Nun kann die Device ID wieder über JTAG wieder ausgelesen 
werden.
Wenn ich nun versuche das HEX File über die JTAG Schnittstelle zu 
übertragen kommt folgender Fehler:
“Verifying Flash...Failed! address=0x0000 expected=0x0c actual=0xff”.
Wird das Hex-File über ISP mit den Programm „PonyProg“ übertragen 
funktioniert es. Das Programm läuft auf den Controller ab und das 
Display zeigt was an. Der HEX-Code kann sogar über die 
JTAG-Schnittstelle zurückgelesen werden.
Wird nun im AVR Studio 5.0 über den AVR Dragon und der JTAG 
Schnittstelle gedebuggt, wird der komplette Speicher gelöscht. Wird der 
Speicher wieder ausgelesen ist das HEX-File mit „FF“ vollgeschrieben.

Kennt jemand von euch das Problem? Hat evtl. mein AVRDragon einen 
Schaden? Oder ist irgendwas für den ATMEGA 32 falsch eingestellt?
Bin für eure Hilfe Dankbar!
Gruß Moe

von Mathias K. (albireo)


Lesenswert?

Hallo Moe.

Ich habe meinen AVR-Dragon vor zwei Wochen gekauft und ihn vor einigen 
Tagen in Betrieb genommen.

Auch ich versuche einen ATmega32 über die JTAG Schnittstelle mit AVR 
Studio 5 anzusprechen und habe exakt das selbe Phänomen.

Der Speicher läßt sich löschen und auslesen, aber nicht beschreiben.
Über die ISP Schnittstelle mit Yaap klappts.

Meld dich mal wenn wir es zusammen versuchen wollen.
Vielleicht bist du ja auch schon einen Schritt weiter als ich.

Möglicherweise findet sich ja bei unserem Dialog noch jemand aus dem 
Forum, der einen Tipp hat.

Leider muss ich jetzt ins Bett, ich meld mich hier wieder.

Gruß
Mathias

von Kaj (Gast)


Lesenswert?

Hallo ihr Beiden.

Probiert doch erstmal den controller über AVR-Studio, AVR-Dragon und ISP 
anzusprechen. dann könnt ihr erstmal schauen ob die JTAG-Fuse gesetzt 
ist.

Doofe Frage nebenbei: Die Kabel auf dem AVR-Dragon steckt ihr schon um 
für den JTAG-Mode, oder? ;)

von Kaj (Gast)


Angehängte Dateien:

Lesenswert?

hier noch mal der Anschlussplan

von Moe K. (moe2012)


Lesenswert?

Hallo,
gehe davon aus, dass richtig verdrahtet ist, des es ja mit dem ATMEGA 16 
funktioniert und dem selben Aufbau funktioniert hat und sich die 
Pinbelegungen der Controller nicht unterscheiden. Das beschrieben 
Anschlusschema ist mir bekannt und wurde mehrfach überprüft.
Ja es wird umgesteckt für ISP und JTAG ;-)
Die JTAG-Fuse wird im PonyProg als gesetzt angezeigt.

Werde den Weg mit dem Dragon und ISP noch versuchen. Bin über jede Hilfe 
dankbar.

MFG Moe

von Mathias K. (albireo)


Lesenswert?

Hallo Kaj, hallo Moe.

Die Verdrahtung habe ich mehrfach geprüft und gehe davon aus, dass sie 
in Ordnung ist. Entspricht auch deiner Grafik.

Zuerst funktionierte es per JTAG und "AVR Studio" gar nicht. Daher habe 
ich per ISP mit Yaap die Fuses geprüft und festgestellt, dass Yaap die 
Fuse JTAGEN nicht zur Verfügung stellt.
Für Yaap habe ich mir seinerzeit einen PC-Parallelport-Adapter gebaut.

Also habe ich die Fuses per Dragon/ISP/"AVR Studio" geprüft. Die JTAGEN 
war nicht gesetzt, was ich dann korrigiert habe.

Wieder zurück zu Dragon/JTAG/"AVR Studio". Jetzt kann ich die DeviceId 
und die Fuses auslesen. Den Flash und Eeprom kann ich jetzt auch 
auslesen. Also scheint die Kommunikation per JTAG nun zu funktionieren.

Wenn ich jetzt per JTAG ein .hex File in den ATmega32 schreiben will 
(Einstellung: Flash löschen und Verify), dann gibt's genau den Fehler, 
den Moe beschreiben hat. Nach dem Schreiben wird gemeldet, dass beim 
Verify an der ersten Stelle im Flash ein falscher Wert steht.

Also prinzipiell funktioniert die JTAG-Kommunikation, nur das Schreiben 
in den Flash nicht.

Die Kabel stecke ich um, ja.

Heute abend oder Morgen setze ich mich mal hin und trage noch ein paar 
Fakten zusammen, damit ihr genau wisst wie die Einstellungen im AVR 
Studio sind. Vielleicht hilft das bei der Fehleranalyse.

Im Grunde habe ich versucht das Beispiel aus der "AVR Studio" Hilfe 
nachzuvollziehen (also auch mit dem Codebeispiel).

Hab mal irgendwo gelesen, dass der Dragon einen Bug hat, der auftritt 
wenn der Code eine Größe von ca. 690 Byte hat. Nicht das hier der Hase 
im Pfeffer liegt.

Gruß
Mathias

von Oliver J. (skriptkiddy)


Lesenswert?

Löschst du den Flash auch, bevor du ihn beschreibst?

von Mathias K. (albireo)


Lesenswert?

Hallo Oliver.

Ja, da nach dem anschließenden Auslesen alle Bytes auf 0xFF stehen.
Und beim Programmieren standardmäßig eingestellt.
Guck ich aber trotzdem nochmal genau.

Gruß
Mathias

von Mathias K. (albireo)



Lesenswert?

Hallo zusammen.

So, hier meine letzten Versuche.

Zuerst mal habe ich den ATmega32 nochmal per Dragon/ISP/AvrStudio 
angeschlossen.
Alles klappt prima. Ich kann mein Programm reinladen, Verify ok, 
Programm tut was es soll.

Per Dragon/JTAG/AvrStudio eben nicht.

Hier mal ein paar Angaben zu den Versionen, die ich verwende.

OS Version: Microsoft Windows NT 5.1.2600 Service Pack 3
Platform: Win32NT

Atmel AVR Studio 5 (Version: 5.1.208)

AVR Tools Firmware Upgrade
--------------------------
Dragon_M-07-15.bin UpToDate
Dragon_S-07-15.bin UpToDate


Im Anhang befinden sich einige Bilder, die die Einstellungen im AVR 
Studio,
Menü "Extras/AVR Programming" wiedergeben.

Falls jemand was feststellen kann, was nicht passt...

Vielen Dank schon mal

Gruß
Mathias

von Moe K. (moe2012)


Lesenswert?

Hallo zusammen,
um auszuschließen, dass der AVR Dragon defekt ist wurde der Zugriff über 
die JTAG-Schnittstelle auch noch vom  AVR-Sudio 4 aus probiert, was 
nichts änderte. Auch hier funktioniert kein JTAG mit dem ATMEGA 32.

Darauffolgend habe ich zwei neu ATMEGA 16 beschafft da ja mit diesen 
Controllern alles einwandfrei funktionierte. Und siehe da mit dem ATMEGA 
16 gibt keine Probleme es funktioniert das Debuggen und das 
Programmieren des Controllers mit derselben Hardware wie vorher beim 
ATMEGA 32.

Wie kann es sein das nur der ATMEGA 32 diese Probleme macht? Eigentlich 
werden doch bis zu 32kB Flash vom Dragon unterstütz oder?

Gruß Moe

von Mathias K. (albireo)


Lesenswert?

Hallo zusammen.

Also..

Ich habe mir das neue AVR-Studio 6 runtergeladen und installiert.
Damit ging das Schreiben in den Flash auf jeden Fall schon mal. Prima.

Ab und zu gab es aber noch Fehler beim Lesen der Device-Id.
Da ich mal irgendwo gelesen habe, dass es Fehler mit dem ATmega32 im 5V 
Betrieb, bei zu langem Kabel geben kann, habe ich mein Kabel gegen ein 
30cm 10pol. Flachbandkabel getauscht.

Und siehe da, alles geht.

Ich habe heute Abend mein Projekt von WinAvr in das AVR-Studio 6 
übertragen, kompiliert und mit dem Debugger gestartet..
..und es klappt perfekt.

Damit scheint der Fall gelöst.

Bin gespannt auf Rückmeldungen.

Gruß
Mathias

von Danni (Gast)


Lesenswert?

Hi Leute,

auch wenn dieser Thread uralt ist, hier (m)eine Lösung des Problems.
Vielleicht regt sie ja zum Nachdenken bei einer ähnlichen Fehlersuche 
an. Hat mich zwei Abende gekostet.

Als mein Programm neulich die 16K Grenze überschritt mußte ich 
notgedrungen auf den ATMEGA32 wechseln. Jetzt kam das Problem. Ich 
konnte zwei Jahre lang problemlos mit Dragon und STK500 über JTAG den 
ATMGA16 debuggen und fashen, mit dem ATMEGA 32 ging es auf einmal ums 
verrecken nicht mehr. Aber trotzdem ließ sich problemlos das EEPROM 
programmieren und auch die Signatur lesen und Fuses verändern (!).
Über ISP-Programmierung ging jedoch alles bei beiden Controllern.

Die Lösung fand ich, als ich mal im AVR-Studio (bei mir noch V4.19, 
Build 730) die HW-Settings über JTAG anschaute:
Dort wurde nicht die richtige STK500 Boardspannung (VTarget) angezeigt. 
Das Problem war ein eingelöteter Widerstand in der Leitung zwischen Vref 
und VTG über die der Dragon ja den Pegelwandler steuert. Anstatt der 
eingestellten 5V wurden nur um die 4V angezeigt. Anscheinend habe ich 
verschieden Ratschläge aus dem Netz, in die JTAG-Leitungen 
Schutzwiderstände einzuschleifen, übergenau befolgt und das auch bei der 
Vref-Leitung gemacht, wo das nur einen unerwünschten Spannungsabfall und 
damit eine Dragon Fehlfunktion verursachte. Komischerweise ging das zwei 
Jahre lang mit dem ATMEGA16 gut aber nicht mit dem ATMEGA32. Offenbar 
zieht der ATMEGA32 mehr Strom beim Flash-Programmieren als der ATMEGA16 
und als beim EEPROM beschreiben.
Also immer schön auf die Referenzspannung achten wenn man die 
JTAG-Schnittstelle nutzt.

Gruß,

Danni

von Michael (Gast)


Lesenswert?

Hallo liebe Leute,

ich hab auch ein paar Probleme mit dem Mega32. Und zwar habe ich ein 
paar Platinen welche jeweils von dem Ding gesteuert werden, und mußte 
mir unlängst ein paar nachkaufen. Allerdings kann das Dragon-Board bei 
diesen das Target nicht erkennen, also auch keine Fuses setzten und 
dergleichen. Die alten Controller funktionieren einwandfrei, in der 
selben Platine.

Die Target-Spannung ist auch ok. Z.B. 5,1V.

Was ist da falsch. Laut einiger Artikel die ich gelesen habe, ist die 
JTAG-Schnittstelle serienmäßig aktiviert. Über SPI habe ich's noch nicht 
probiert, weil die Pins in die Schaltung eingebettet sind, und ich da 
nicht so einfach rankommen.

LG
Micha

von Michael (Gast)


Lesenswert?

Hat sich erledigt.
Ich weiß nicht warum. aber jetzt gehts...

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.