Forum: Mikrocontroller und Digitale Elektronik PIC Problem mit Quarz


von Quarzi (Gast)


Lesenswert?

Salu zusammen

Ich habe hier ein Problem mit einem PIC18F46K80 und einem 16MHz Quarz. 
Um hier nicht eine riesen Story loszubrechen, schreibe ich mal 
Stichwortartig auf, was die Situation im Moment ist.

Quarz 16Mhz, PLL*4, kein Seriewiderstand, Kondensatoren je 22pF. Config 
Bits (Fuses) sind korrekt eingestellt auf diese Quarzfrequenz.

Zurzeit besteht mein Programm darin, einfach einen Portpin über Timer0 
anzusteuern (Interrupt). Die Frequenz welche ich am Portpin sehe 
entspricht derjenigen die es sein soll (laut Timer0 Settings). Also 
eigentlich alles so wie es sein sollte. Eigentlich...

Problem:

So jedes 5-10te Mal wenn ich die Schaltung aufstarte (Spannung anlege) 
Ist die Frequenz welche ich am Portpin messe ca. 8.5% langsamer. Nach 
einem weiteren PowerDown/Up ists dann wieder korrekt. Ist auch nicht 
zyklisch. Manchmal gehts 2x nicht und danach wieder zig mal gut. Wenn 
die Frequenz dann nicht stimmt, kann ich kurz mit dem Finger an eine 
Seite des Quarzes greifen und schon stimmt die Frequenz wieder und 
bleibt dann auch korrekt. Ich habe auch keinen Jitter oder so, die 
Frequenz steht bei beiden "Varianten" still wie eine Eins. Den Quarz 
selber kann ich halt nur mit einer normalen KO-Sonde messen, dann stimmt 
die Frequenz halt immer (16MHz). Die Last C's habe ich mal vergrössert, 
aber dann schwingt er teilweise nicht mehr an. Ebenfalls sehe ich, dass 
der Quarz nicht übersteuert wird. WEnn ich das Gehäuse des Quarzes 
anfasse (wenn er falsch schwingt) hat keinen Einfluss, ich muss wirklich 
an den Pin des Quarzes greifen.

Habt ihr eine Ahnung an was das liegen könnte? Mein Programm schliesse 
ich aus da ich wirklihc nur die Timer0 Routine drin habe und es ja durch 
manipulieren der Schaltung (Finger) richtig läuft.

Es Grüessli

Quarzi

von Quarzi (Gast)


Lesenswert?

Sorry, hier noch der Link zum verbauten Quarz

https://www.distrelec.ch/quarz-smd-16-mhz/auris/q-16-00000m-hc49ussmd-f3030d32/335035

Habe für einen Test auch einen anderen Quarz (anderer Hersteller, 
gleiche Frequenz) eingesetzt und da hatte ich dasselbe Phänomen.

Ebenfalls habe ich bereits alles nochmals nachgelötet. Der Pic ist auch 
gut abgeblockt. Mehrere Pakete a 1uF//100nF/10nF.

Störungen welche sonst auf dem Board sein könnten schliesse ich aus, da 
ich die anderen Schaltungsteile bereits physikalisch abgetrennt habe.

Grüessli

Quarzi

von Frank K. (fchk)


Lesenswert?

Wie hast Du FOSC in CONFIG1H eingestellt? HS1 oder HS2?

Meine Vermutung: Du übersteuerst den Oszilator. Also auf HS1 Medium 
Power gehen und ggf. einen Widerstand vor den OSC2-PIN, so 1-2k.

fchk

von Jens M. (Gast)


Lesenswert?

Quarzi schrieb:
> So jedes 5-10te Mal wenn ich die Schaltung aufstarte (Spannung anlege)
> Ist die Frequenz welche ich am Portpin messe ca. 8.5% langsamer.

Schwingt vielleicht nicht an und der interne OSC läuft (bei Fallback)

In dem Fall wird ein Flag gesetzt, vielleicht mal prüfen.


Lesenswert ist:
AN943 Practical PICmicro® Oscillator Analysis and Design

http://ww1.microchip.com/downloads/en/AppNotes/00943A.pdf


Theorie gibt es hier:

http://ww1.microchip.com/downloads/en/AppNotes/00826a.pdf

von Carsten (Gast)


Lesenswert?

Hallo,

Hatte mal was ähnliches.
11,0592 MHz Quarz am CC03er. Mal lief das Programm, mal startete es 
nicht und ab und zu stotterte es irgendwie.

Hab das erstmal aus Zeitgründen nicht weiter verfolgt, nur immer im 
Hinterkopf gehabt.
Bis ich dann (nach Tagen) bemerkt habe, das es ein Temperaturproblem 
ist.
Wenn ich den Quarz einen Moment angefasst habe lief das Programm, hörte 
dann später wieder auf. Draussen lief garnichts. Auf der Heizung dann 
wieder Tagelang.

Der Quarz war neu und lief ja, deswegen habe ich den erst nicht 
vermutet, ihn dann aber doch getauscht. Und dann lief es!!

Hatte ich auch noch nie.

Carsten

von K. D. (deka)


Lesenswert?

Es klingt zwar billig aber wie weit sind denn deine Wege vom Quarz zum 
PIC?
Hast mal ein Bild von deinem Aufbau?
In welcher Umgebung wird das ganze betrieben? -> mal versucht zu 
schirmen?
Hast du die Config-Bits sicher im Griff?
Selbes Ergebnis wenn du die PLL aus machst?
Welche Betriebsspannung hast du? - es gehen nicht alle Modi bei allen 
Betriebsspannungen!

von Klein Doofie mit Plüschohren (Gast)


Lesenswert?

Es gibt i.d.R. strikte Vorgaben vom Chiphersteller, wie Quarze an den 
Baustein anzuschließen sind (Leitungslänge, Groundlayer usw.)
Microchip hat das ganz bestimmt auch in irgendeiner AppNote drinn.
Außerdem erinnere ich mich dunkel, daß zumindest beim PIC24 auch noch 
die unterstützten Quarz-Typen eingeschränkt sind.

von Quarzi (Gast)


Lesenswert?

Salu zusammen

Bitte entschuldigt für die späte Antwort.

Vielen Dank für die zahlreichen Antworten. Ich arbeite schon länger mit 
PIC, aber mit besagtem Typ (18F46K80) noch nicht. Bis jetzt hatte ich 
eigentlich noch nie solche Probs, lief immer 1a und das bei 
unterschiedlichen PIC Derivaten. Das Layout ist, denke ich ziemlich 
optimal. Habe einige Jahre Layouts gemacht, von daher sollte das schon 
hinkommen. Leitungen ca. 10mm, keine Leitungen unter dem Quarz ect. Die 
GND Leitung der Lastkondensatoren war nicht 100% optimal, hab ich aber 
korrigiert, leider 0 Verbesserung der Situation

@ Frank K.
Ich habe den Quarz als HS1 laufen. Mit Serienwiderstand war es eher noch 
schlimmer (220R), sprich bei fast jedem Einschalten ging es nicht und 
die Frequenz stimmte nicht. Übersteuern glaub ich nicht, habe 
diesbezüglich auch die Appnotes von Microchip durch und da hat es 
KO-Bilder wie es aussehen sollte. Bin ich eigentlich ziemlich genau 
dran. Bis jetzt funktionierts mit 0R am besten.

@Jens Martin
Muss ich in der Tat mal überprüfen, merci für den Tipp!

@Carsten
Kenne solche Phänomene, habe so was ähnliches mal in einer Firma in 
einem riesen Q-Fall durchgemacht. Ich rauf mir jetzt noch die Haare 
(welche ich damals verloren habe ;o)
Hier liegts jedoch nicht daran, ist die Frequenz falsch hilft nur 
Anfassen des QUARZANSCHLUSSES (Seite mit Dämpfungswiderstand), nicht des 
Gehäuses. Gehäuse schliesse ich aus, werde es aber zur Sicherheit mal 
über einen kleinen Kondensator auf GND hängen

@K.D.
Yup, das ist leider auch bereits alles gecheckt
- Leitungen (siehe Einleitung)
- PLL aus --> 4x langsamer, aber gleiches Verhalten
- Umfeld bereits verändert (anderer Raum)
- Die Geschichte läuft an +5V, sollte von daher möglich sein 16MHz * 4 = 
64MHz zu "fahren". Btw. Es ist ein 18F46K80I-PT, also nicht der 
Automotive Typ welcher nicht bis dorthin spezifiert ist.
- Ob ich die Config Bits im Griff habe... Naja, hoffe es, aber wer ist 
sich schon immer sicher wenn er was Neus machen muss ;o) Habe aber mal 
drübergeschaut und kann mir nicht mehr erklären was ich übersehen haben 
könnte.



@ALL
Hm, ja also das einzige was ich mich gerade frage ist, ob der 
Kondensator am PIN VDDCORE einen Einfluss darauf haben könnte. Ich habe 
dort einen 10uF Keramikkondensator (LowESR) verbaut. Ist das vielleicht 
zu viel und der startet zu langsam? PowerOnTimer ist ebenfalls an, 
lediglich den MCLR Pin habe ich (wie bis jetzt immer) nicht mit einem 
Kondensator betrieben. Der Kondensator kann ja dann dazu benutzt werden 
den PIC noch im Reset zu halten wenn er startet. Funktionierte wie 
gesagt bis jetzt tadellos.

Tja und sonst werde ich wohl mal den PIC runterreissen und einen neuen 
draufmachen. Dann kann ich wenigstens definitiv ausschliessen, dass ein 
Bauelement defekt ist. Der PIC ist übrigens ein Sample, bei Samples 
weiss man ja nie so genau...

Es Grüessli und auf weitere Idee'en ;o)

Quarzi

von Quarzi (Gast)


Lesenswert?

Angenommen der PIC startet und der externe Quarz schwingt nicht an. Nun 
schaltet er auf den Internen um. Wenn jetzt der externe Quarz, welcher 
laut Configuration Bits auch richtig gesetzt ist anschwingt, schaltet 
dann der PIC automatisch auch wieder auf die externe Quelle um?

Grüessli

von bingo (Gast)


Lesenswert?

16 MHz: kann es sein, dass das ein Oberwellen-Quarz ist???

von Frank K. (fchk)


Lesenswert?

Quarzi schrieb:

> Bis jetzt funktionierts mit 0R am besten.

Ok, dann wars das nicht.

Was Du auch versuchen kannst: 1M parallel zum Quarz. Hilft unwilligen 
Exemplaren beim Anschwingen und schadet sonst nicht.

> Hm, ja also das einzige was ich mich gerade frage ist, ob der
> Kondensator am PIN VDDCORE einen Einfluss darauf haben könnte. Ich habe
> dort einen 10uF Keramikkondensator (LowESR) verbaut. Ist das vielleicht
> zu viel und der startet zu langsam?

Nein, ich mache bei mir auch immer einen 10u X7R 16V im 1206 an VCAP, 
und ich habe nie irgendwelche Probleme deswegen gehabt.

fchk

von Jens P. (Gast)


Lesenswert?

Ich hatte auch mal ne Schaltung, die nur unregelmässig wollte (glaubich 
mit 20MHz damals). Die lief wesentlich stabiler, nachdem ich die 
kleinsten empfohlenen Kondis genommen hab. (also wenn da steht 15-33pF, 
ruhig 15 nehmen!).

von ga4wga4g (Gast)


Lesenswert?

Aus dem Bauch raus würde ich auch sagen, dass die beiden
Kondensatoren zu groß gewählt wurden. Die liegen meistens
eher bei 10p.

Durch eine Quarzvermessung des Quarzherstellers wirst Du
wahrscheinlich den Fehler in einer ungünstigen µC/Quarzkombination
finden, es sei dein, irgendein Bauteil ist schuld.

von Werner (Gast)


Lesenswert?

Wie sieht in den beiden Fällen das Signal am ClkOut aus?
Was gibt der Hersteller des Quarzes für Kapazitätswerte an und was sagt 
er zu Parallel-/Serienresonanz?

von Der Rächer der Transistormorde (Gast)


Lesenswert?

Quarzi schrieb:
> Wenn jetzt der externe Quarz, welcher
> laut Configuration Bits auch richtig gesetzt ist anschwingt, schaltet
> dann der PIC automatisch auch wieder auf die externe Quelle um?

Meines Wissens nein. Macht auch keinen Sinn da bei "wackelquarzen" dann 
ständig hin und her gequarzt würde. Welcher aktiv ist siehst du an den 
RegisterFlags ob und ob der externe "wieder" stable ist.  Rest steht im 
Datenblatt, also RTFM.

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.