Forum: Mikrocontroller und Digitale Elektronik AVR: Probleme mit ext. Quarz


von John (Gast)


Angehängte Dateien:

Lesenswert?

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

von Stefan (Gast)


Lesenswert?

Schicke mal ein Foto von dem entsprechenden Abschnitt der Platine.

22pF scheint mir erstmal korrekt zu sein.

von John (Gast)


Lesenswert?

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

von Harald (Gast)


Lesenswert?

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)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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?

von John (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von John (Gast)


Lesenswert?

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

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


Lesenswert?

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.

von John (Gast)


Lesenswert?

> 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

von Thomas E. (thomase)


Lesenswert?

John schrieb:
> Fuses sind auf ext. crystal osc,
Stell' ihn auf "Full swing crystal...".
Dann schwingt der rail-to-rail.

mfg.

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


Lesenswert?

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)

von John (Gast)


Lesenswert?

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

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


Lesenswert?

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.

von dt235gq5 (Gast)


Lesenswert?

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.

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.