Moin,
ich habe ein Problem mit einer AVR Schaltung. Der Controller bekommt
seinen Takt von einem externen 20 MHz Quarz. An den Quarzpins sind zwei
22 pF Keramikondensatoren nach Masse. Fuses sind auf ext. crystal osc,
8.0- MHz, 16K CK + 65 ms Startup Time gesetzt (CKSEL=1111 SUT=11). Wenn
ich mir das Signal am Quarz angucke, sehe ich oft (s.u.) plötzliche
Peaks in der Amplitude, wobei die Quarz-Frequenz augenscheinlich stabil
bleibt. Je nach dem ab welcher Amplitude man so einen Peak als Ausreißer
definiert, treten diese grob >=100 µs (<=10 KHz) auf. Das anhängende
Bild zeigt ein Oszilogramm eines solchen Vorgangs. Die
Versorgungsspannung zeigt zu diesen Zeitpunkten keine "Peaks". Was
könnte da los sein?
Möglicherweise war ich zu leichtfertig beim Layout der entspr. Platine
(siehe Anhnag)? Könnte das Problem darin liegen, dass die beiden
Leiterbahnen vom Quarz zum µC sehr unterschiedlich lang sind?
Tatsächlich habe ich auch etwas undefinierbare Probleme mit der
Schaltung: in der Regel läuft sie sauber (wobei man ein bis zwei
verschluckte Prozessortakte ja aber kaum mitbekommt), manchmal hat die
Schaltung aber Anlaufschwierigkeiten beim Anlegen der Stromversorgung.
Ich bin für alle Hinweise sehr dankbar!
Gruß
John
Hallo,
das Foto wird nicht viel zusätzliche Info gegebüber dem oben geposteten
Bild vom PCB liefern, oder? Ich guck mal ob ich meine Cam startklar
bekomme... Was kommen prinzipiell für Ursachen in Frage?
Gruß
John
Mögliche Probleme:
- 22pF für gewählten Quarz vielleicht etwas hoch?
- Dielektrikum der Kondensatoren?
- 20MHz Quarz kann schon auf ungewollten Oberwellen anschwingen.
- Messmethode korrekt (ich sehe ein PC-Scope? Kann das bei 20MHz noch
vernünftig messen --> Aliasing des Messinstrumentes)
John schrieb:> Möglicherweise war ich zu leichtfertig beim Layout der entspr. Platine> (siehe Anhnag)?
Das Layout dort könnte sicher verbessert werden (gerade, weil der AVR
einen GND Pin direkt neben den Oszillator-Pins hat:
http://www.lothar-miller.de/s9y/categories/33-Quarz), aber ich vermute,
das ist eher nicht das Problem. Lass den uC doch mal im Reset und miss
dann nochmal. Sind die Sprünge dann immer noch da?
> Könnte das Problem darin liegen, dass die beiden> Leiterbahnen vom Quarz zum µC sehr unterschiedlich lang sind?
Darüber diskutieren wir frühestens wieder, wenn du im GHz Bereich
unterwegs bist...
> Anlaufschwierigkeiten beim Anlegen der Stromversorgung.
Wie sieht denn die Versorgung aus? Ist da ein Schaltnetzteil beteiligt?
Hallo Harald,
das Scope ist ein billig stand-alone MSO (Owon MSO7102T), es behauptet
bis 100 MHz messen zu können. Aliasing kann man, denke ich,
aussschließen. Der Scrrenshot stammt von der zugehörigen WIN-Software.
Die Kondensatoren sind standard SMD (0805)
Vielschicht-Keramikkondensatoren.
Welchen Effekt hat die Verkleinerung der Kondensatoren? Das Atmel
Datenblatt empfiehlt 12-22 pF. Der verwendete Quarz hat laut Datenblatt
eine Lastkapazität von 30 pF. Da ja die µC Pins und die Platine auch
noch eine gewisse Kapazität haben, dachte ich die 22 pF seien okay. Aber
im Detail fehlt mir da das Hintergrundwissen...
Danke!
John
Quarz ist hochohmig, da kann man nur mit nem 10:1 Tastkopf (10MOhm)
messen.
Setz mal die CKOUT-Fuse und messe an dem Ausgang. Den kannst Du mehr
belasten.
Peter
Hallo,
> Lass den uC doch mal im Reset und miss> dann nochmal. Sind die Sprünge dann immer noch da?
Hatte ich auch schon gemacht: Wenn ich ihn im Reset halte wird die
Amplitude der Ausreißer kleiner. Sie sind im Lauf bis ca 800 mV (+/- 400
mV) groß, im Reset bis ca 680 mV (+/- 340 mV) groß - kein großer
Unterschied, aber eindeutig reproduzierbar.
> Wie sieht denn die Versorgung aus? Ist da ein Schaltnetzteil beteiligt?
Ja, ist es, schlimmer noch: Versogung über USB ;-). Auf der Platine ist
ein FT232R, wenn der PC das okay gibt, wird die USB Versorgungspannung
auf den AVR und den Rest durchgeschaltet. Die Schaltung ist 100% analog
dem Vorschlag aus dem FT232R Datenblatt (Fig 6.3). Allerdings kann ich
zu den Zeitpunkten diese Peaks im Takt nichts in der Versorgungspannung
finden...
> Quarz ist hochohmig, da kann man nur mit nem 10:1 Tastkopf (10MOhm)> messen.
Habe ich getan.
> Setz mal die CKOUT-Fuse und messe an dem Ausgang. Den kannst Du mehr> belasten.
Ist nicht so günstig, weil PB1 auf der Platine als Eingang beschaltet
ist. Wenn's nicht anders geht muss ich da nochmal gucken.
Danke!
John
John schrieb:>> Setz mal die CKOUT-Fuse und messe an dem Ausgang. Den kannst Du mehr>> belasten.>> Ist nicht so günstig, weil PB1 auf der Platine als Eingang beschaltet> ist.
Hast du noch irgendeinen der OCx-Ausgänge frei? Die kann man so
programmieren, dass sie f_CPU/2 ausgeben.
> Hast du noch irgendeinen der OCx-Ausgänge frei? Die kann man so> programmieren, dass sie f_CPU/2 ausgeben.
Leider ist der ganze Port B als Eingang vorgesehen. Wenn es die einzige
Möglichkeit ist, muss ich da ggf eine Leitung auftrennen...
Um das auch nochmal zu sagen: Wenn das Phänomen dazu führt, dass
zwischendurch mal ein Takt verschluckt wird, so das nicht schön, aber zu
verkraften. Mich interessiert aber natürlich trotzdem, was die Ursache
für das Ganze ist. Außerdem habe ich, wie oben schon angedeutet manchmal
(selten zwar) das Problem, dass die Controller beim Einstecken der USB
Verbindung nicht korrekt anläuft - wobei der Quarz dann aber bei 20 MHz
schwingt. Das muss nun aber wiederum nichts mit dem unsauberen Quarz
Signal zu tun haben...
Gruß
John
John schrieb:>> Hast du noch irgendeinen der OCx-Ausgänge frei? Die kann man so>> programmieren, dass sie f_CPU/2 ausgeben.>> Leider ist der ganze Port B als Eingang vorgesehen.
Danach hatte ich nicht gefragt, und es beantwortet die Frage nur
zum Teil. Hier mal alle potenziellen OCx-Ausgänge, die nicht
am Port B sind:
(PCINT28/XCK1/OC1B) PD4
(PCINT29/OC1A) PD5
(PCINT30/OC2B/ICP) PD6
PD7 (OC2A/PCINT31)
Hallo,
> Hier mal alle potenziellen OCx-Ausgänge, die nicht> am Port B sind:
Sorry, ich habe gepennt, hast völlig Recht.
Tatsächlich hat aber
> Stell' ihn auf "Full swing crystal...".
geholfen. Der Quarz schwingt dadurch (natürlich) mit deutlich größerer
Amplitude und ohne die Ausreißer. Das sind eben die Nachteile wenn man
sich diese Dinge unsystematisch durch learning-by-doing beibringt, da
hat man doch immer wieder beklagenswerte Lücken. Das ware eine davon.
Die jetzt aber geschlossen ist :-).
Ich muss jetzt noch im Auge behalten ob die "undefinierten Zustände"
beim Anstecken der USB Verbindung noch auftreten oder sich damit auch
erledigt haben.
Danke an alle!
John
John schrieb:> Der Quarz schwingt dadurch (natürlich) mit deutlich größerer> Amplitude und ohne die Ausreißer.
Das bekämpft aber u. U. eben das Symptom statt der Ursache.
Wenn es ein Serienprodukt werden soll und eine gewisse Stabilität
gewünscht ist, kommst Du um eine Quarz-Vermessung nicht herum.
Hier wird erst einmal überhaupt geklärt, ob und welcher Quarz
für Deinen µC geeignet ist.
Danch werden die beiden Kondensatorwerte ermittelt,
sowie der Parallel- und Serienwiderstand zum Quarz.
Letztendlich wird noch geprüft, ob die entsprechenden Leistungen
OK sind (Treiberschaltung, Quarzbelastung) und wie weit man
am Schluss von der typischen Quarzfrequenz abweicht und wie
groß die zu erwartenden Toleranzen sind (die ändern sich auch
noch über Lebensdauer + Temperatur).
Die Methode "Nimm einen Quarz und stopsel 2x 22p dran." ist wirklich
nur für den heimischen Bastelaufbau sinnvoll. In der Praxis
liegen die Kondensatorwerte meiner Erfahrung nach eher bei
10p.