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
Schicke mal ein Foto von dem entsprechenden Abschnitt der Platine. 22pF scheint mir erstmal korrekt zu sein.
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: > Fuses sind auf ext. crystal osc, Stell' ihn auf "Full swing crystal...". Dann schwingt der rail-to-rail. mfg.
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.
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.