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
Hallo, hab gestern wohl zu einer ungünstigen Zeit gepostet, daher erlaube ich mir, meinen Bnochmal nach oben zu bringen. 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)?
Hallo, CKSEL = 1111, SUT=00 AVR Studio gibt noch die Hex-Werte 0x89 und 0xCF aus. Meintest du das? Gruß, Harald
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.