Von einem Board mit dsPIC33FJ128MC706A haben sich über die Jahre rund 50 Boards angesammelt, die nach Lieferung durch unseren Bestücker nicht funktiniert haben. Wegen Lieferproblemen eines darauf befindlichen Bauteils würdem wir gerne zumindest einen Teil dieser Boards reparieren.
Bei rund der Hälfte von diesen Boards läßt sich der Prozessor nicht programmieren.
Bei den ersten zehn davon, die ich mir angeschaut habe, läuft der Oscillator nicht, nur sporatisch oder mit falscher Frequenz.
Ich habe nun ATS08ASM-1E Quarze von CTS bestellt (load capacitance 20pF) und gedacht, durch einen simplen Austausch des Quarzes sollte ein ordentliches Oscillatorsignal bei diesen Boards hervorgerufen werden können - weit gefehlt, ich habe nach wie vor ein schwankende Amplitude (siehe Bilder 1 bis 4), auch wenn jetzt das Programmieren nun möglich ist.
Ich mag mir nicht so recht vorstellen, dass der Oszillator nur dann nicht sauber arbeitet, wenn ich mit meinem Oscilloscope-Tastkopf zusätzliche ca. 10pF in die Oscillator-Schaltung einbringe!?
Ich habe schon Versuche mit anderen Werten für R10 (0 - 100Ohm) unternommen
und auch die beiden 22pF Kondensatoren getauscht.
Auch mit R10 = 0Ohm und einem 510k bzw. 1M großen Widerstand parallel zu dem Quarz habe ich getestet, aber nie ein stabiles Oscillatorsignal erhalten.
Sieht jemand ein prizipielles Problem an dieser Oszillatorschaltung?
Ich mag mir nicht so recht vorstellen, dass der Oszillator nur dann
nicht sauber arbeitet, wenn ich mit meinem Oscilloscope-Tastkopf
zusätzliche ca. 10pF in die Oscillator-Schaltung einbringe!?
Einer von den beiden Anschlüssen OSC1 OSC2 ist Ausgang
und einer Eingang. Du mußt am Ausgang Messen.
Und Tastkopf mit Vorteiler 1:10, so daß du 10 MOhm hast.
Dein Fehlerbild spricht für ein Designproblem: gute Anbindung an GND? Unter dem Quarz - auch auf den anderen Layers - keine anderen Leitungen ausser GND?
So blöd es klingt, angeregt durch ein Paper der Fa.Geyer Schwingquarze (Anlage) habe ich die auf S.12 beschrieben asymmetrische Beschaltung bei PICs die nicht so recht schwingen wollten versucht. Das Ergebnis war nicht immer, aber sicher in mehr als 50% der Problem-PICs so, dass der Oszillator stabiler wurde.
Einfach mal ausprobieren!
Wenn alle Stricke reissen: Quarz-Oszillator an OSC1 (=CLKI), ggf. mit kleiner Hilfsplatine
Hallo, Beispiel:
An meinen dsPIC33FJ16MC102 ist der 8MHz-Quarz mit R=1M überbrückt und an den beiden Quarzpins je ein 22p nach GND. Kein R vorm Quarz.
Schwingt Problemlos.
Gruß Peter
Auch mit R10 = 0Ohm und einem 510k bzw. 1M großen Widerstand parallel zu
dem Quarz habe ich getestet, aber nie ein stabiles Oscillatorsignal
erhalten.
Laut DB ist für XT und HS Quarze ein 1MOhm Widerstand zwischen OSC2 und OSC1 zu bestücken.
Mit der jetzigen Standardbeschaltung (2 x 22pF + R10) wird die Phasendrehung nicht ausreichend sein um eine stabile Schwingung sicherzustellen. Deshalb Schleife auftrennen und Amplitudengang und Phase messen. Zusammen mit dem Inverter sollten es idealerweise 0°/360° sein.
Im angefügten Bsp. mit asymmetrischer Beschaltung ist ein zusätzlicher, relativ hochohmiger Serienwiderstand notwendig. Mit 2 x 22p müsste der Serienwiderstand doppelt so hoch ausfallen.
Einer von den beiden Anschlüssen OSC1 OSC2 ist Ausgang
und einer Eingang. Du mußt am Ausgang Messen.
Und Tastkopf mit Vorteiler 1:10, so daß du 10 MOhm hast.
Ich verwende 1:10 und habe sicherheitshalber an beiden Pins
gemessen, da ich noch nicht verifizieren konnte, dass OSC2 tatsächlich der Ausgang ist - ich finde dazu widersprüchliche Angaben (siehe Bilder).
Einen echten Unterschied zwischen den Messungen an OSC2 oder an OSC1 kann
ich eigentlich nicht erkennen.
Hallo, Beispiel:
An meinen dsPIC33FJ16MC102 ist der 8MHz-Quarz mit R=1M überbrückt und an
den beiden Quarzpins je ein 22p nach GND. Kein R vorm Quarz.
Schwingt Problemlos.
Gruß Peter
Diese Variante hab' ich auch schon ausprobiert (R10 = 0R) und 1M
parallel an den Quarz gelötet. Die Schwingprobleme hat das aber auch nicht gelöst.
Ich verwende 1:10 und habe sicherheitshalber an beiden Pins
gemessen, da ich noch nicht verifizieren konnte, dass OSC2 tatsächlich
der Ausgang ist - ich finde dazu widersprüchliche Angaben (siehe
Bilder).
Wo hast Du denn das Bild oscdiads1.jpg her, das kann nicht stimmen. oscdiads2.jpg wäre m.E. ok, auch wenn bei anderen PICs die interne Verschaltung etwas anders ist.
Von einem Board mit dsPIC33FJ128MC706A haben sich über die Jahre rund 50
Boards angesammelt, die nach Lieferung durch unseren Bestücker nicht
funktiniert haben.
Quarze halten keine hohen Beschleunigungen aus. Wenn ein Quarz mal runterfällt, nicht einlöten, sondern wegschmeißen. Sie können noch schwingen, sind aber beschädigt.
Daher werden in Handys auch keine Quarze verwendet, sondern MEMS-Oszillatoren.
Dein Fehlerbild spricht für ein Designproblem: gute Anbindung an GND?
Unter dem Quarz - auch auf den anderen Layers - keine anderen Leitungen
ausser GND?
Das LAyout schaut meines Erachtens gut aus, ich lasse aber gerade von unserem Layouter noch überprüfen, ob sich auf den anderen Lagen was findet, was stören könnte.
Eine unsymmetrische Beschaltung werden ich als nächstes testen.
Wo hast Du denn das Bild oscdiads1.jpg her, das kann nicht stimmen.
oscdiads2.jpg wäre m.E. ok, auch wenn bei anderen PICs die interne
Verschaltung etwas anders ist.
Beide Varianten finden sich z.B. in dsPIC33/PIC24 Family Reference Manual / Oscillator Module (DS70005131A) - oscdiads1.jpg ist dort als Figure 5-1 auf Seite 21 unter 5.0 PRIMARY OSCILLATOR (POSC).
Bei Board #1 ändert eine unsymmetrische Beschaltung (C4 = 68pF) nichts prizipielles (An- und Abschwellen der Frequenz schaut halt ein bißchen anders aus), bei den Boards #2 und #3 (noch mit den ursprünglichen Quarzen) stellt sich nun ein stabile Freqenz ein (siehe vorher und nachher mit 68pF), allerdings nicht die korrekte mit 8MHz, sondern eine etwas unterhalb von 4MHz.
So ein Quarzoszillator kostet doch auch nicht mehr als ein Quarz und Du hast stabile Verhältnisse. Musst ggf noch eine kleine Platine machen. An welchen Anschluss der Oszillator gehört, musst Du halt angesichts der widersprüchlichen Zeichnungen im Datenblatt des IC und des Family Reference Manual / Oscillator Module ausprobieren.
CLKO bedeutet Output, also Taktausgang.
CLKIN bedeutet Input, also Takteingang.
CLKIN und CLKO sind die Namen der Pins für den EC-Mode (External Clock Mode) - Deine Zuordnung ist naheliegend, letztendlich muss es sich mit XT- oder HS-Mode aber nicht so verhalten.
So ein Quarzoszillator kostet doch auch nicht mehr als ein Quarz und Du
hast stabile Verhältnisse.
Seh' ich auch so - selber hab' ich noch kein Board entwicklet,
auf dem sich ein Quarz befindet - hier liegen aber nun mal 25 Boards,
bei denen der Oscillator nicht funktioniert und die man gern reparieren würde, weil sich auf dem Board ein Stromsensor befindet, der derzeit nicht lieferbar ist.
Hab' jetzt insgesamt 10 Boards ohne Erfolg mit einem neuen Quarz ausgestattet - bei zweien geht gar nichts, da könnnte auch der Inverter im dsPIC kaputt sein - irgendwie drängt sich mir aber die Frage auf, ob nicht auch bei den anderen acht der dsPIC schuld ist, nachdem auch Änderungen an der Oscillatorschaltung und vielfältige Änderungen der Dimensionierung nichts bringen!?
So ein Quarzoszillator kostet doch auch nicht mehr als ein Quarz und Du
hast stabile Verhältnisse.
Ich verwende in neuen Platinen und bei Überarbeitung auch nur noch Quarzoszillatoren.
Insbesondere neuere MCs sind aufs Stromsparen optimiert und haben nur noch wenige 100mV am Quarz. Damit sind sie nicht mehr so schwingfreudig, wie bei 5V. Und auch deutlich störempfindlicher.
Die alten AVRs hatten ja noch einen Full-Swing Mode per Fusebit auswählbar. Man hat deutlich gemerkt, wenn man vergessen hat, es zu brennen.
Hab' jetzt insgesamt 10 Boards ohne Erfolg mit einem neuen Quarz
ausgestattet - bei zweien geht gar nichts, da könnnte auch der Inverter
im dsPIC kaputt sein
Anstatt planlos Bauteile zu ersetzen, was hindert dich daran zu messen warum der Oszillator nicht tut wie er soll?
Anstatt planlos Bauteile zu ersetzen, was hindert dich daran zu messen
warum der Oszillator nicht tut wie er soll?
Das sehe ich auch so. Sind vermutlich einfach banale Lötfehler. Ich würde z.B mal versuchen den chipinternen Widerstand an den Quarzpins nachzuweisen, ebenso mal die Widerstände der Quarzpins gegen GND messen.
Typisch ist so eine Oszillatorschaltung nur ein hochohmiger Inverter. Man kann daher recht gut überprüfen, ob der MC defekt ist. Man legt auf den Eingang GND/VCC und mißt am Ausgang, ob er sich gegenläufig verhält. Man muß dazu nichts auslöten.
Das sehe ich auch so. Sind vermutlich einfach banale Lötfehler.
Klar hab' ich, zumindest bei den ersten drei Boards, akribisch nachgewiesen, dass alle Verbindungen vorhanden und die bestückten Bauteile die korrekten Werte haben - daran liegt es nicht.
Über Nacht ist mir aber die Idee gekommen, dass sich die PICs ja eigentlich auch ohne funktionierenden Oscillator programmieren lassen müssten - ein Gegencheck mit einem guten Board hat das bestätigt. Wenn ich also 25 Boards habe, die sich nicht programmieren lassen und bei denen der Oscillator nicht funktioniert, wird wohl der PIC defekt sein!
Schon ein verdammt schlechte Rate - 25 defekte PICs auf vielleicht 2000 Boards!