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
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.
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
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
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
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
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)?
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
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.)
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
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)
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
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.
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
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.