Forum: Mikrocontroller und Digitale Elektronik JTAG ICE MKII scheint externen Takt nicht zu mögen.


von Harald (Gast)


Lesenswert?

Hallo,

ich hab hier folgendes Problem mit einem Atmega32:
Am Atmega ist eine externer Quarzgenerator angeschlossen (Xtal 1). Die 
Software entwickle ich in GCC unter AVR Studio und das Debugging wird 
mit einem JTAG ICE MKII durchgeführt. Soweit, so gut. Wenn ich nun die 
Fuses so verstelle, daß der Prozessor sich seinen Takt vom externen 
Generator holen soll, dann geht plötzlich gar nichts mehr, ich kann den 
Debug-Modus in AVR Studio nicht mehr aktivieren bzw. es stehen nur noch 
die Optionen "Break" und "Reset" im entsprechenden Menü zur Verfügung, 
und zwar ohne, daß der Debug-Modus vorher aktiviert wurde. Auch 
ansonsten zeigt AVR Studio plötzlich jede Menge Marotten wie Abstürze, 
langsame Reaktion etc.
Ach, ja: Vom ICE kommt immer wieder folgende Meldung zurück:
"IDR even 0x18".
Hat von euch jemand eine Idee, was da falsch läuft? External Clock und 
External Crystal habe ich definitiv nicht verwechselt, Einstellung ist 
CKSEL=0000.

Gruß,
Harald

von Harald (Gast)


Lesenswert?

Hallo,

hab gestern wohl zu einer ungünstigen Zeit gepostet, daher erlaube ich 
mir, meinen Bnochmal nach oben zu bringen.

Gruß,
Harald

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


Lesenswert?

Harald wrote:

> hab gestern wohl zu einer ungünstigen Zeit gepostet, daher erlaube ich
> mir, meinen Bnochmal nach oben zu bringen.

Was ist denn ein Bnochmal?

Anyway, fürs Debuggen muss die JTAG-Taktfrequenz kleiner als 1/4 der
CPU-Frequenz sein.  Wenn du nun einen ziemlich langsamen Quarz dran
hast, dann musst du das JTAG langsamer drehen.  Fürs reine Programmieren
via JTAG gibt es diese Restriktion nicht, da in diesem Moment der
komplette Takt vom JTAG genommen wird.

von Harald (Gast)


Lesenswert?

Hallo,

>Anyway, fürs Debuggen muss die JTAG-Taktfrequenz kleiner als 1/4 der
>CPU-Frequenz sein.  Wenn du nun einen ziemlich langsamen Quarz dran
>hast, dann musst du das JTAG langsamer drehen.  Fürs reine Programmieren
>via JTAG gibt es diese Restriktion nicht, da in diesem Moment der
>komplette Takt vom JTAG genommen wird.

danke für den Hinweis. Der ICE läuft mit 1 MHz, Taktfrequenz des 
Externen Oszillators ist 8 MHz

Gruß,
Harald

von Andreas V. (tico)


Lesenswert?

Funktioniert denn Dein externer Quarzgenerator überhaupt? Wenn du ein 
Programm in den ATmega lädst, das mit dem internen Takt funktioniert und 
Du dann nur die Fuses auf den Quarzgenerator umstellst: Funktioniert das 
Programm weiterhin, läuft der ATmega stabil?

Gruss
Andreas

von Harald (Gast)


Lesenswert?

Hallo,

>Funktioniert denn Dein externer Quarzgenerator überhaupt? Wenn du ein
>Programm in den ATmega lädst, das mit dem internen Takt funktioniert und
>Du dann nur die Fuses auf den Quarzgenerator umstellst: Funktioniert das
>Programm weiterhin, läuft der ATmega stabil?

Der Generator funktioniert, sehe ich im Oszillogramm. Allerdings läuft 
der Kontroller tatsächlich nicht mit externem Takt an (wie du 
geschrieben hast, mit geladenem Programm: mit internem Takt läuft´s, mit 
externem nicht.)

Den Anschluss habe ich grade auch noch mal geprüft; der Takt liegt an 
XTAL1 an, XTAL2 ist nicht belegt.

Gruß,
Harald

von Harald (Gast)


Lesenswert?

Hallo,

merkwürdig - wenn ich die Fuses nicht auf "External Clock" sondern auf 
"External Crystal/Resonator" stelle, geht´s wieder...
...der Quarzgenerator den ich hier habe, spuckt aber einen fertigen 
Rechteck mit 5Vû und 8MHz aus. Ich dachte eigentlich, diese Einstellung 
sei dafür gedacht, einen "nackten" Quarz anzuschließen, der dann vom 
Prozessor angesteuert werden muss...

Gruß,
Harald

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


Lesenswert?

Harald wrote:

> merkwürdig - wenn ich die Fuses nicht auf "External Clock" sondern auf
> "External Crystal/Resonator" stelle, geht´s wieder...

Wie lauten denn die Fuses genau (hexadezimale Werte, beim AVR Studio
sieht man die unten in den messages beim Auslesen)?

von Harald (Gast)


Lesenswert?

Hallo,

CKSEL = 1111, SUT=00

AVR Studio gibt noch die Hex-Werte 0x89 und 0xCF aus. Meintest du das?

Gruß,
Harald

von Harald (Gast)


Angehängte Dateien:

Lesenswert?

Hier noch ein Screenshot der Fuses...

von Andreas V. (tico)


Lesenswert?

Eigentlich sollte es mit CKSEL = 0000 funktionieren. Wenn nicht, kann es 
eigentlich nur an der CKOPT-Fuse liegen. Probier doch mal beide 
Stellungen dieser Fuse aus (vgl. ATmega32a Manual Seite 30 unten).

Gruss
Andreas

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


Lesenswert?

Harald wrote:

> AVR Studio gibt noch die Hex-Werte 0x89 und 0xCF aus. Meintest du das?

Ja, das meinte ich.  0x89 heißt, dass du CKOPT programmiert hast.
Das schaltet laut Datenblatt einen 36-pF-Kondensator parallel zu
XTAL1.  Wolltest du das?

0xCF heißt, dass SUT1:0 auf 00 stehen, das heißt, der Prozessor läuft
nach 6 Takten los.  Bist du dir sicher, dass der Ausgang des XO dann
bereits stabil ist?  (Außerdem ist 0xCF natürlich ein externer
Quarz, du bräuchtest 0xC0, aber ich denke, das ist jetzt deinem Hin-
und Herschalten zuzuschreiben.)

von Harald (Gast)


Lesenswert?

Hallo,

>Ja, das meinte ich.  0x89 heißt, dass du CKOPT programmiert hast.
>Das schaltet laut Datenblatt einen 36-pF-Kondensator parallel zu
>XTAL1.  Wolltest du das?

diese Einstellung war von einem vorhergehenden Versuch übrig. Gerade 
habe ich beide Einstellungen ausprobiert, der Zustand von CKOPT ist 
definitiv nicht relevant.

>0xCF heißt, dass SUT1:0 auf 00 stehen, das heißt, der Prozessor läuft
>nach 6 Takten los.  Bist du dir sicher, dass der Ausgang des XO dann
>bereits stabil ist?

Im Moment funktionierte es so.

>(Außerdem ist 0xCF natürlich ein externer
>Quarz, du bräuchtest 0xC0, aber ich denke, das ist jetzt deinem Hin-
>und Herschalten zuzuschreiben.)

Das ist ja gerade das Skurrile... ...ich habe 0xCF einfach mal 
ausprobiert, und dann ging es. Mit 0xC0 ging definitiv nichts und im 
Moment läuft der Prozessor mit OxCF.
Das angeschlossene Bauteil ist aber auch definitiv ein vollständiger 
Oszillator, zumindest habe ich ihn als solchen Gekauft und halte ich ihn 
ob seiner Funktion dafür: Wenn man ihn an Vcc anschließt, gibt er 
selbständig einen Rechteck mit 5V aus, unabhängig davon, was noch an 
seinem Ausgang angeschlossen ist.

Gruß,
Harald

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


Lesenswert?

Harald wrote:

>>0xCF heißt, dass SUT1:0 auf 00 stehen, das heißt, der Prozessor läuft
>>nach 6 Takten los.  Bist du dir sicher, dass der Ausgang des XO dann
>>bereits stabil ist?
>
> Im Moment funktionierte es so.

Nein, es funktioniert ja gerade nicht -- sonst würden wir ja
hier nicht diskutieren.

> Das ist ja gerade das Skurrile... ...ich habe 0xCF einfach mal
> ausprobiert, und dann ging es. Mit 0xC0 ging definitiv nichts und im
> Moment läuft der Prozessor mit OxCF.

Was wäre denn mit 0xF0?  (SUT1:0 = 11)

von Harald H. (harald_horn)


Lesenswert?

Jörg Wunsch wrote:
> Harald wrote:
>
>>>0xCF heißt, dass SUT1:0 auf 00 stehen, das heißt, der Prozessor läuft
>>>nach 6 Takten los.  Bist du dir sicher, dass der Ausgang des XO dann
>>>bereits stabil ist?
>>
>> Im Moment funktionierte es so.
>
> Nein, es funktioniert ja gerade nicht -- sonst würden wir ja
> hier nicht diskutieren.
Langsam - zuerst hatte ich den Kontroller auf "External Oscillator" 
eingestellt. Das hat nicht funktionier, und ich habe nicht verstanden 
wieso es nicht funktioniert.

Inzwischen (während die Diskussion hier lief) habe ich den  Kontroller 
auf "External Crystal" eingestellt(was ich einfach mal so ausprobiert 
habe) und er funktioniert. Jetzt verstehe ich aber nicht, warum er 
funktioniert, denn meiner Meinung nach habe ich einen kompletten 
Oszillator dran, und zwar so, wie z.B. im AVR-Tutorial gezeigt.
Bei dem Oszillator handelt es sich um dieses Bauteil:

http://www.conrad.de/goto.php?artikel=158119

Das ich das geändert hatte, habe ich letzten Freitag in meinem Posting 
von 11:06 erwähnt:
-----------------------------------------------------------------------
"merkwürdig - wenn ich die Fuses nicht auf "External Clock" sondern auf
"External Crystal/Resonator" stelle, geht´s wieder...
...der Quarzgenerator den ich hier habe, spuckt aber einen fertigen
Rechteck mit 5Vû und 8MHz aus. Ich dachte eigentlich, diese Einstellung
sei dafür gedacht, einen "nackten" Quarz anzuschließen, der dann vom
Prozessor angesteuert werden muss..."
-----------------------------------------------------------------------
Ich hoffe, die Tatsachen jetzt einigermaßen entwirrt zu haben.

Gruß,
Harald

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


Lesenswert?

Harald Horn wrote:

>> Nein, es funktioniert ja gerade nicht -- sonst würden wir ja
>> hier nicht diskutieren.

> Langsam - zuerst hatte ich den Kontroller auf "External Oscillator"
> eingestellt. Das hat nicht funktionier, und ich habe nicht verstanden
> wieso es nicht funktioniert.

Wenn du dort die SUT1:0 auch auf 00 stehen hattest, ist es halt kein
Wunder, dass es dann nicht geht: dein Oszillator müsste ziemlich
schnell zu stabilen Schwingungen gelangen.

> Inzwischen (während die Diskussion hier lief) habe ich den  Kontroller
> auf "External Crystal" eingestellt(was ich einfach mal so ausprobiert
> habe) und er funktioniert. Jetzt verstehe ich aber nicht, warum er
> funktioniert, ...

Weil halt auch in dieser Einstellung am Eingang XTAL1 nur eine
Schwingung erwartet wird.  Die kann zwar (das wäre der eigentliche
Zweck) durch Anregung eines Schwingungselementes über XTAL2
entstanden sein, aber sie kann natürlich auch von irgendwo her sonst
da ankommen.  Allerdings ist der interne Signalweg ein anderer als
beim externen Oszillator, sodass diese Einstellung möglicherweise
weniger Empfindsam auf bestimmte Eigenschaften deines externen Signals
reagiert.

Genauer kann ich das von hier aus allerdings auch nicht erraten, was
bei der anderen Einstellung nicht klappt.

von Harald H. (harald_horn)


Lesenswert?

Hallo,

Jörg Wunsch wrote:
> Harald Horn wrote:
>
>>> Nein, es funktioniert ja gerade nicht -- sonst würden wir ja
>>> hier nicht diskutieren.
>
>> Langsam - zuerst hatte ich den Kontroller auf "External Oscillator"
>> eingestellt. Das hat nicht funktionier, und ich habe nicht verstanden
>> wieso es nicht funktioniert.
>
> Wenn du dort die SUT1:0 auch auf 00 stehen hattest, ist es halt kein
> Wunder, dass es dann nicht geht: dein Oszillator müsste ziemlich
> schnell zu stabilen Schwingungen gelangen.

ich hatte das mit allen drei Möglichkeiten für SUT ausprobiert und habe 
das gerade eben nochmal nachgeprüft - es geht mit keiner 
External-Clock-Einstellung.

Gruß,
Harald

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


Lesenswert?

Harald Horn wrote:

> es geht mit keiner
> External-Clock-Einstellung.

Ist in der Tat seltsam.  Kann eigentlich nur irgendwie an der
Oszillatoramplitude liegen.  Ich kann mir gut vorstellen, dass
man beim Betrieb als Quarzoszillator nur einige 100 mV benötigt,
während bei der Konfiguration als externer Takt dort möglicherweise
der volle Spannungshub erwartet wird.

Das Datenblatt besitzt ein Kapitel "External Clock Drive", dort
sind die Randbedingungen genannt.  U. a. wird gefordert, dass
der Low-Pegel höchstens 0,1 Vcc sein darf und der H-Pegel mindestens
0,7 Vcc ist. Wie gesagt, der interne Oszillator arbeitet nur mit
einigen 100 mV Pegel, damit ist der Eingang dann deutlich empfind-
licher.

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.