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
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
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
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
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!
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.
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
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
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
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!).
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.
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?
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.