AVR JTAGICE für wenig Geld

E

Erik Hermann

Guest
Ich weiss nicht ob es allgemein bekannt ist, unter
http://www.case2000.com/JtagIce/bootice.html
ist der ziemliche einfache Nachbau eines kompatiblen
JTAG interface beschrieben, das einwandfrei mit dem
AVRStudio 4 von Atmel läuft.
Komplette Unterlagen inclusive sourcen und Schaltbild
gibts unter http://home.sch.bme.hu/~cell/atmel/AVR_JTAG/avr_jtag.zip
Das Ding funktioniert einwandfrei.
Einzig den MAX232 sollte man gegen einen anderen Typ ersetzen
(z.B. MAX3323), sofern man nicht nur 5V, sondern auch 3,3V
AVR's dabuggen will.
Ich hab noch nicht soviel experimentiert mit dem Ding, aber
bis jetzt konnte es alles das, was auch der originale JTAGICE
kann.
Ich habe die Variante mit dem ATMega16 verwendet, da es der
original vorgesehenen Mega163 ein Auslauftyp ist.
für den Mega16 ist im Archiv ein passender Bootloader.
Dieser Bootloader bringt nach dem Update der firmware mit
AVRPROG einen Fehler beim verify, den kann man getrost ignorieren,
es geht trotzdem.
 
Erik,

das sieht sehr interessant aus! Ist dir aufgefallen, dass doch ein
recht herber Unterschied zwischen der Schaltung auf case2000.com und
dem ungarischen (?) ZIP-File (dort die .gif-Datei) besteht? Die Pins
5,7 und 9 am JTAG-Connector sind unterschiedlich verschaltet (lt.
Atmel App-Note sollte die ungarische Schaltung korrekt sein)! Entweder
das eine oder das andere funktioniert nicht - welche Schaltung hast du
ausprobiert?

Leider fehlt bei der ungarischen Schaltung - meiner Meinung nach -
auch eine korrekte Verschaltung der Referenzspannung (siehe Schaltung
auf case2000.com)und der Reset-Line; darüber hinaus könnte das Ganze
noch ein paar Widerstände und Kondensatoren auf den Signalleitungen
vertragen.

Ich würde mich gerne etwas näher damit beschäftigen und eine
'vollständige' Schaltung entwerfen; leider kann ich mit den
mitgelieferten Protel und Orcad-Files nichts anfangen. Kannst du mir
ggf. einen Screenshot der anderen Schaltbilder senden - würde mir die
Zeit für Download und Installation eines Viewers sparen!?!

Gruß

Mark
 
Mark Neugebauer <NOSPAM.Mark.Neugebauer@gmx.de> wrote:

das sieht sehr interessant aus! Ist dir aufgefallen, dass doch ein
recht herber Unterschied zwischen der Schaltung auf case2000.com und
dem ungarischen (?) ZIP-File (dort die .gif-Datei) besteht? Die Pins
5,7 und 9 am JTAG-Connector sind unterschiedlich verschaltet (lt.
Atmel App-Note sollte die ungarische Schaltung korrekt sein)! Entweder
das eine oder das andere funktioniert nicht - welche Schaltung hast du
ausprobiert?
Das Teil funktioniert schon, es hat eben nur keine Pegelwandler drin,
keinen Überspannungsschutz etc. Ich habe mir eins mit paar
Primitiv-Pegelwandlern gebau (mit 74HC Logik, erst danach hat mich
jemand auf MAX337x Pegelwandler hingewiesen), das tut völlig
ordentlich.

Ich weiß nicht, was in dem ,ungarischen' File drin ist, ist das der
uralte Atmel-Schaltplan?

Die case2000 Schaltung hat das wirklich alles auf Minimum reduziert.
Es ist keine Überprüfung der Target-Spannung mehr da, und man kann
auch keinen Reset im Target auslösen.
--
J"org Wunsch Unix support engineer
joerg_wunsch@interface-systems.de http://www.interface-systems.de/~j/
 
Das Teil funktioniert schon, es hat eben nur keine Pegelwandler drin,
keinen Überspannungsschutz etc. Ich habe mir eins mit paar
Primitiv-Pegelwandlern gebau (mit 74HC Logik, erst danach hat mich
jemand auf MAX337x Pegelwandler hingewiesen), das tut völlig
ordentlich.

Ich weiß nicht, was in dem ,ungarischen' File drin ist, ist das der
uralte Atmel-Schaltplan?

Die case2000 Schaltung hat das wirklich alles auf Minimum reduziert.
Es ist keine Überprüfung der Target-Spannung mehr da, und man kann
auch keinen Reset im Target auslösen.
Ich kenne bisher nur die Schaltung, die direkt auf der Internetseite
bei case2000 abgebildet ist (die Protel-Files kann ich derzeit nicht
einsehen). In dem 'ungarischen File' gibt es einen Schaltplan von
Atmel mit Datum vom 26.02.2001 - der Schaltplan basiert aber auf dem
AT90S8535 und ist wohl nur zur Information 'beigelegt'. Der
eigentliche Bauvorschlag findet sich in der Datei
'AVR_JTAG_schematic.gif'. In meinem obigen Posting bezog ich mich auf
den Unterschied zwischen diesem .gif und der auf case2000 abgebildeten
Schaltung. Eine von beiden ist nach meiner Meinung mit Sicherheit
falsch; vgl. Beschaltung des JTAG-Adapters. Die .gif-Schaltung enthält
darüber hinaus eine 'JTAG-Activity'-Anzeige und eine externe
'low-voltage'-Überwachung; letztere ist nach meiner Information
überflüssig, da der AT163 eine interne Brown-out-Überwachung hat!

Benötigt man wirklich unbedingt Pegelwandler? Ich hätte vorgeschlagen,
einen MAX3232 und die Version ATMega163L zu verwenden. Beide arbeiten
mit einer Betriebsspannung von 2.7V - 5.5 Volt. Somit hat man dann den
gesamten interessanten Bereich abgedeckt; oder habe ich da zu kurz
gedacht? Problematisch könnte allerdings sein, dass die
'low-voltage'-Version des 163L maximal mit 4MHz getaktet werden kann -
für die Schaltung sind 7,... MHz vorgesehen! Die MAX-Bausteine kannte
ich auch nicht; ich würde aber auch die 74HC-Lösung bevorzugen, da die
MAXes zumindest bei Reichelt nicht zu bekommen sind.

Hat die Case2000-Schaltung wirklich keine Überprüfung der
Target-Spannung mehr? Ich hätte vermutet, dass dies über Port PA2
realisiert ist - dieser ist mit PIN 4 des JTAG-Connectors verbunden.
Was die Reset-Leitung angeht, sehe ich es genauso - allerdings sollte
man diese Funktionalität doch schnell ergänzen können, sofern man den
entsprechenden PIN des AT163 kennt. Wenn ich es richtig verstehe, ist
dies doch einzig von der zukünftig 'aufzuspielenden' Firmware
abhängig.

Sofern ich die notwendigen Informationen zusammen bekomme, würde ich
gerne eine Schaltung mit den zusätzlichen Features entwerfen
(Pegelwandler; Reset; Referenzspannungsprüfung; JTAG-Anzeige;
alternative externe Spannungsversorgung).

Gruß

Mark
 
Mark Neugebauer wrote:
Schaltung. Eine von beiden ist nach meiner Meinung mit Sicherheit
falsch; vgl. Beschaltung des JTAG-Adapters. Die .gif-Schaltung enthält
darüber hinaus eine 'JTAG-Activity'-Anzeige und eine externe
'low-voltage'-Überwachung; letztere ist nach meiner Information
überflüssig, da der AT163 eine interne Brown-out-Überwachung hat!
Ich habe die Schaltung aus dem .gif verwendet, allerdings mit einem
mega16L statt einem 163. Zusätzlich habe ich einen ISP Steckverbinder
spendiert, damit ich den Mega16 direkt in der Schaltung programmieren
kann. Allerdings werden die SPI Leitungen sowohl für ISP als auch
für JTAG verwendet, man darf also nicht beide Stecker gleichzeitig
verwenden.

Benötigt man wirklich unbedingt Pegelwandler? Ich hätte vorgeschlagen,
einen MAX3232 und die Version ATMega163L zu verwenden. Beide arbeiten
mit einer Betriebsspannung von 2.7V - 5.5 Volt. Somit hat man dann den
Jep. Ich hatte allerdings gerade keinen passenden MAX zur Hand,
werde ich überprüfen sobald ich einen habe.


gesamten interessanten Bereich abgedeckt; oder habe ich da zu kurz
gedacht? Problematisch könnte allerdings sein, dass die
'low-voltage'-Version des 163L maximal mit 4MHz getaktet werden kann -
für die Schaltung sind 7,... MHz vorgesehen! Die MAX-Bausteine kannte
ich auch nicht; ich würde aber auch die 74HC-Lösung bevorzugen, da die
MAXes zumindest bei Reichelt nicht zu bekommen sind.
Es gibt auch andere Bausteine, z.B. die 74LVX mit dualer Versorgung.
Hat Farnell im Programm.


Hat die Case2000-Schaltung wirklich keine Überprüfung der
Target-Spannung mehr? Ich hätte vermutet, dass dies über Port PA2
Macht wenig Sinn, wenn der Debugger aus der Zielschaltung versorgt wird.
Deshalb ist auch der PA2 in der Schaltung direkt mit Vcc verbunden,
was ja auch der Zielspannung entspricht, aber leider mangels Ver-
gleichsmöglichkeit keine absolute Spannungsmessung erlaubt.

Was die Reset-Leitung angeht, sehe ich es genauso - allerdings sollte
man diese Funktionalität doch schnell ergänzen können, sofern man den
entsprechenden PIN des AT163 kennt. Wenn ich es richtig verstehe, ist
dies doch einzig von der zukünftig 'aufzuspielenden' Firmware
abhängig.
So ist es. Werde ich bei Gelegenheit mal ausprobieren.


Sofern ich die notwendigen Informationen zusammen bekomme, würde ich
gerne eine Schaltung mit den zusätzlichen Features entwerfen
(Pegelwandler; Reset; Referenzspannungsprüfung; JTAG-Anzeige;
alternative externe Spannungsversorgung).
Ich finde es eigentlich ganz praktisch, wenn der Debugger aus der
Zielschaltung versorgt wird. Selbst beim AVR Butterfly mit Mega169
wird empfohlen, diesen beim debuggen extern zu versorgen.
Der Reset wäre nett, ist aber nicht unbedingt erforderlich, da der
Zielcontroller auch so über den JTAG steuer- und programmierbar ist.
Der Reset wird nicht benötigt, um den Controller in den debug modus
zu bringen.
Ich mir die nächsten Tage erst mal eine Platine sauber aufbauen,
mein erster Versuch war eine umgefädelte Platine mit einem Mega16L
im TQFP Gehäuse nebst Lochrasterplatine mit MAX232.
Ich hatte gerade keinen Mega16 im DIP Gehäuse zur Hand.
 
Mark Neugebauer <NOSPAM.Mark.Neugebauer@gmx.de> wrote:

In dem 'ungarischen File' gibt es einen Schaltplan von Atmel mit
Datum vom 26.02.2001 - der Schaltplan basiert aber auf dem AT90S8535
und ist wohl nur zur Information 'beigelegt'.
Ja, das kannte ich schon. Ist recht nützlich um mal zu sehen, was
sich Atmel überhaupt so dabei gedacht hat. Das aus dieser Schaltung
resultierende Board dürfte übrigens bei Atmel nach wie vor in
Benutzung sein, nur daß mittlerweile statt des AT90S8535 ein ATmega16
benutzt wird und damit der AT90S1200 (der nur als Bootlader benutzt
worden ist, AVR910 halt) entfallen kann.

Der eigentliche Bauvorschlag findet sich in der Datei
'AVR_JTAG_schematic.gif'. In meinem obigen Posting bezog ich mich auf
den Unterschied zwischen diesem .gif und der auf case2000
abgebildeten Schaltung.
Habe mir jetzt die ungarischen Files mal geholt.

Wo ist auf case2000 denn eine Schaltung abgebildet, ich sehe da nur
eine Beschreibung? Diese Beschreibung wiederum stimmt mit dem
ungarischen GIF überein.

Die .gif-Schaltung enthält darüber hinaus eine
'JTAG-Activity'-Anzeige
Auch diese ist in der case2000-Beschreibung erwähnt.

... und eine externe 'low-voltage'-Überwachung; ...
Nein, eine simple LED, die "power on" signalisieren kann, mehr nicht.
Hat nichts mit einer brown-out detection oder sowas zu tun (die man
übrigens auch erstmal einschalten muß, ist standardmäßig aus). Das
originale JTAG ICE hat eine solche LED übrigens auch, sowie noch eine
für die Kennzeichnung von Vtarget (von dessen Schaltstufe dort
übrigens PD3 abgeleitet wird, während die case2000 Beschreibung und
das ungarische GIF dieses Pin mit einem Widerstand auf Masse legen und
damit signalisieren, daß Vtarget immer anliegen würde).

Benötigt man wirklich unbedingt Pegelwandler?
Nicht unbedingt, aber auf ein paar Probleme ohne diese bist Du ja
schon gestoßen.

Problematisch könnte allerdings sein, dass die 'low-voltage'-Version
des 163L maximal mit 4MHz getaktet werden kann - für die Schaltung
sind 7,... MHz vorgesehen!
Richtig, wobei die Nutzung eines ATmega16L (ist ohnehin der Ablösetyp
für den ATmega163) hier Abhilfe schafft, da dieser bis 8 MHz
spezifiziert ist.

Außerdem kann das originale JTAG-ICE alles von 1,7 bis 6,2 V,
zumindest den unteren Teil wirst Du ohne Wandler nicht abdecken können
(der ATmega169 ist so weit herunter spezifiziert) -- allerdings können
meine einfachen 74HC-Wandler das auch nicht. Die MAX-Typen können das
aber.

Die MAX-Bausteine kannte ich auch nicht; ich würde aber auch die
74HC-Lösung bevorzugen, da die MAXes zumindest bei Reichelt nicht zu
bekommen sind.
Naja, die 2 Stück, die man für einen privaten Nachbau bräuchte, lassen
sich bei Maxim erfahrungsgemäß locker als Samples bekommen.

Hat die Case2000-Schaltung wirklich keine Überprüfung der
Target-Spannung mehr?
Ja, das ist PD3, siehe Originalschaltplan (der zugegebenerweise nicht
gerade einfach zu entschlüsseln ist).

Ich hätte vermutet, dass dies über Port PA2 realisiert ist - dieser
ist mit PIN 4 des JTAG-Connectors verbunden.
Der liegt aber auf Vcc, wird also immer 6,2 V behaupten. Wird nur für
die Anzeige der Spannung benutzt, die Erkennung des zugeschalteten
Targets dagegen wird mit PD3 gemacht. Wenn Du PD3 auf high legst,
dann meldet Dir AVR Studio, daß Du zwar einen OCD-Adapter hast, aber
das Target nicht eingeschaltet ist. PA2 dagegen kannst Du locker auch
auf Masse legen, da es in dieser Beschaltung sowieso nutzlos ist.
(Das hätte nur Sinn, wenn Vcc = 5,0 V garantiert ist und PA2 über
einen Spannungsteiler an Vtarget liegt.)

Was die Reset-Leitung angeht, sehe ich es genauso - allerdings sollte
man diese Funktionalität doch schnell ergänzen können, sofern man den
entsprechenden PIN des AT163 kennt.
nSRST ist im Original sowohl Ein- als auch Ausgang, das macht es etwas
komplizierter. Der JTAG ICE treibt es mit einem OC-Ausgang und
Pullup, um so via Kommando einen target reset auslösen zu können, aber
ein im Target ausgelöster Reset soll auch abgefragt werden können.

Wenn ich es richtig verstehe, ist dies doch einzig von der zukünftig
'aufzuspielenden' Firmware abhängig.
Hast Du denn was anderes als die Atmel-Firmware dafür?

Das freeice-Projekt favorisiert eine komplett andere Lösung für die
Hardware. Insofern hat dieser Nachbau wohl wirklich nur Sinn in
Verbindung mit der originalen Atmel-Firmware.

Sofern ich die notwendigen Informationen zusammen bekomme, würde ich
gerne eine Schaltung mit den zusätzlichen Features entwerfen
(Pegelwandler; Reset; Referenzspannungsprüfung; JTAG-Anzeige;
alternative externe Spannungsversorgung).
Habe ich praktisch bereits. Die URL für die BAE-Files habe ich glaub
ich schon mal gepostet, allerdings sind da noch known bugs drin, die
ich erst beim Ausprobieren festgestellt habe, aber noch nicht in den
Schaltbildern korrigieren konnte. Außerdem ist derzeit noch keine
Spannungsversorgung vorgesehen, da sollte zumindest eine simple
Variante noch mit dazu. Die Funktion von PD3 habe ich auch erst
empirisch verstanden, das ist einer der jetzigen Fehler.

Sorry, Eagle benutze ich nicht mehr, falls Du danach fragen solltest.
Da der Schaltplaneditor von BAE frei ist und die Demoversion lediglich
keine Ausgabe (Drucken des Layouts) im Layouteditor gestattet,
solltest Du Dir das zumindest ansehen können. URL habe ich nicht im
Kopf, müßtest Du aber mit groups.google.com finden können.

Außerdem interessieren mich die MAX-Pegelwandler schon noch, ich
wollte versuchen, ob man eine Platine hinbekommt, die man alternativ
entweder mit den Maxen oder mit 74HC bestücken kann.
--
J"org Wunsch Unix support engineer
joerg_wunsch@interface-systems.de http://www.interface-systems.de/~j/
 
Hi Joerg,

Der eigentliche Bauvorschlag findet sich in der Datei
'AVR_JTAG_schematic.gif'. In meinem obigen Posting bezog ich mich auf
den Unterschied zwischen diesem .gif und der auf case2000
abgebildeten Schaltung.

Habe mir jetzt die ungarischen Files mal geholt.

Wo ist auf case2000 denn eine Schaltung abgebildet, ich sehe da nur
eine Beschreibung? Diese Beschreibung wiederum stimmt mit dem
ungarischen GIF überein.
OK, offensichtlich kenne ich das (falsche) Schaltbild aber leider
nicht die Textbeschreibung (habe ich jetzt gefunden) und ungekehrt!
Schau unter dem bereits oben geposteten Link nach - dort findest du
die Schaltung.

... und eine externe 'low-voltage'-Überwachung; ...

Nein, eine simple LED, die "power on" signalisieren kann, mehr nicht.
Hat nichts mit einer brown-out detection oder sowas zu tun (die man
übrigens auch erstmal einschalten muß, ist standardmäßig aus). Das
originale JTAG ICE hat eine solche LED übrigens auch, sowie noch eine
für die Kennzeichnung von Vtarget (von dessen Schaltstufe dort
übrigens PD3 abgeleitet wird, während die case2000 Beschreibung und
das ungarische GIF dieses Pin mit einem Widerstand auf Masse legen und
damit signalisieren, daß Vtarget immer anliegen würde).
Ich bezog mich auf das IC U3 - es stellt aus meiner Sicht eine
'low-voltage'-Überwachung für den uC dar; und ist - wie gesagt -
überflüssig?!? (sehe ich das richtig?)

Benötigt man wirklich unbedingt Pegelwandler?
Mir gefällt die Idee, (zwei) alternative Bausteine für die
Pegelwandlung vorzusehen; dann kann jeder nach seinen Bedürfnissen
entscheiden und ggf. 'aufrüsten'. Weiter oben wurde ja bereits noch
eine weitere Alternative diskutiert.

Hat die Case2000-Schaltung wirklich keine Überprüfung der
Target-Spannung mehr?

Ja, das ist PD3, siehe Originalschaltplan (der zugegebenerweise nicht
gerade einfach zu entschlüsseln ist).

Ich hätte vermutet, dass dies über Port PA2 realisiert ist - dieser
ist mit PIN 4 des JTAG-Connectors verbunden.

Der liegt aber auf Vcc, wird also immer 6,2 V behaupten. Wird nur für
die Anzeige der Spannung benutzt, die Erkennung des zugeschalteten
Targets dagegen wird mit PD3 gemacht. Wenn Du PD3 auf high legst,
dann meldet Dir AVR Studio, daß Du zwar einen OCD-Adapter hast, aber
das Target nicht eingeschaltet ist. PA2 dagegen kannst Du locker auch
auf Masse legen, da es in dieser Beschaltung sowieso nutzlos ist.
(Das hätte nur Sinn, wenn Vcc = 5,0 V garantiert ist und PA2 über
einen Spannungsteiler an Vtarget liegt.)
PD3 wird genutzt, um das eingeschaltete Target zu erkennen (AN/AUS?) -
habe ich verstanden. Aber: Welche Rolle spielt PA2 (auch wenn diese
nicht Voraussetzung für die Funktion ist, finde ich die Frage
interessant). In der Original-Schaltung (und in der Schaltung auf
case2000) liegt PA2 über einen Spannungsteiler an Pin 4 (JTAG) =
Referenzspannung. Wird hier ggf. über den ADC die Targetspannung
gemessen?

Was die Reset-Leitung angeht, sehe ich es genauso - allerdings sollte
man diese Funktionalität doch schnell ergänzen können, sofern man den
entsprechenden PIN des AT163 kennt.

nSRST ist im Original sowohl Ein- als auch Ausgang, das macht es etwas
komplizierter. Der JTAG ICE treibt es mit einem OC-Ausgang und
Pullup, um so via Kommando einen target reset auslösen zu können, aber
ein im Target ausgelöster Reset soll auch abgefragt werden können.
Wenn man das nicht realisieren möchte, könnte man ja zumindest einen
Taster vorsehen, um manuell einen Reset zu realisieren.

Wenn ich es richtig verstehe, ist dies doch einzig von der zukünftig
'aufzuspielenden' Firmware abhängig.

Hast Du denn was anderes als die Atmel-Firmware dafür?
Nein, natürlich nicht - ich hatte zu diesem Zeitpunkt noch nicht
realisiert, dass der Original-Schaltplan alle Informationen enthält,
die benötigt werden.

Sofern ich die notwendigen Informationen zusammen bekomme, würde ich
gerne eine Schaltung mit den zusätzlichen Features entwerfen
(Pegelwandler; Reset; Referenzspannungsprüfung; JTAG-Anzeige;
alternative externe Spannungsversorgung).

Habe ich praktisch bereits. Die URL für die BAE-Files habe ich glaub
ich schon mal gepostet,
....
URL habe ich nicht im
Kopf, müßtest Du aber mit groups.google.com finden können.
Habe den Link leider nicht gefunden?!? Würde mich sehr interessieren -
wenn du die Zeit findets, würde ich mich über den Link freuen.

Außerdem interessieren mich die MAX-Pegelwandler schon noch, ich
wollte versuchen, ob man eine Platine hinbekommt, die man alternativ
entweder mit den Maxen oder mit 74HC bestücken kann.
Sehe ich genauso! Es wurde bereits oben ein 74-Typ mit zwei Spannungen
erwähnt - vielleicht ist das ebenfalls eine Überlegung wert?!?

Gruß

Mark
 
Hi Erik,

Ich habe die Schaltung aus dem .gif verwendet, allerdings mit einem
mega16L statt einem 163. Zusätzlich habe ich einen ISP Steckverbinder
spendiert, damit ich den Mega16 direkt in der Schaltung programmieren
kann. Allerdings werden die SPI Leitungen sowohl für ISP als auch
für JTAG verwendet, man darf also nicht beide Stecker gleichzeitig
verwenden.
Gute Idee - sollte man unbedingt so machen. Ein paar Widerstände in
den Leitungen sollten dann auch die Gefahr beseitigen, dass Target und
Programmer zugleich angeschlossen werden und die Schaltungen
beschädigt werden.

Es gibt auch andere Bausteine, z.B. die 74LVX mit dualer Versorgung.
Hat Farnell im Programm.
Klingt gut - werde ich mir noch ansehen!

Hat die Case2000-Schaltung wirklich keine Überprüfung der
Target-Spannung mehr? Ich hätte vermutet, dass dies über Port PA2

Macht wenig Sinn, wenn der Debugger aus der Zielschaltung versorgt wird.
Deshalb ist auch der PA2 in der Schaltung direkt mit Vcc verbunden,
was ja auch der Zielspannung entspricht, aber leider mangels Ver-
gleichsmöglichkeit keine absolute Spannungsmessung erlaubt.
OK, aber wenn der Debugger extern versorgt würde, dann wäre PA2 für
die Messung der Targetspannung zuständig?!? (siehe auch mein Posting
bzgl. Joerg)

Was die Reset-Leitung angeht, sehe ich es genauso - allerdings sollte
man diese Funktionalität doch schnell ergänzen können, sofern man den
entsprechenden PIN des AT163 kennt. Wenn ich es richtig verstehe, ist
dies doch einzig von der zukünftig 'aufzuspielenden' Firmware
abhängig.

So ist es. Werde ich bei Gelegenheit mal ausprobieren.
Berichte deine Erfahrungen bitte!

Sofern ich die notwendigen Informationen zusammen bekomme, würde ich
gerne eine Schaltung mit den zusätzlichen Features entwerfen
(Pegelwandler; Reset; Referenzspannungsprüfung; JTAG-Anzeige;
alternative externe Spannungsversorgung).

Ich finde es eigentlich ganz praktisch, wenn der Debugger aus der
Zielschaltung versorgt wird.
Das sollte für die meisten Fälle auch ausreichen; allerdings ist der
Aufwand für eine zusätzliche externe Versorgung ja überschaubar und
könnte ja auch als Alternative ausgelegt werden.

Ich mir die nächsten Tage erst mal eine Platine sauber aufbauen,
mein erster Versuch war eine umgefädelte Platine mit einem Mega16L
im TQFP Gehäuse nebst Lochrasterplatine mit MAX232.
Ich hatte gerade keinen Mega16 im DIP Gehäuse zur Hand.
Wenn du einen Schaltplan zusammen hast, würde ich mich über einen
kurzen Blick darauf freuen!

Gruß

Mark
 
Mark Neugebauer wrote:
Ich bezog mich auf das IC U3 - es stellt aus meiner Sicht eine
'low-voltage'-Überwachung für den uC dar; und ist - wie gesagt -
überflüssig?!? (sehe ich das richtig?)
Beim Mega16 auf jeden Fall überflüssig. Wenn man eine BOD braucht, kann
man sie mit den fuses des M16 einschalten.
 
Mark Neugebauer <NOSPAM.Mark.Neugebauer@gmx.de> wrote:

Wo ist auf case2000 denn eine Schaltung abgebildet, ...

OK, offensichtlich kenne ich das (falsche) Schaltbild aber leider
nicht die Textbeschreibung (habe ich jetzt gefunden) und ungekehrt!
Schau unter dem bereits oben geposteten Link nach - dort findest du
die Schaltung.
Hmm, da steht aber "BootICE" drüber, nicht JTAG ICE. Mir sieht das
Teil irgendwie danach aus, als wäre es für eine andere Firmware
gedacht.

... und eine externe 'low-voltage'-Überwachung; ...

Nein, eine simple LED, die "power on" signalisieren kann, mehr
nicht.

Ich bezog mich auf das IC U3 - es stellt aus meiner Sicht eine
'low-voltage'-Überwachung für den uC dar; und ist - wie gesagt -
überflüssig?!? (sehe ich das richtig?)
Ja, in der Tat. Sowas habe ich auch nicht vorgesehen.

Benötigt man wirklich unbedingt Pegelwandler?

Mir gefällt die Idee, (zwei) alternative Bausteine für die
Pegelwandlung vorzusehen; dann kann jeder nach seinen Bedürfnissen
entscheiden und ggf. 'aufrüsten'. Weiter oben wurde ja bereits noch
eine weitere Alternative diskutiert.
Allerdings geht das auf Kosten der Komplexität der Platine. Ist
vielleicht kein Thema, wenn man sie fertigen läßt (da kostet nur die
Fläche, ein paar mehr Vias stören nicht so sehr), aber wenn man die
Vias in Fädeltechnologie fummeln muß, ist das nicht so toll.

Vielleicht probiere ich auch beide Varianten auf 2 verschiedenen
Platinen.

PD3 wird genutzt, um das eingeschaltete Target zu erkennen (AN/AUS?)
- habe ich verstanden.
Ja, genau, AN/AUS. Die interne Firmware fragt das ab, bevor sie
weitermacht. Du siehst ja in der Originalschaltung, daß das dort
zusammen mit der LED für die Target-Spannung geklemmt ist.

Aber: Welche Rolle spielt PA2 (auch wenn diese
nicht Voraussetzung für die Funktion ist, finde ich die Frage
interessant). In der Original-Schaltung (und in der Schaltung auf
case2000) liegt PA2 über einen Spannungsteiler an Pin 4 (JTAG) =
Referenzspannung. Wird hier ggf. über den ADC die Targetspannung
gemessen?
Genau das, mit Vcc als Referenz, d. h. es ist unsinnig, wenn man Vcc
== Vtarget hat, geht beim originalen JTAG ICE auch per Schalter, die
ungarische und die case2000 Version machen das offenbar nur so. Dann
hat man immer 5,0 V in der Anzeige. Die Anzeige ist aber rein
informativ (im AVR Studio), sie hat sonst keine Funktion.

Was beide auch weggelassen haben ist die Hardware-ID, die
entsprechenden Eingänge sind floating (da die Firmware dafür auch
keine pullups schaltet), d. h. Du müßtest eine zufällige
Hardware-Version im AVR Studio auslesen. Das derzeitige Original von
Atmel dagegen hat 0x0c (ich glaube, die AT90S8535-Version hatte noch
eine andere).

nSRST ist im Original sowohl Ein- als auch Ausgang, das macht es etwas
komplizierter. Der JTAG ICE treibt es mit einem OC-Ausgang und
Pullup, um so via Kommando einen target reset auslösen zu können, aber
ein im Target ausgelöster Reset soll auch abgefragt werden können.
Nebenbei: die derzeitige Firmware des JTAG ICE fragt dieses Pin nicht
ab. Da AVR Studio aber bei Vorhandensein einer neuen Firmware darauf
besteht, das JTAG ICE zu upgraden, sollte man das vielleicht trotzdem
realisieren. Ich hab's jedenfalls mit vorgesehen.

Wenn man das nicht realisieren möchte, könnte man ja zumindest einen
Taster vorsehen, um manuell einen Reset zu realisieren.
Hilft nur bedingt. Wenn Du den entsprechenden Port noch für normale
IO brauchst, kannst Du mittels JTD Bit (MCUCSR) die JTAG-Funktion
abschalten. In diesem Falle will AVR Studio einen Reset auslösen um
zu verhindern, daß das Mikroprogramm schon startet und dieses Bit
setzen kann. Auf diese Weise wäre dennoch ein Debugging möglich. Die
entsprechende Funktionalität verlierst Du mit der manuellen Methode.

Habe ich praktisch bereits. Die URL für die BAE-Files habe ich glaub
ich schon mal gepostet,

Habe den Link leider nicht gefunden?!? Würde mich sehr interessieren -
wenn du die Zeit findets, würde ich mich über den Link freuen.
Da ich sowieso gerade beim Überarbeiten der Schaltpläne bin, um sie an
meine bereits vorgenommenen Hardware-Bugfixes anzupassen, warte mal
noch bißchen, dann gibt's eine aktuelle Version.

Derweil mal zum Angucken:

http://www.sax.de/~joerg/jtag-ice-1.jpg
http://www.sax.de/~joerg/jtag-ice-2.jpg

Das ist das derzeitige Muster. Bereits mit Hardware-Bugfixes (im
zweiten Bild ist beispielsweise gut ein Widerstand mit Drahtbrücke an
Masse zu sehen für PD3, linke untere Ecke des ATmega16), aber noch
ohne einen 78L05. Der sollte aber in einer SMD-Version locker noch
mit unterzubringen sein.
--
J"org Wunsch Unix support engineer
joerg_wunsch@interface-systems.de http://www.interface-systems.de/~j/
 
Joerg:

Hmm, da steht aber "BootICE" drüber, nicht JTAG ICE. Mir sieht das
Teil irgendwie danach aus, als wäre es für eine andere Firmware
gedacht.
Ich denke, dass ist schon für den JTAG ICE - nur leider falsch
gezeichnet. Der Titel BootICE findet sich ja auch auf der anderen
Seite (soweit ich das erinnere). Ist aber auch nicht wirklich wichtig
- ich wollte nur noch mal die Bestätigung bekommen, dass diese
Schaltung so keinen Sinn macht.

Allerdings geht das auf Kosten der Komplexität der Platine. Ist
vielleicht kein Thema, wenn man sie fertigen läßt (da kostet nur die
Fläche, ein paar mehr Vias stören nicht so sehr), aber wenn man die
Vias in Fädeltechnologie fummeln muß, ist das nicht so toll.

Vielleicht probiere ich auch beide Varianten auf 2 verschiedenen
Platinen.
Entwickelst du in SMD? Eigentlich sollte die Schaltung mit etwas
Geduld (ohne Auto-Router) doch auch einseitig mit ein paar Brücken
möglich sein. Würde ich zumindest mal versuchen wollen.

Was beide auch weggelassen haben ist die Hardware-ID, die
entsprechenden Eingänge sind floating (da die Firmware dafür auch
keine pullups schaltet), d. h. Du müßtest eine zufällige
Hardware-Version im AVR Studio auslesen. Das derzeitige Original von
Atmel dagegen hat 0x0c (ich glaube, die AT90S8535-Version hatte noch
eine andere).
Das ist mir noch gar nicht aufgefallen - werde ich mir noch mal
ansehen!

Da ich sowieso gerade beim Überarbeiten der Schaltpläne bin, um sie an
meine bereits vorgenommenen Hardware-Bugfixes anzupassen, warte mal
noch bißchen, dann gibt's eine aktuelle Version.
Gerne!

Gruß

Mark
 
Mark Neugebauer <NOSPAM.Mark.Neugebauer@gmx.de> wrote:

Hmm, da steht aber "BootICE" drüber, nicht JTAG ICE. Mir sieht das
Teil irgendwie danach aus, als wäre es für eine andere Firmware
gedacht.

Ich denke, dass ist schon für den JTAG ICE - nur leider falsch
gezeichnet.
Ja, das Teil kann offenbar ja einiges mehr als nur AVR JTAG ICE, aber
für eben diesen Zweck ist zumindest der JTAG-Stöpsel flasch belegt.
(Kann er ja mit 'nem Kabel ausgeglichen haben.)

Vielleicht probiere ich auch beide Varianten auf 2 verschiedenen
Platinen.

Entwickelst du in SMD?
Ja, siehe auch die Fotos. Macht mehr Spaß, braucht weniger Platz, und
trotz der unvermeidlichen Vias muß man weniger bohren.

Eigentlich sollte die Schaltung mit etwas Geduld (ohne Auto-Router)
doch auch einseitig mit ein paar Brücken möglich sein. Würde ich
zumindest mal versuchen wollen.
Vermutlich, aber ich sehe da nicht viel Sinn drin. :) (Für mich.)
Eine Platine muß man ja sowieso fertigen, und ob ich nun 2 x 15
Lötstellen für die Drahtbrücken und 40 Lötstellen für den AVR
etc. pp. löten muß oder 50 Vias, ist mir egal.

SMD sieht zumindest schicker aus. :))

Da ich sowieso gerade beim Überarbeiten der Schaltpläne bin, um sie
an meine bereits vorgenommenen Hardware-Bugfixes anzupassen, warte
mal noch bißchen, dann gibt's eine aktuelle Version.

Gerne!
Eine erste Version habe ich schon, bei der ich nur die Bugfixes
korrigiert und noch einen 78L05 mit draufgesetzt habe, danach diese
Details neu geroutet.

Ich werde das Board mal zur Seite legen und den Autorouter nochmal
anwerfen, vielleicht wird ja ein komplett neu geroutetes sogar besser.

Das ist aber jetzt alles noch mit 74HC-Technik.
--
J"org Wunsch Unix support engineer
joerg_wunsch@interface-systems.de http://www.interface-systems.de/~j/
 
Joerg Wunsch <j@ida.interface-business.de> wrote:

Eine erste Version habe ich schon, bei der ich nur die Bugfixes
korrigiert und noch einen 78L05 mit draufgesetzt habe, danach diese
Details neu geroutet.

Ich werde das Board mal zur Seite legen und den Autorouter nochmal
anwerfen, vielleicht wird ja ein komplett neu geroutetes sogar besser.
Hat sich gelohnt. Die alte Version, manuell nachbearbeitet, hatte
immerhin 56 Vias. Nochmal neu routen lassen, trotz größerer Vias
(damit man nicht unbedingt einen Bohrer <= 0,5 mm braucht ;-) sind es
nur noch 38 Vias, also schon weniger, als ein PDIP ATmega16 Pins
hätte. :)

Der derzeitige Stand unter:

http://www.sax.de/~joerg/jtag-ice.zip

Schaltplan, Bestückungszeichnung (sieht bissel wirr aus) und die
extrahierten Layouts. Bis auf ganz wenige Dinge sind das jetzt
erstmal die Rohfassungen, wie sie der Autorouter ausgespuckt hat.
Insbesondere müßten da noch Masseflächen eingezogen werden

Bisher bitte noch nicht weiterverbreiten oder benutzen, ohne mich zu
fragen.
--
J"org Wunsch Unix support engineer
joerg_wunsch@interface-systems.de http://www.interface-systems.de/~j/
 
"Joerg Wunsch" <j@ida.interface-business.de> schrieb im Newsbeitrag
news:bmplou$1bdj$1@innocence.interface-business.de...
Joerg Wunsch <j@ida.interface-business.de> wrote:

...
Der derzeitige Stand unter:

http://www.sax.de/~joerg/jtag-ice.zip
...
Hallo Joerg,
ich würde das Ganze gerne mal nachbauen, da ich hier ein Board mit
einem 163er habe.
Wo gibt es denn die notwendige Software(Source oder Rom-Image) dafür?

Läuft eigentlich JTAG-ICE im AVR mit einer festen Baudrate von 115200?
Falls ja, dann werde ich wohl um den 7,37..MHz Quartz nicht herumkommen.

Zum Schaltplan:
Ich sehe da einen 74HC32 als Empfänger. Falls der mit 5V versorgt wird,
dann muß aber die Targetspannung(VTREF) >3V sein. Besser wäre da ein
74HCT32. Dann könnte die Targetspannung bis herunter zu 1.5V sein.

Gruß
Helmut
 
Ich schrieb:

Der derzeitige Stand unter:

http://www.sax.de/~joerg/jtag-ice.zip

Schaltplan, Bestückungszeichnung (sieht bissel wirr aus) und die
extrahierten Layouts. Bis auf ganz wenige Dinge sind das jetzt
erstmal die Rohfassungen, wie sie der Autorouter ausgespuckt hat.
Insbesondere müßten da noch Masseflächen eingezogen werden
Habe ich nochmal aktualisiert. Hat nun doch noch paar Vias mehr, aber
ich hatte in der vorigen Fassung vergessen, um die Pins der
bedrahteten Bauteile herum Sperrflächen für die Bestückungsseite
anzulegen, so daß dort teilweise Leiterzüge gelandet waren. Macht
sich vor allem unter den Pfostensteckern und dem DB9-Stecker nicht so
gut... Das ist jetzt behoben, und die freien Flächen sind mit
Masseflächen gefüllt, so gut es geht.

Wen's interessiert, der kann das ja gern mal testen. Die CAD-Datei
(BAE) gibt's auf Anfrage ebenfalls.
--
J"org Wunsch Unix support engineer
joerg_wunsch@interface-systems.de http://www.interface-systems.de/~j/
 
Helmut Sennewald <HelmutSennewald@t-online.de> wrote:

ich würde das Ganze gerne mal nachbauen, da ich hier ein Board mit
einem 163er habe.
Wo gibt es denn die notwendige Software(Source oder Rom-Image) dafür?
Siehe http://www.case2000.com/JtagIce/

Es wird die Atmel-Firmware selbst genommen, indem Du einen Bootlader
programmierst und dann mittels AVR-Studio ,,upgradest''. Der
Bootlader dort ist wohl nur für ATmega163 (nicht ATmega16), da müßte
man sich noch nach einem neuen umsehen. Oder man bekommt das Image
,,irgendwoher'' und kann es via ISP programmieren. ;-)

Läuft eigentlich JTAG-ICE im AVR mit einer festen Baudrate von 115200?
Nein, nicht ausschließlich, sie ist einstellbar, initial 19200.

Falls ja, dann werde ich wohl um den 7,37..MHz Quartz nicht herumkommen.
Das allerdings trotzdem.

Ich sehe da einen 74HC32 als Empfänger. Falls der mit 5V versorgt wird,
dann muß aber die Targetspannung(VTREF) >3V sein. Besser wäre da ein
74HCT32. Dann könnte die Targetspannung bis herunter zu 1.5V sein.
Nein, der wird mit VTREF versorgt, das ist ja der Sinn der Sache,
daher auch ein OC-Treiber (bzw. besser OD ;).

Ich habe es auch schon mit VTREF = 2,7 V getestet, weiter nach unten
begibt man sich dann sicher außerhalb der Grenzwerte.
--
J"org Wunsch Unix support engineer
joerg_wunsch@interface-systems.de http://www.interface-systems.de/~j/
 
"Joerg Wunsch" <j@ida.interface-business.de> schrieb im Newsbeitrag
news:bmtd8r$2uq2$1@innocence.interface-business.de...
Helmut Sennewald <HelmutSennewald@t-online.de> wrote:

ich würde das Ganze gerne mal nachbauen, da ich hier ein Board mit
einem 163er habe.
Wo gibt es denn die notwendige Software(Source oder Rom-Image) dafür?

Siehe http://www.case2000.com/JtagIce/

Es wird die Atmel-Firmware selbst genommen, indem Du einen Bootlader
programmierst und dann mittels AVR-Studio ,,upgradest''. Der
Bootlader dort ist wohl nur für ATmega163 (nicht ATmega16), da müßte
man sich noch nach einem neuen umsehen. Oder man bekommt das Image
,,irgendwoher'' und kann es via ISP programmieren. ;-)

Läuft eigentlich JTAG-ICE im AVR mit einer festen Baudrate von 115200?

Nein, nicht ausschließlich, sie ist einstellbar, initial 19200.

Falls ja, dann werde ich wohl um den 7,37..MHz Quartz nicht herumkommen.

Das allerdings trotzdem.

Ich sehe da einen 74HC32 als Empfänger. Falls der mit 5V versorgt wird,
dann muß aber die Targetspannung(VTREF) >3V sein. Besser wäre da ein
74HCT32. Dann könnte die Targetspannung bis herunter zu 1.5V sein.

Nein, der wird mit VTREF versorgt, das ist ja der Sinn der Sache,
daher auch ein OC-Treiber (bzw. besser OD ;).

Ich habe es auch schon mit VTREF = 2,7 V getestet, weiter nach unten
begibt man sich dann sicher außerhalb der Grenzwerte.
Hallo Joerg,
vielen Dank für deine Antworten.
Da ist mir gerade noch aufgefallen, daß in deinem Schaltplan deine LED100
mit der Kathode an Vcc hängt. Das muß wohl gerade umgekehrt sein.

Schade finde ich, daß Atmel das JTAG-Interface nur bei den neueren
ATMEGA16 und höher verwendet. Das hätte denen auch mal früher einfallen
können.

Gruß
Helmut
 
Helmut Sennewald <HelmutSennewald@t-online.de> wrote:

Da ist mir gerade noch aufgefallen, daß in deinem Schaltplan deine
LED100 mit der Kathode an Vcc hängt. Das muß wohl gerade umgekehrt
sein.
Hoppla. Richtig eingelötet habe ich sie natürlich in meinem Muster
:), daher ist mir nie aufgefallen, daß der Schaltplan gar nicht
stimmt. LED101 genauso.

Schade finde ich, daß Atmel das JTAG-Interface nur bei den neueren
ATMEGA16 und höher verwendet. Das hätte denen auch mal früher einfallen
können.
Nö, generell wollen sie JTAG wohl erst ab 16 KB ROM machen, warum auch
immer (Pinzahl allein kann es nicht sein, da ja ATmega16x auch nur
40pinnig sind). Selbst die neueren ATmega{8,8515,8535} haben keins,
dafür sollen die kleineren Chips künftig DebugWire bekommen, so daß
man nur ein einziges Pin für die Emulatoranbindung braucht.
--
J"org Wunsch Unix support engineer
joerg_wunsch@interface-systems.de http://www.interface-systems.de/~j/
 
Joerg Wunsch wrote:

Siehe http://www.case2000.com/JtagIce/

Es wird die Atmel-Firmware selbst genommen, indem Du einen Bootlader
programmierst und dann mittels AVR-Studio ,,upgradest''. Der
Bootlader dort ist wohl nur für ATmega163 (nicht ATmega16), da müßte
man sich noch nach einem neuen umsehen. Oder man bekommt das Image
Unten auf der Seite ist der Link für den M16 Bootloader.
Wer lesen kann...
Ausserdem enthält mein Originalposting auch den Link zu dem
Zip mit allen Unterlagen inclusive Bootloader für 163 und 16
und sourcen. Auch mal die Mühe machen, den ganzen thread zu
lesen ;-)
 
j@ida.interface-business.de (Joerg Wunsch) wrote in message news:<bms9nq$2g9k$1@innocence.interface-business.de>...

Habe ich nochmal aktualisiert.
Hi Joerg,

super Arbeit!!!

anbei noch einige Dinge, die mir aufgefallen sind:

Als D104 (über dem Spannungsregler) sollte doch eigentlich eine
'normale' 1N4004 ausreichen, oder? Schottkys sind immer etwas teuer
und meistens schwerer zu bekommen; allerdings kommt es bei der 'Menge'
auf den Preis auch nicht an.

VTREF liegt über D103 parallel zur Versorgungsspannung. Somit wird
auch VTREF - je nach Innenwiderstand der Quellen - mit dem
Betriebsstrom des JTAGICE belastet?!? Wozu ist die Verbindung zwischen
VTREF und VCC notwendig?

Ist D100 (über dem RESET Pull-up) wirklich notwendig? Sie soll - so
verstehe ich es - als Schutz gegen zu hohe Spannung des
Programmier-Adapters dienen?!? Hoffentlich liegt dort (im
Programmier-Adapter) dann ein Widerstand zur Strombegrenzung in der
Leitung?!? Gleiches sollte dann aber auch für die anderen
Programmier-Eingänge (SCK, MISO ??? - aus dem Kopf geraten) gelten
(oder haben die eine entsprechende interne Absicherung - ich habe
gerade kein Datenblatt zur Hand). Denke ich hier schief?

Gruß

Mark
 

Welcome to EDABoard.com

Sponsor

Back
Top