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
Der Quarz schwingt nur an, wenn er vom microcontroller dazu angeregt wird. vielleicht liegt dort ja der Fehler
Wenn Du keinen Bock hast zu antworten, lass es einfach sein. Also der gekaufte Quarz läuft auf dem Evaluation Board.
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.
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?
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.
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?
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
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
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
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
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 ...
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
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.
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.
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.
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.
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.
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.
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!
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.)
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.
Bliebe natürlich noch die Möglichkeit, daß dein MK22FN512 gar kein MK22FN512, sondern irgendwas anderes ist ...
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.
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.
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.
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!*
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.