Forum: Mikrocontroller und Digitale Elektronik JTAG-Newbie: Zwei AVRs in einer JTAG-Chain?


von Karl-Heinz (Gast)


Lesenswert?

Hallo,

mein nächstes Projekt soll zwei Mega128 enthalten.

Ich würde gerne zum ersten mal eine JTAG-Schnittstelle ätzen.

Beim Lesen hier und im Wiki bin ich auf den
Begriff der JTAG-Chain gestossen.

http://de.wikipedia.org/wiki/JTAG

Kann ich wie n dem Bild dort einfach die beiden AVRs (beide mit 16MHz
und Vcc=5V ) so anschliessen und dann per DIP-Switch in der TMS-Leitung
auswählen, welcher AVR sich angesprochen fühlen soll?
Hat das schon mal jemand gemacht?
Funktioniert das Flashen und Debuggen mit AVRStudio?

Ich weiss noch so gut wie nichts über JTAG und habe warte noch auf
den JTAG mkII.

-- Den Mega128 kann man doch frisch aus der Verpackung einlöten und
er lässt sich per JTAG programmieren, oder?

-- Kann ich die vier Leitungen plus Vcc und GND einfach auf einen 
Stecker
legen, oder müssen die Leitungen noch irgendwie beschaltet werden?


Vielen Dank für die Antworten
Kalle

von Karl-Heinz (Gast)


Lesenswert?

Nochwas:

Wenn ich die Leitungen aus einen frei zugänglichen Stecker
lege, sollte man die Leitungen mit extra Claming-Dioden und/oder
Serien-Widerständen schützen?
Oder stört das die Kommunikation?

Kalle

von Christian R. (supachris)


Lesenswert?

Irgendwo im AVRStudio hab ich mal ein Menü gesehen, wo man einstellen 
kann, welche Chips noch in der JTAG Kette sind. Du müsstest also nicht 
mal einen Jumper für TMS einbauen. Der Witz an JTAG ist ja, dass man 
quasi beliebig viele Chips in Reihe schalten kann.

von Karl-Heinz (Gast)


Lesenswert?

Hallo,

die Stelle kann im AVRStudio kann ihc wohl nicht finden,
da ich noch keinen JTAG-Adapter haben.

Aber bedeutet das, es geht so, wie ich mir das zusammenreime?


Kalle

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


Lesenswert?

Karl-Heinz wrote:

> Kann ich wie n dem Bild dort einfach die beiden AVRs (beide mit 16MHz
> und Vcc=5V ) so anschliessen und dann per DIP-Switch in der TMS-Leitung
> auswählen, welcher AVR sich angesprochen fühlen soll?

Nein, ohne Schalter.  TMS und TCK sind parallel.

Das geht, allerdings kannst du jeweils nur einen von beiden zu einem
Zeitpunkt debuggen, da du ja nur ein JTAG ICE (= JTAG bus master)
in die Kette bringen kannst.  Der jeweils andere von beiden wird in
der Schieberegisterkette, die aus den beiden ICs gebildet wird, dann
einfach übersprungen.

von Karl-Heinz (Gast)


Lesenswert?

Hallo,

wieso nicht über einen Umschalter für TMS?
Irgendwie muß ich doch auswählen, welchen AVR ich flashen oder
debuggen will.

TMS steht doch für TestModeSelect. Ist das nicht sowas wie
eine ChipEnable um auszuwählen, welcher AVR sich angesprochen
fühlen soll?
Die anderen schieben dann jeweils durch, oder?

Kalle

von Christian R. (supachris)


Lesenswert?

Wenn du TMS wegnimmst, kann der JTAG ICE den IC, den du nicht 
programmieren willst, nicht in den Bypass-Modus schalten. Die Auswahl 
erfolgt im AVR-Studio. Wo genau, weiß ich leider momentan auch nicht, da 
ich den Debugger zu hause hab, und ich glaub man kam nur mit erkanntem 
Debugger an das Menü.

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


Lesenswert?

Karl-Heinz wrote:

> wieso nicht über einen Umschalter für TMS?

Weil JTAG nicht so designt worden ist, wie du dir das gerade
vorstellst.

> Irgendwie muß ich doch auswählen, welchen AVR ich flashen oder
> debuggen will.

Das geht über 4 Parameter namens "units before", "bits before",
"units after" und "bits after", die die Lage des jeweiligen
Geräts in der JTAG chain beschreiben.  Das Ganze ist ja weiter
nichts als ein verkettetes Schieberegister, das jeweils passive
Gerät schiebt die Bits des anderen einfach durch, ohne sich um
deren Inhalt zu kümmern.

Da ein AVR immer 4 bits schiebt, sind die Parameter in deinem
Falle:
1
Param.       1st AVR    2nd AVR
2
units before       1          0
3
bits before        4          0
4
units after        0          1
5
bits after         0          4

Dass man "units" und "bits" separat angeben muss hängt damit
zusammen, dass in der Kette ja auch nicht-AVRs drin sein können,
die eine andere Anzahl als 4 bits per unit schieben.

Ist alles in der Doku zum JTAG ICE (AVR-Studio-Hilfe) beschrieben.

von Karl-Heinz (Gast)


Lesenswert?

Hallo,

erstmal vielen Dank für die Infos.

Ist halt unglücklich, daß das JTAG ICE noch nicht angekommen ist.

Wenn ich das jetzt richtig verstanden haben, "verkabele" ich so
wie auf der Wiki-Seite und lege einfach die vier Leitungen auf
einen Stecker. Die Einstellungen nimmt man dann einfach
im AVR-Studio vor.

Würdest Ihr mir denn noch bitte helfen, ob ich besser
extra-Clamping-Dioden oder sonstwas vorsehe?
Oder würde ein paar BAT54er eher schaden als nutzen?


Kalle

von Christian R. (supachris)


Lesenswert?

Clamping-Dioden sind doch im AVR, und mehr als VCC gibt der JTAGE ICE 
doch nicht aus. Du musst natürlich die Vcc deines µC an den Stecker 
führen, damit die Ausgangstreiber im JTAGICE den entsprechenden Pegel 
einstellen. Am besten genauso verdrahten, wie die Anschlussbelegung des 
JTAG Anschluss von Atmel ist. Dann brauchst du nur ein 1:1 
Flachbandkabel.

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


Lesenswert?

Mach die JTAG-Strippen nicht zu lang.  Das Übersprechen und
-schwingen kann dir sonst die Kommunikation kippen.

Irgendwelche andere Beschaltung habe ich bei JTAG nie dran gehabt.
In einem fertigen Gerät habe ich bislang noch keine JTAG chain mit
AVRs gebaut, aber ich hatte mal einen Testaufbau gezimmert, um die
entsprechende Funktionalität von AVRDUDE in der Praxis testen zu
können.

von Karl-Heinz (Gast)


Lesenswert?

Hallo,

vielen Dank.

Dann werde ich jetzt mal layouten gehen.


Kalle

von Christian R. (supachris)


Angehängte Dateien:

Lesenswert?

So sieht das dann aus, kommt wenn der JTAG Ice erkannt wurde.

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.