Forum: Mikrocontroller und Digitale Elektronik Quarz Startup Problem


von Michael H. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bin etwas ratlos, denn mein Quarz springt nicht an.
Typisches Quarz Layout, wie man es kennt. C=22p Crystal=8MHz.
Layout im Anhang. (Ist eine 4 Lagen Platine mit GND-Layer)

Quarz:
http://www.mouser.com/ds/2/3/ABMM2-40161.pdf

C: 22p
MCU: MK22FN512

Was ich bisjetzt probiert habe:
Alles durchgepiepet und mit Flussmittel nachgelötet + sauber gemacht.
Funktionierenden Quarz vom Eval-Board abgelötet und dort drauf gelötet.
Quarzgehäuse auf Erde gelegt.
Kondensatoren durch 18p Ersetzt.

Evalboard und Custom-Board haben die gleiche Firmware, daran wird es 
nicht liegen.

Ideen?
-Michael

von mse2 (Gast)


Lesenswert?

Michael H. schrieb:
> Ideen?
Ja: Deine restliche Schaltung ist fehlerhaft.

von Chris L. (kingkernel)


Lesenswert?

Der Quarz schwingt nur an, wenn er vom microcontroller dazu angeregt 
wird. vielleicht liegt dort ja der Fehler

von Michael H. (Gast)


Lesenswert?

Wenn Du keinen Bock hast zu antworten, lass es einfach sein.

Also der gekaufte Quarz läuft auf dem Evaluation Board.

von Michael H. (Gast)


Lesenswert?

Chris L. schrieb:
> Der Quarz schwingt nur an, wenn er vom microcontroller dazu
> angeregt
> wird. vielleicht liegt dort ja der Fehler

Firmware ist 1:1 identisch mit Evaluation Board. Daran liegt es nicht.
Fuses wie beim AVR gibts bei Kinetis nicht.

von Chris L. (kingkernel)


Lesenswert?

Gibt es Layoutunterschiede zwischen Evalboard und dem Finalen Design.
-Vergessene Versorgungsapannungspins
-Kalte Lötstellen (Vielleicht auch an Vcc, GND oder irgendwelchen 
anderen Pins)

Wie stellst du denn überhaupt fest, dass der Quarz nicht läuft?

von mse2 (Gast)


Lesenswert?

Michael H. schrieb:
> Wenn Du keinen Bock hast zu antworten, lass es einfach sein.
Danke für das Angebot, das mach ich dann bei Bedarf.

Womit machst Du Dich selber und uns glauben, dass der Teil Deiner 
Schaltung, den Du hier nicht zeigst in Ordnung ist und der Fehler nicht 
dort liegt?!

Michael H. schrieb:
> Also der gekaufte Quarz läuft auf dem Evaluation Board.
Das spricht für 'siehe oben', es sei denn, Du hast beim Layout des 
Quarz-Teils etwas derartig falsch gemacht, dass z.B. die Belegung nicht 
stimmt.

von Michael H. (Gast)


Lesenswert?

Chris L. schrieb:
> Gibt es Layoutunterschiede zwischen Evalboard und dem Finalen
> Design.
> -Vergessene Versorgungsapannungspins
Ja, der Quarz war geerdert, ich habe meinen Daraufhin auch geerdet.
> -Kalte Lötstellen (Vielleicht auch an Vcc, GND oder irgendwelchen
> anderen Pins)
Alles durchgepiept und mit Flussmittel nachgelötet.

> Wie stellst du denn überhaupt fest, dass der Quarz nicht läuft?
Wenn der MCU auf High Speed Run Mode umschaltet, hängt der MCU. Das sehe 
ich dann über den JLink.

mse2 schrieb:
> Womit machst Du Dich selber und uns glauben, dass der Teil Deiner
> Schaltung, den Du hier nicht zeigst in Ordnung ist und der Fehler nicht
> dort liegt?!
Weil das das einzige ist, was mit der Clock zu tun hat. Definitiv. 100nF 
wurde auch nicht gespart.

> Michael H. schrieb:
>> Also der gekaufte Quarz läuft auf dem Evaluation Board.
> Das spricht für 'siehe oben', es sei denn, Du hast beim Layout des
> Quarz-Teils etwas derartig falsch gemacht, dass z.B. die Belegung nicht
> stimmt.
Gibt es eine Möglichkeit zu checken, ob ein Quarz angeschlossen ist, 
z.B. Serienwiderstand messen, etc?

von 6a66 (Gast)


Lesenswert?

Michael H. schrieb:
> ich bin etwas ratlos, denn mein Quarz springt nicht an.
> Typisches Quarz Layout, wie man es kennt. C=22p Crystal=8MHz.
> Layout im Anhang. (Ist eine 4 Lagen Platine mit GND-Layer)
>
> Quarz:
> http://www.mouser.com/ds/2/3/ABMM2-40161.pdf
>
> C: 22p
> MCU: MK22FN512
>
> Was ich bisjetzt probiert habe:
> Alles durchgepiepet und mit Flussmittel nachgelötet + sauber gemacht.
> Funktionierenden Quarz vom Eval-Board abgelötet und dort drauf gelötet.
> Quarzgehäuse auf Erde gelegt.
> Kondensatoren durch 18p Ersetzt.

Welche Lastkapazität ist denn im Artikel spezfiziert / welches sit die 
genaue Artikelbezeichnung?

rgds

von 6a66 (Gast)


Lesenswert?

6a66 schrieb:
> Welche Lastkapazität ist denn im Artikel spezfiziert / welches sit die
> genaue Artikelbezeichnung?

Sehe gerade Mouser hat nur den 18pF Typen.

Gut, der Quarz läuft im anderen Board, also geht er. Wenn er in Deinem 
Board nicht läuft
a) Pinning falsch - ich denke das passt was ich gesehen habe.
a2) CPU paslch aufgelötet, dann könntest Du nicht debuggen.
b) Schaltung falsch - unwahrscheinlich bei dem Layout
c) Quarz defekt - hast Du auch verifiziert
d) Quarz passt nicht wegen der Daten - hast Du auch verifiziert.
d) Software falsch - bliebe noch zu prüfen dass die Ports auch richtig 
initialisert werden.

rgds

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Miss doch mal die Pegel (besser gleich mit einem Oszilloskop) am Quarz. 
Wenn da ein Anschluss (XIN oder so) sehr (berühr-)empfindlich ist und 
XOUT darauf kräftig reagiert, tuts der MC-interne Oszillator 
wahrscheinlich und ist auch scharf geschaltet.

6a66 schrieb:
> Welche Lastkapazität ist denn im Artikel spezfiziert / welches sit die
> genaue Artikelbezeichnung?

Mouser scheint nur 2 Typen von 8,0 Mhz im Programm zu haben und beide 
sind für 18pF spezifiziert.

: Bearbeitet durch User
von 6a66 (Gast)


Lesenswert?

Matthias S. schrieb:
> Mouser scheint nur 2 Typen von 8,0 Mhz im Programm zu haben und beide
> sind für 18pF spezifiziert.

Yep schon gesehen :)

rgds

von mse2 (Gast)


Lesenswert?

Michael H. schrieb:
> 100nF
> wurde auch nicht gespart.
Bist Du sicher, dass nicht versehentlich 100nF für C37 und C38 
eingelötet wurden? SMD-Keramiks unterscheiden sich optisch ja nicht groß 
voneinander ...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ach, du könntest übrigens mal externe 8 Mhz einspeisen am Quarz, dann 
siehst du auch, ob der Oszillator scharf geschaltet ist. Tunlichst am 
XIN Eingang (oder wie Kinetis das auch immer nennt).

: Bearbeitet durch User
von mse2 (Gast)


Lesenswert?

mse2 schrieb:
> Michael H. schrieb:
>> 100nF
>> wurde auch nicht gespart.
> Bist Du sicher, dass nicht versehentlich 100nF für C37 und C38
> eingelötet wurden? SMD-Keramiks unterscheiden sich optisch ja nicht groß
> voneinander ...
Ah, gut: Du schriebst: "...22pF gegen 18pF ausgetauscht...", dann 
solltest Du wohl sicher sein.

von Michael H. (Gast)


Lesenswert?

Ich habe den Code nochmals genauer gelesen. (Ist von Freescale, daher 
kenne ich ihn nicht so genau).

Das Problem tritt auf, schon bevor(!) der Quarz initialisiert wird.
Konkret hängt das ganze beim Übergang in den High Speed Run Mode
1
  /* Power mode protection initialization */
2
#ifdef SYSTEM_SMC_PMPROT_VALUE
3
  SMC->PMPROT = SYSTEM_SMC_PMPROT_VALUE;
4
#endif
5
6
  /* High speed run mode enable */
7
#if (((SYSTEM_SMC_PMCTRL_VALUE) & SMC_PMCTRL_RUNM_MASK) == (0x03U << SMC_PMCTRL_RUNM_SHIFT))
8
  SMC->PMCTRL = (uint8_t)((SYSTEM_SMC_PMCTRL_VALUE) & (SMC_PMCTRL_RUNM_MASK)); /* Enable HSRUN mode */
9
  while(SMC->PMSTAT != 0x80U) {        /* Wait until the system is in HSRUN mode */
10
  }
11
#endif


MSE2 hat wohl recht gehabt, obwohl ich es nicht glauben konnte.

Sobald ich weiß woran es liegt, werde ich es auf jeden Fall posten.

von Schorsch X. (bastelschorsch)


Lesenswert?

Versuchsweise 1M über den Oszillator und/oder die Cs auf 33pF erhöhen.

von mse2 (Gast)


Lesenswert?

Michael H. schrieb:
> MSE2 hat wohl recht gehabt, obwohl ich es nicht glauben konnte.
Ach weißt Du: ich glaube, es gibt keinen blöden Fehler, den man 
theoretisch machen kann, den ich noch nicht gesehen oder selber gemacht 
habe.

von Markus F. (mfro)


Lesenswert?

Ich würde das SMC_PMPROT-Register mal auslesen.

Das läßt sich (beim K20 jedenfalls) nach einem Reset nur genau einmal 
beschreiben, spätere Änderungsversuche bleiben wirkungslos.

von Michael H. (Gast)


Angehängte Dateien:

Lesenswert?

Also, am Code liegt es offenbar auch nicht - es muss irgend ein anderer 
Hardware fehler sein, den ich noch nicht erkannt habe. Ich hänge mal 
meinen Schaltplan an, eventuel erkennt Ihr was und habt einen Tipp, 
welche Spannungen ich mal nachmessen soll.

von m.n. (Gast)


Lesenswert?

Matthias S. schrieb:
> Ach, du könntest übrigens mal externe 8 Mhz einspeisen am Quarz,
> dann
> siehst du auch, ob der Oszillator scharf geschaltet ist. Tunlichst am
> XIN Eingang (oder wie Kinetis das auch immer nennt).

Warum machst Du dies nicht mal? Da sieht man doch schnell, was Sache 
ist.

von Michael H. (Gast)


Lesenswert?

m.n. schrieb:
> Matthias S. schrieb:
>> Ach, du könntest übrigens mal externe 8 Mhz einspeisen am Quarz,
>> dann
>> siehst du auch, ob der Oszillator scharf geschaltet ist. Tunlichst am
>> XIN Eingang (oder wie Kinetis das auch immer nennt).
>
> Warum machst Du dies nicht mal? Da sieht man doch schnell, was Sache
> ist.

Weil der Quarz-Oszi zu dem Zeitpunkt noch nicht an ist. Folglich wird 
hier auch nichts funktionieren. Es ist ein Problem vom MCU selbst.

Markus F. schrieb:
> Ich würde das SMC_PMPROT-Register mal auslesen.
>
> Das läßt sich (beim K20 jedenfalls) nach einem Reset nur genau einmal
> beschreiben, spätere Änderungsversuche bleiben wirkungslos.

Bingo! Volltreffer, das PMPROT wird nicht richtig beschreiben. Wieso ist 
mir allerdings noch ein Rätzel. Das könnte eine Ursache sein!

von Michael H. (Gast)


Lesenswert?

Gibt es einen Trick, um mit JLink oder anderem Debugger rauszufinden ob 
auf das Register vorher schon zugegriffen wurde?
(Auf dem Devboard (Freedom K22F) funktionierts, nur auf meinem Board 
nicht... Komischer Software fehler. Ich taufe das jetzt mal abfällig 
"The Kinetis Experience", weil ich so Spirenzchen mit den MCUs schon 
häufiger hatte.)

von m.n. (Gast)


Lesenswert?

Michael H. schrieb:
> Weil der Quarz-Oszi zu dem Zeitpunkt noch nicht an ist. Folglich wird
> hier auch nichts funktionieren.

Dann stimmt Dein Thema "Quarz Startup Problem" also garnicht?
Manchmal mache ich auch Sachen, die auf den ersten Blick nicht unbedingt 
plausibel sein müssen.

> Es ist ein Problem vom MCU selbst.

Wenn alles Andere in Ordnung ist, bleibt nur noch der µC selbst als 
Fehlerursache übrig.

von Markus F. (mfro)


Lesenswert?

Bliebe natürlich noch die Möglichkeit, daß dein MK22FN512 gar kein 
MK22FN512, sondern irgendwas anderes ist ...

von Michael H. (Gast)


Lesenswert?

Markus F. schrieb:
> Bliebe natürlich noch die Möglichkeit, daß dein MK22FN512 gar kein
> MK22FN512, sondern irgendwas anderes ist ...

Genau so war es, ich habe den MK22FX512 geliefert bekommen. Habe jetzt 
einen FN von DEVBoard gelötet und den neuen drauf, und es geht!
1.5 Tage für son' Blödsinnsfehler verbraten. *DONG!*

Ich werde mal checken, wo der Fehler in der Kette lag, und hier 
notieren.

von Michael H. (Gast)


Lesenswert?

Okay, der Fehler ist wie folgt passiert:

Ich habe bei RS die Partnumber eingegeben: MK22FN512VLH12
Und dann kommt der MK22*FX*512VLH12

Das ist mir nicht aufgefallen, und bähm, Fehler.

In der Elektronik stolpert man immer wieder über kleinigkeiten, die man 
nicht erwartet. Wundert mich bloß, wieso der FX nicht funktioniert.

von Markus F. (mfro)


Lesenswert?

Michael H. schrieb:
> Wundert mich bloß, wieso der FX nicht funktioniert.

Mich nicht.

Der FX kennt den HSRUN mode nicht.

Das entsprechende Bit im PMCTRL Register lässt sich dann nicht setzen 
(im Manual als "reserved" gekennzeichnet). Darum hat das Umschalten 
nicht funktioniert und dein Code sich anschließend in einer 
Endlosschleife verrannt.

von Michael H. (Gast)


Lesenswert?

Okay, habe es auch gesehen. Auf den ersten Blick dachte ich, "ah, auch 
120MHz, folglich muss das auch im HSRUNMODE sein."

Das ist eben die Strafe, wenn man zuviel annimmt.


*Nochmals Danke an alle für die Hilfe! Für sowas liebe ich das Forum!*

von Michael H. (Gast)


Lesenswert?

Wenn ich beim Kinetis lange Zeit (5min) keine Spannung anliegen hatte, 
dauert es ca. 2 sec bis er anfängt das Program auszuführen. Gibt es eine 
mögliche Erklärung für das?
Wenn man Strom wieder sofort drauf gibt, funktioniert es tatellos. Erst 
nach längerer Pause.
Habt Ihr Ideen woran das liegen könnte?

von Markus F. (mfro)


Lesenswert?

Michael H. schrieb:
> Wenn ich beim Kinetis lange Zeit (5min) keine Spannung anliegen hatte,
> dauert es ca. 2 sec bis er anfängt das Program auszuführen. Gibt es eine
> mögliche Erklärung für das?
> Wenn man Strom wieder sofort drauf gibt, funktioniert es tatellos. Erst
> nach längerer Pause.
> Habt Ihr Ideen woran das liegen könnte?

Da solltest Du mal gucken, wie Du die Stop und Low-Power/brown-out Modes 
konfiguriert hast. Vielleicht ist er ja gar nicht aus, sondern schläft 
nur (sehr) tief.

Wenn dem Kinetis der Saft ausgeht, schaltet er sich nicht unbedingt 
gleich ab, sondern geht je nach Konfiguration in einen seiner Low-Power 
Modi.

Wenn er an einem fetten Kondensator dranhängt, kommt er u.U. ziemlich 
lange mit dem aus und das Aufwachen dauert entsprechend (insbesondere 
wenn's nicht richtig konfiguriert ist).

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.