JTAGICE3 Atmega16-16 keine Verbindung via JTAG

Gast #3155305
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
Moderator Persönliche Seite #3155715
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.
Gast #3155742
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
Gast #3156035
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
Moderator Persönliche Seite #3156107
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.
Angehängte Dateien:
Moderator Persönliche Seite #3156501
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.
Gast #3156538
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?
Moderator Persönliche Seite #3156574
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.
Gast #3156592
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
#3156636
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!
Gast #3156952
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
#3157140
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.
Moderator Persönliche Seite #3157187
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.
#3157247
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren