Forum: Mikrocontroller und Digitale Elektronik JTAGICE3 Atmega16-16 keine Verbindung via JTAG


von christoph (Gast)


Lesenswert?

Hallo,

Ich habe gestern einen neuen JtagICE3 bekommen und wollte das JTAG 
Interface an einem ATMEGA16-16PU testen. Jedoch schaffe ich es nicht 
eine Verbindung mit dem µC aufzubauen.

Dabei bekomme ich jedes mal folgenden Fehler, wenn ich die ID auslesen 
möchte:
"
Unable to enter programming mode.

Please verify device selection, interface settings, target power and 
connections to the target device.
"

Target Power schließe ich aus, da er die 5V targetpower auch ausliest.

Zu meinem System:
Windows 7
ATMELSTUDIO 6
JTAGICE 3
Atmega16 auf Steckboard mit 8MHZ Quarz und 5V Verorgung

Jtagice wurde über das squid cable wie folgt verbunden:
1----PC2 (TCK)
2----GND
3----PC4 (TDO)
4----+5V
5----PC3 (TMS)
6----/Reset
7----N.C.
8----N.C.
9----PC5 (TDI)
0----GND

als JTAG clock versuchte ich schon einige frequenzen zwischen 32kHz und 
7,5MHz.

Die Signale Des JTAG-Interface zeichnete ich mit einem LA auf und sah, 
dass sich auf der Leitung TDO nichs tut.

Weiters habe ich eine Verbindung zwischen JTAGICE3 und Atmega16 über ISP 
herstellen können. Somit konnte ich die Fuses einstellen.
(OCDEN , JTAGEN, SPIEN) wurden Aktiviert
Somit ergeben sich folgende Fuse zustände:
HIGH: 0x19
LOW:  0xCF

Jedoch war ich bis jetzt noch nicht im Stande das Problem zu lösen.
Ich hoffe Ihr könnt mir helfen.
Danke im Voraus.

mfg Christoph

von christoph (Gast)


Lesenswert?

Habe gerade alles nochmal neu gesteckt und es funktioniertE!

Als ich jedoch ein zweites mal die JTAG ID auslesen wollte hatte ich 
wider das gleiche Problem!!

mfg Christoph

von F. F. (foldi)


Lesenswert?

christoph schrieb:
> ATMELSTUDIO 6

Mach mal das Update und den Programmer gleich auch updaten.

von christoph (Gast)


Angehängte Dateien:

Lesenswert?

Danke für den Hinweis

Habe jetzt auf ATMELstudio 6.1 upgedated und den Jtagice von Version 2.a 
auf 2.13

Hat jedoch nichts geholfen same problem.

Auf der Leitung TDO tut sich nichts wie man im Anhang sieht.

mfg Christoph

von christoph (Gast)


Lesenswert?

folgenden Code hatte ich im Ausgabefenster:

"
03 00 19 081: pro No JTAG devices detected. Debugger command Activate 
physical failed.
03 00 19 082:  No JTAG devices detected. Debugger command Activate 
physical failed.
"

mfg Christoph

von christoph (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang nochmal die Fuses die ich über das ISP Interface ausgelesen 
habe.

mfg Christoph

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


Lesenswert?

christoph schrieb:
> Auf der Leitung TDO tut sich nichts wie man im Anhang sieht.

Klar, das ist ja letztlich das, was dir das JTAGICE auch sagt: da
reagiert niemand.

Normalerweise sind das entweder Verkabelungsprobleme oder eine
gelöschte JTAGEN-Fuse.  Letzteres kann man ausschließen, weil du
die Fuses ja über ISP lesen kannst, und die geposteten Werte passen,
da ist JTAGEN gesetzt.

Blieben also noch irgendwelche Wackelkontakte oder sowas.

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


Lesenswert?

christoph schrieb:
> Im Anhang nochmal die Fuses die ich über das ISP Interface ausgelesen
> habe.

Schrobst du ja weiter oben schon.  Die 0x19 der high fuse ist das
Entscheidende.  Genauer gesagt, das Bit 6 darin, das muss 0 sein.

von christoph (Gast)


Lesenswert?

Hallo, danke für die schnelle Antwort.

Wenn es ein Wackelkontakt sein sollte, kann dieser nur auf der 
TDO-Leitung sein, da alle anderen einwandfrei schalten.

Jedoch schließe ich einen Wackelkontaktauf der TDO-Leitung auch aus, 
weil ich gerade eine Widerstandsmessung zwischen dem PC4(TDO) pin des 
Controllers und dem TDO Steckerpad auf der Jtagiceplatine gemacht habe. 
Dieser ergibt 0.7Ohm => vernachlässigbar.

also kann das auch nicht das Problem sein.

Leider noch immer kein Erfolg aber Danke.

mfg Christoph

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


Lesenswert?

Was hast du denn als Verkabelung?  Hoffentlich kein Steckbrett …

von christoph (Gast)


Lesenswert?

Verkabelt hab ich das auf einem Steckbrett mit Jumperwire.

mfg

von christoph (Gast)


Lesenswert?

Hab jetzt auch noch die anderen Leitungen durchgemessen und alle passen.

Was ich nicht verstehe ist dass es bereits 1 mal funktionierte und 10sec 
später nicht mehr.

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


Lesenswert?

christoph schrieb:
> Verkabelt hab ich das auf einem Steckbrett mit Jumperwire.

Steckbretter haben riesige Kapazitäten, das ist für einen schnellen
Bus wie JTAG ziemlich ungünstig.

von christoph (Gast)


Lesenswert?

Dass die Kapazitäten auf einem Steckbrett relativ groß sind ist mit 
durchaus bewusst. Nur wenn ein JTAG interface mit 1MHz nicht 
funktioniert und ein SPI interface mit 1,8MHz schon dann glaube ich 
nicht, dass das Fehlverhalten vom Steckbrett kommt.

Mfg Christoph

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


Angehängte Dateien:

Lesenswert?

christoph schrieb:
> Nur wenn ein JTAG interface mit 1MHz nicht
> funktioniert und ein SPI interface mit 1,8MHz schon dann glaube ich
> nicht, dass das Fehlverhalten vom Steckbrett kommt.

Vorausgesetzt, die benutzten Leitungen haben jeweils vergleichbare
Kapazitäten.

Du kannst es aber drehen und wenden, wie du willst: es funktioniert
bei dir nicht, sonst aber überall.  Damit brauchst du die Fehler
nicht woanders suchen, sondern irgendwo in deinem Aufbau.  Da du
ja sogar die Signale mit dem LA tracen kannst und die dort nicht
antwortende TDO-Leitung beim ISP-Betrieb MISO ist (und dabei
funktioniert), kannst du auch das ICE selbst als Fehlerursache
ausschließen.

Anbei ein LA-Trace der Initialisierungssequenz.  Triggerpunkt ist
die fallende Flanke von TMS.  Der ATmega16 sitzt auf einem STK600,
das ICE ist ebenfalls ein JTAGICE3.

von Rainer Dünsch (Gast)


Lesenswert?

Blöde Frage: Hast du an die Pullup-Widerstände gedacht?

von christoph (Gast)


Lesenswert?

Sind die nicht im ICE ?

Mfg

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


Lesenswert?

Rainer Dünsch schrieb:
> Blöde Frage: Hast du an die Pullup-Widerstände gedacht?

Braucht man keine.

von christoph (Gast)


Lesenswert?

Hab es jetzt mit Pull-Ups probiert, jodoch hat es auch nicht 
Funktioniert.
Wie groß ist die Wahrscheinlichkeit, dass das JTAG Interface des 
Controllers defekt ist?

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


Lesenswert?

christoph schrieb:
> Wie groß ist die Wahrscheinlichkeit, dass das JTAG Interface des
> Controllers defekt ist?

Naja, durch ESD oder dergleichen kannst du natürlich immer mal eine
Padzelle killen.

Da du ja ISP machen kannst, probier doch mal folgendes:
1
#include <avr/io.h>
2
#define F_CPU 1E6
3
#include <util/delay.h>
4
5
int
6
main(void)
7
{
8
  MCUCSR = _BV(JTD);
9
  MCUCSR = _BV(JTD);
10
  DDRD = 0xff;
11
12
  uint8_t i;
13
  for (;;) {
14
    for (i = 1; i != 0; i <<= 1) {
15
      PORTD = i;
16
      _delay_us(10);
17
    }
18
    for (i = 1; i != 0; i <<= 1) {
19
      PORTD = ~i;
20
      _delay_us(10);
21
    }
22
  }
23
}

Bitte unbedingt mit Optimierung compilieren, sonst funktioniert das
Setzen des JTD-Bits nicht.  Das flashst du, danach misst du die Pins
von Port D mit dem LA nach.  Wenn da abwechselnd 1-Bits und 0-Bits
durchgeschoben werden, sind die Portpins noch in Ordnung.

Dass es dir gelingt, nur die JTAG-Engine zu schießen, obwohl die
Pins noch funktionieren, halte ich für reichlich unwahrscheinlich.

von Rainer Dünsch (Gast)


Lesenswert?

Steht dir ein Scope zur verfügung?

von christoph (Gast)


Lesenswert?

Mal ne frage zum Programmcode.

Wieso soll ich eine Shift-Operation am Port D durchführen, wenn der JTAG 
Controller am C Port sitzt?

@Rainer Dünsch: hab ein LA und ein Analoges OSZi

von christoph (Gast)


Lesenswert?

1
#include <avr/io.h>
2
#define F_CPU 1E6
3
#include <util/delay.h>
4
5
int
6
main(void)
7
{
8
  MCUCSR = _BV(JTD);
9
  MCUCSR = _BV(JTD);
10
  DDRC = 0xff;
11
12
  uint8_t i;
13
  for (;;) {
14
    for (i = 1; i != 0; i <<= 1) {
15
      PORTC = i;
16
      _delay_us(10);
17
    }
18
    for (i = 1; i != 0; i <<= 1) {
19
      PORTC = ~i;
20
      _delay_us(10);
21
    }
22
  }
23
}

Währe das nicht sinnvoller, wenn ich wissen will ob die JTAG pins 
funktionieren?

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


Lesenswert?

christoph schrieb:
> Wieso soll ich eine Shift-Operation am Port D durchführen, wenn der JTAG
> Controller am C Port sitzt?

Weil ich wissen wollte, ob du das auch liest, was ich schreibe. :-))

Nein, ich hatte mich einfach versehen.  Ja, nimm dein korrigiertes
Beispiel, bitte.

von christoph (Gast)


Angehängte Dateien:

Lesenswert?

Also die Pins funtkionieren.

JTAG nicht.

von christoph (Gast)


Lesenswert?

Sollte nicht jetzt die JTAGN Fuse gelöscht sein?

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


Lesenswert?

christoph schrieb:
> Also die Pins funtkionieren.

Allerdings mit einer CPU-Frequenz von ca. 5 MHz (statt des 1 MHz,
welches ich annahm).

> JTAG nicht.

Jetzt ist es wirklich seltsam.  Gut, nach obiger Firmware funktioniert
JTAG natürlich nicht (man müsste dann nSRST aktivieren, damit die
Firmware nicht läuft), aber spätestens nach dem Löschen der Firmware
muss es gehen.

Wenn du unsere beiden LA-Traces vergleichst, dann passt das auch
alles, also das JTAGICE erzählt genau das, was es soll.  Allerdings
kommt bei meinem Trace dann etwa in der Mitte die erste Antwort auf
TDO raus.

Hast du vielleicht doch mal einen zweiten Controller zum Testen?

christoph schrieb:
> Sollte nicht jetzt die JTAGN Fuse gelöscht sein?

Nein, die Firmware schaltet das JTAG nur zur Laufzeit aus (über das
JTD-Bit).  Die Fuse ist davon unbeeinflusst.

von christoph (Gast)


Lesenswert?

Ich habe einen CPU takt von 8MHz

zur Zeit nur Lose SMD Controller. Aber muss nachehr weg und da werde ich 
einen mitnehmen und dann mach ich mal ein Update.

Ja die Traces hatte ich auch schon verglichen.

mfg Christoph
und Danke für die viele Hilfe

von F. F. (foldi)


Lesenswert?

So was ist immer blöd und du kennst dich ja offensichtlich gut aus.

Ich habe nur noch zwei Ideen dazu. Entweder ist der Programmer kaputt 
oder aber es liegt an einem Treiberproblem.
Weiß jetzt nicht, ob der ICE3 auch den Jungo nimmt (ich mache (noch) 
nichts mit JTAG, aber vielleicht ist das noch ein Ansatz.
Da es ja mal funktionierte und dein µC wohl funktioniert, denke ich eher 
an diese Möglichkeit.
Kannst du vielleicht noch mal das Studio auf einem völlig anderen 
Rechner installieren und das mit dem probieren.
Ich hatte auch schon mal diese Verbindungsprobleme und nachdem ich den 
Rechner von Hand völlig entmistet hatte, das Studio erneut installierte 
und somit den Jungo Treiber, dann lief es. Auch auf den schnelleren 
Frequenzen.
Bei jeder zweiten Verbindung klappte es nicht mit dem MKII.
Wichtig war dabei, dass der Jungo Treiber übers Studio installiert 
wurde. Eine direkte Installation erkannte zwar die Hardware, trotzdem 
klappte es nicht im Studio.

Leider bin in noch lange nicht so weit wie ihr, aber vielleicht ist das 
trotzdem bedingt hilfreich.


Ich wünsche dir viel Glück und Erfolg!

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


Lesenswert?

F. Fo schrieb:
> Entweder ist der Programmer kaputt
> oder aber es liegt an einem Treiberproblem.

Die LA-Traces sprechen gegen beide diese Hypothesen.

von christoph (Gast)


Lesenswert?

Problem gelöst!!

Neuer Controller => Problem weg.

Habe jetzt 5 mal ID und Fuses Ausgelesen. Und es funktioniert sogar mit 
7,5MHz am Steckbrett.

Abschließend noch mal mein Setup:
Windows 7
ATMELSTUDIO 6.1.2562
JTAGICE3
     -Connection        com.atmel.avrdbg.connection.jungousb
     -Firmware Version  2.13
     -Hardware Version  2
ATMEGA 16-16PU auf Steckbrett mit 8Mhz Quarz und +5V.

Jtagice wurde über das squid cable wie folgt verbunden:
1----PC2 (TCK)
2----GND
3----PC4 (TDO)
4----+5V
5----PC3 (TMS)
6----/Reset
7----N.C.
8----N.C.
9----PC5 (TDI)
0----GND

Keine Pullupwiderstände!
FUSES :
HIGH: 0x19
LOW:  0xCF

Danke an alle die Geholfen haben.

mfg Christoph

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


Lesenswert?

christoph schrieb:
> Neuer Controller => Problem weg.

Schön, wenngleich mehr als eigenwillig.

Kannst du spaßeshalber mal obige Testapplikation ohne das Setzen
des JTD-Bits in MCUCSR compilieren und auf den nicht funktionierenden
Controller flashen?  Es dürften ja dann (da JTAG eigentlich aktiv
ist) nur PC0/1 und PC6/7 wackeln.

von F. F. (foldi)


Lesenswert?

Jörg Wunsch schrieb:
> F. Fo schrieb:
>> Entweder ist der Programmer kaputt
>> oder aber es liegt an einem Treiberproblem.
>
> Die LA-Traces sprechen gegen beide diese Hypothesen.

Hallo Jörg, ich finde es nicht gut, meine Aussage so aus dem 
Zusammenhang zu reißen.
Wenn man sich nur diesen einen Satz liest, so hört sich das wie eine 
sture Behauptung an und als würde ich alles wissen.

Ich sehe mich noch als Anfänger und bleibe das auch sicher noch eine 
Weile.
Wenn hier die Cracks am Werke sind, halte ich mich meistens ganz raus 
oder berichte nur von Erfahrungen die ich selbst gemacht habe.
Das habe ich in diesem Fall getan - sehr vorsichtig, um nicht den 
Anschein zu erwecken, als könnte ich über Wasser laufen.

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


Lesenswert?

F. Fo schrieb:
> Jörg Wunsch schrieb:
>> F. Fo schrieb:
>>> Entweder ist der Programmer kaputt
>>> oder aber es liegt an einem Treiberproblem.
>>
>> Die LA-Traces sprechen gegen beide diese Hypothesen.
>
> Hallo Jörg, ich finde es nicht gut, meine Aussage so aus dem
> Zusammenhang zu reißen.

Nun ja, so sehr aus dem Zusammenhang war's ja nun auch nicht.  Ich
wollte dir auch keinesfalls damit "auf die Zehen treten", sorry.

Allerdings hatten wir weiter oben bereits die LA-Traces von Christoph
und mir verglichen und festgestellt, dass das JTAGICE3 in beiden
Fällen die gleichen Signalfolgen erzeugt.  Der Unterschied zwischen
beiden Traces bestand ausschließlich darin, dass bei mir der ATmega16
in ca. der Hälfte des geposteten Bilds dann auf TDO seine Antworten
generiert, während er bei Christoph stumm bleibt.  Damit ist aber
klar, dass das JTAGICE3 bei Christoph ordentlich funktionieren muss
(zumindest bis zu diesem Zeitpunkt) und auch der Treiber (über dessen
"Qualität" ich dir nicht widersprechen möchte ;-) sein Werk getan
haben muss, dem ICE den entsprechenden Auftrag des Atmel Studio
runterzureichen.

von F. F. (foldi)


Lesenswert?

>
> Nun ja, so sehr aus dem Zusammenhang war's ja nun auch nicht.  Ich
> wollte dir auch keinesfalls damit "auf die Zehen treten", sorry.
>
> Allerdings hatten wir weiter oben bereits die LA-Traces von Christoph
> und mir verglichen und festgestellt, dass das JTAGICE3 in beiden
> Fällen die gleichen Signalfolgen erzeugt.  Der Unterschied zwischen
> beiden Traces bestand ausschließlich darin, dass bei mir der ATmega16
> in ca. der Hälfte des geposteten Bilds dann auf TDO seine Antworten
> generiert, während er bei Christoph stumm bleibt.  Damit ist aber
> klar, dass das JTAGICE3 bei Christoph ordentlich funktionieren muss
> (zumindest bis zu diesem Zeitpunkt) und auch der Treiber (über dessen
> "Qualität" ich dir nicht widersprechen möchte ;-) sein Werk getan
> haben muss, dem ICE den entsprechenden Auftrag des Atmel Studio
> runterzureichen.

Da ich ja nicht so ein Crack wie ihr bin und auch nicht immer alles 
verstehe oder entsprechende Schlussfolgerungen nicht immer so herleiten 
kann, habe ich mich ja bewusst sehr vorsichtig ausgedrückt.

Aber schon gut, Schwamm drüber.

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.