Forum: Mikrocontroller und Digitale Elektronik JTag ICE mk 2 mit stk500


von Tommy (Gast)


Lesenswert?

Kann mir jemand weiter helfen?
Will das JTAG ICE MK 2 mit dem STK500 verbinden. Verwende dazu einen 
ATmega 162 in Sockel SCKT3000D3. Im SPI Mode kann ich den 
Mikrocontroller programmieren aber im JTAG mode sagt er mir:" Failed to 
identify target"
Mein JTAG ICE MK 2 ist mit dem STK500 JTAG Adapter verbunden (im JTAG 
mode).
Das JTAG Enable bit ist gesetzt. Der RST Jumper am STK500 ist entfernt. 
Die neuste Firmware ist für das JTAG geladen. Weiß nicht weiter!

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


Lesenswert?

Hast du den richtigen Stecker am JTAG-Adapter benutzt?  Einer ist
für die "Analog"-AVRs (also die mit ADC) da, der andere für die
"Industriestandard"-AVRs (Pinout wie beim 8051, das wäre auch für
den ATmega162 der Fall).

"Failed to identify target" heißt, dass kein Stück JTAG-Kommunikation
zum Laufen kommt.

Den Reset-Jumper kannst du übrigens (im Gegensatz zu debugWIRE) drin
stecken lassen.  JTAG braucht normalerweise keinen externen Reset,
und selbst wenn, dann schafft das ICE es problemlos, sich über die
Logik des STK500 hinweg zu setzen.

Wenn's dann immer noch nicht geht, musst du wohl direkt an den
Controllerpins mit dem Oszi die einzelnen JTAG-Signale mal verfolgen.

von Tommy (Gast)


Lesenswert?

Hallo Jörg,
benutze den richtigen Sockel hab darauf geachtet. Dort steht ebenfalls 
SCKT3000D3 drauf. Werde es jetzt mal so probieren, dass ich direkt auf 
die PINS gehe ohne Adapter Platine zu verwenden.
P.s. vielen Dank für die Antwort

von Tommy (Gast)


Lesenswert?

Bin jetzt direkt auf die PINS gegangen und siehe da, es funktioniert. 
Ist jedoch komisch, da diese Adapterplatine doch genau dafür gemacht 
ist!

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


Lesenswert?

Adapter in die falsche Fassung gesteckt?  Der gehört in den
EXPAND0, wobei die JTAG-Stecker vom STK500 gesehen nach außen
zeigen müssen.

Ich habe den Adapter zwar noch nie mit einem ATmega162 benutzt,
dafür aber den anderen der beiden Stecker bereits sehr oft, zumeist
mit einem ATmega16.

von Tommy (Gast)


Lesenswert?

Vielen Dank!
Hatte den Adapter in EXPAND1.
Jetzt klappt es auch.

von Tommy (Gast)


Lesenswert?

Kann mir noch jemand sagen, ob ich auch in Echtzeit debuggen kann?
Ich habe einen RTC an den MC gepackt und würde gerne sehen wie die 
Register arbeiten, jedoch funktioniert das ja nicht beim drücken der F10 
oder F11 Taste

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


Lesenswert?

Tommy wrote:
> Kann mir noch jemand sagen, ob ich auch in Echtzeit debuggen kann?

Wie soll das gehen?  Sowie der Prozessor eine Interaktion mit dem
Debugger macht, kannst du ja nicht die Zeit anhalten.

Solange du auf dem AVR selbst bleibst, geht es einigermaßen: die
Voreinstellung des JTAG ICE ist, dass die Timer beim Stoppen der
CPU ebenfalls gestoppt werden.

von Tommy (Gast)


Lesenswert?

Würde das bedeuten, wenn ich oft genug auf F10 drücke, kommt er 
irgendwann in die Scheife wenn Timer==5 ist?
Timer ist eine Variable, die hochgezählt wird, wenn ein Timer2 overflow 
stattfindet.

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


Lesenswert?

Vermutlich, aber ich habe keine Ahnung, was bei dir die Taste F10
denn macht. ;-)

von Tommy (Gast)


Lesenswert?

Mit der Taste F10 geht der debugger in die nächste Zeile des 
Quelltextes.
Ich habe es ausprobiert aber in die TIMER==5 Schleife geht er nicht 
rein.

von Tommy (Gast)


Lesenswert?

Wie klappt das denn dann überhaupt mit externen Interrupts?
Der MC steht ja quasi still, wie kann er dann auf einen Interrupt 
reagieren?
Gruß Tommy

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


Lesenswert?

Vielleicht kann TIMER ja nie den Wert 5 erreichen?

Sorry, ohne Code wird dir da keiner helfen können.  Mach aber bitte
einen neuen Thread auf, hat ja mit dem JTAG ICE selbst nun nichts
mehr zu tun, denn das funktioniert ja bei dir.  (Eine klare
thematische Trennung der Threads ist für die Leute, die über
Suchfunktionen hier herein kommen, sinnvoll.)

von Tommy (Gast)


Lesenswert?

Naja es hat schon mit dem JTAG zu tuen. Wenn ich ihn nicht benutze 
funtkionieren ja alle Interrupts, aber ich würde gerne mit dem JTAG 
sehen wie die Register funktionieren, wenn ein externer Interrupt 
ausgelöst wird.
Doch vielleicht kann das JTAG das gar nicht leisten, da ja beim debuggen 
der MC stillsteht. Lass ich das Programm normal laufen funktioniert ja 
alles.

von Tommy (Gast)


Lesenswert?

Werde morgen weiter probieren.
Vielen Dank noch mal!

von spess53 (Gast)


Lesenswert?

Hi

>Doch vielleicht kann das JTAG das gar nicht leisten, da ja beim debuggen
>der MC stillsteht. Lass ich das Programm normal laufen funktioniert ja
>alles.

Mach doch einfach einen Breakpoint an den Einsprungpunkt der ISR. Fertig 
ist es.

MfG Spess

von Tommy (Gast)


Lesenswert?

Ich denke, das ist wahrscheinlich die einzige Lösung! Ich habe es vorher 
immer so gelöst, dass ich an der zweiten UART eine Ausgabe gemacht habe. 
Ich dachte, dass ich das JTAG so einstellen könnte, als ob ich durch 
eine durchsichtige Scheibe in eine Maschine gucken könnte und dann die 
Zahnräder im laufenden Betrieb sehe. Aber so leicht geht das wohl nicht. 
Macht ja auch Sinn, da wie Jörg schon sagte, der MC ja etwas machen muss 
um die JTAG Schnittstelle betreiben zu können und dafür muss er ja das 
Programm unterbrechen.
Werde es mit den Breakpoints mal ausprobieren!
Danke für die Antwort

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.