Möchtest du irgendwelche Geister herauf beschwören?
Welche sorgen plagen dich wirklich?
Ob das funktioniert, kann man gut erkennen, wenn man die Spezifikationen nebeneinander hält. Damit steht und fällt alles.
Ob mit oder ohne fertigen Oszillator.
Wobei es auch fuer die EMV bloed sein kann wenn da ein zackiges Rechteck
mit 3V3 ueber die Platine wandert.
Ja, in der Tat. Deshalb gibt es extra Oszillatoren mit Sinusausgang. Man sollte also den Weg zwischen Oszillator und Takteingang sehr kurz halten oder/und den Taktausgang sauber serienterminieren. Und natürlich die Versorgung des Oszillators anständig abblocken.
Ich hab hier einen STM32 im kleinen Gehäuse der nur über einen clk_in verfügt. Kein 2-Pin Quarz-Anschluss wie sonst üblich.
Da mich der interne Taktgeber in Sachen Präzision nicht gerade begeistert, war die Idee hier über einen externen Oszillator genauere Frequenzen generieren zu können.
Da ich noch nie so ein Teil verwendet habe, kommen eben Fragen auf. Vor allem wenn das, was man hier liest teils 20 Jahre alt ist ...
Im Gegensatz zur Quarzen sind diese Oszillatoren völlig unproblematisch.
Die höhere Stromaufnahme wurde ja schon erwähnt.
Um das näher zu erläutern:
Bei nackten Quarzen kann man Probleme mit der Genauigkeit und mit dem Anschwingverhalten haben. Beides entfällt, nimmt man einen fertigen Oszillator.
PS: Ich verwende in meinen Designs im allgemeinen trotzdem nackte Quarze wegen der bereits erwähnten Nachteile des Oszillators Kosten, Stromverbrauch, EMV.
Bei neueren STM32 kann der interne RC-Oszillator einen externen 32kHz-Takt als Referenz benutzen (MSI und Hardware auto calibration with LSE (PLL-mode)).
Bei fast allen STM32 können die RC-Oszillatoren per Software getrimmt werden. Dazu reicht ein beliebiger externer Takt, z.B. 1Hz aus einer temperaturkompensierten RTC. Die Auflösung der Trimm-Mimik ist zwar nur ca. 0.5%, aber man bekommt die Langzeitstabilität vom Uhrenquarz kombiniert mit minimalem Stromverbrauch und maximaler EMV.
Wenn bei dir der Strom aus der Steckdose kommt dann sind die okay,
wenn du ueber jedes mA drei Meetings machst sind die eher suboptimal.
Oszillatoren gibt es viele. Z.B.:
SG5032CCN von Epson verbraucht bei 5 Volt 20 mA
SG5032CAN verbraucht von 3,3 Volt 1,8 mA
Man sollte einfach richtige wählen.
Wenn ein Quarz an Mikrocontroller geschlossen ist, wird Icc auch um einige mA höher als mit RC-Takt.
Wenn es keine Rolle spielt dass man dafür fast 10 Quarze bekäme, spricht
irgend etwas gegen die Oszillatoren?
Man kann bei Pollin immer wieder mal (gut abgelagerte) sehr günstig kaufen.
https://www.pollin.de/search?query=quarzoszillator
Ja, ok, ist für Bastler, denn paar Wochen später sind sie jeweils ausverkauft.
Bei nackten Quarzen kann man Probleme mit der Genauigkeit und mit dem
Anschwingverhalten haben.
Das Problem mit der Genauigkleit hat man eher bei Oszillatoren. Den nackte Quarze kann nan mit den entsprechenden Last-Cs auf die richtige Frequenz hintrimmen. Bei Oszillatoren sind die mit Trimmeingängen eher selten geworden.
Ich koennte dir jetzt verraten warum das nicht so ist
Warum das SO ist? Ganz einfach: weil Quarz-Invertor weder "0" noch "1" hat sondern dazwischen - um als Verstärker arbeiten zu können. Bei externen Takt ist XT-Eingang rein digital und Verbrauch sinkt.
Das Problem mit der Genauigkleit hat man eher bei Oszillatoren.
Typische Quarz hat 30 ppm Genauigkeit. Ein Oszillator kann auch so oder gar 50 ppm haben, man kann aber nicht sehr viel teurer auch mit 2,5 ppm kaufen. Oder auch sehr teurer mit 0,28 ppm...
Ich hab hier einen STM32 im kleinen Gehäuse der nur über einen clk_in
verfügt. Kein 2-Pin Quarz-Anschluss wie sonst üblich.
Wenn das Kind noch einen Namen hat, hätte ich diesen gerne gewußt.
Davon gibt es einige. Z.B. in meinem Fundus: STM32L010F4P6, STM32L031F4P6, STM32L081KZT6, STM32G031J6M6, STM32G031F8P6, STM32G051F8P6. (Zumindest kein clk_out für den HSE, manche davon haben aber clk_out für den LSE.)
Beim L010 gibt es diesen Eingang als CK_IN.
Mich hat interessiert, ob es ein rein digitaler Eingang ist oder ein Inverter-Eingang OSC_IN zu dem OSC_OUT fehlt.
Es ist ein digitaler Eingang. Verwendet man XOs mit sinusförmigem Ausgangssignal (typ. 1 Vss), dann muß man das Signal noch auf Logik-Pegel bringen. Andernfalls hätte man solch ein Signal einfach über 1 nF an OSC_IN einkoppeln können.
Bei neueren STM32 kann der interne RC-Oszillator einen externen
32kHz-Takt als Referenz benutzen (MSI und Hardware auto calibration with
LSE (PLL-mode)).
Bei fast allen STM32 können die RC-Oszillatoren per Software getrimmt
werden. Dazu reicht ein beliebiger externer Takt, z.B. 1Hz aus einer
temperaturkompensierten RTC. Die Auflösung der Trimm-Mimik ist zwar nur
ca. 0.5%, aber man bekommt die Langzeitstabilität vom Uhrenquarz
kombiniert mit minimalem Stromverbrauch und maximaler EMV.
Oh, vielen Dank!
Das war mir so noch nicht bewusst. Werde ich mir auf jeden Fall genauer anschauen.
Zu 80C51 Zeiten hatte ich nie Probleme mit Quarz im Full-Swing Modus. Bei aktuellen µCs im Low-Power Modus gibt es schonmal einige Exemplare, die nicht anschwingen. Ich setze daher in neuen Projekten nur noch Oszillatoren ein. Ich habe keine Projekte für Batteriebetrieb.
Bei aktuellen µCs im Low-Power Modus gibt es schonmal einige Exemplare,
die nicht anschwingen. Ich setze daher in neuen Projekten nur noch
Oszillatoren ein. Ich habe keine Projekte für Batteriebetrieb.
Da hast Du ja einen schönen Widerspruch formuliert ;-)
Mit Quarzen hatte ich nie Probleme, weder 'full swing' noch 'low power'. In den hiesigen Beiträgen findet sich aber immer wieder Wichtigtuerei. So mußte vor einiger Zeit immer ein 'Baudratenquarz' verwendet werden, um bei 16 MHz µC-Takt eine Baudrate von 9600 Bd zu erhalten. Heute stürzt man sich auf Leiterbahnlängen, die mit 3 mm schon als grenzwertig dargestellt werden oder es wird heftig über Lastkapazitäten gefeilscht.
Das ist natürlich alles bestens geeignet, um gerade Anfänger von einem pragmatischen Umgang mit Elektronik abzuhalten.
Wenn fertige Oszillatoren, dann verwende ich gerne TCXOs. Geschickt eingekauft kosten diese mit 1 - 2,5 ppm < 1 Euro. Hier stimmen Kosten und Nutzen.
den Weg zwischen Oszillator und Takteingang sehr kurz halten
oder/und den Taktausgang sauber serienterminieren.
Wo ist denn schaltungstechnisch noch ein Unterschied zwischen Ausgang und Eingang, wenn die Wege kurz sind?
(Mal angenommen, es gibt nicht noch eine parallele T am Eingang der Senke).
Ein grober Überblick:
Viele Kontroller haben intern einen RC-Oszillator, der einen Takt mit einigen Prozent Genauigkeit liefert. Fertigungsstreuung: zehn bis 20 Prozent. Mit dem kommt man eigentlich schon aus.
Wenn es etwas genauer sein muss, (bei serieller Datenein-oder Ausgabe) kann man mit dem Programmiergerät den internen Oszillator auf wenige 1..4% justieren. Das klappt aber nicht mehr in größeren Temperaturbereichen oder Spannungsbereichen.
Für höhere Taktgenauigkeit muss man extern ein die Frequenz bestimmendes Bauelement zum Oszillator hinzufügen.
Meistens haben die Oszillatoren der ICs Anschlüsse für einen externen Quarz
Da kommt man locker auf 0,1% Prozent (1000 ppm) Genauigkeit, wenn man die Lastkapazität berücksichtigt, auch auf besser als 100 ppm.
Ein externer Oszilator ist höherer Aufwand, aber man hat es nicht mehr mit den starken Streuungen der Digitalbauelemente im IC zu tun. Der externe Osz. bringt also zuverlässigeres Anschwingen, höheren Arbeitsbereich bezüglich Betriebsspannung, auch gemeinsamen Takt für mehrere ICs usw.
Und noch frequenzgenauer sind dann externe Oszillatoren mit Abgleich, Temperaturkompensation usw. Da gehts dann in einstellige ppm-Zahlen
Meistens haben die Oszillatoren der ICs Anschlüsse für einen externen
Quarz
Da kommt man locker auf 0,1% Prozent (1000 ppm) Genauigkeit, wenn man
die Lastkapazität berücksichtigt, auch auf besser als 100 ppm.
Wie kommt man denn auf so schlechte Werte?
Beispiel RP2040 Pico-Board: Grundgenauigkeit im einstelligen ppm-Bereich.
Braucht man etwas genauer, bei Mouser gibt es z.B. TG2520SMN. 3,3V, 1,5 mA max, 0,5 ppm, 1,53 €/St. Ausgang hat zwar "Clipped sine wave", aber das kann man mit z.B. SN74LVC2GU04 nachbessern.
Grundgenauigkeit ist auch nicht so das Problem. Hinzu kommen Thermodrift
und Jitter. Da sind wir schnell zweistellig.
Epson TG2520SMN:
Frequency tolerance +-1,5x10-6
Frequency / temperature characteristics +-0,5x10-6 Max / -40°C to +85°C
Frequency / load coefficient +-0,1x10-6 Max / 10 kOhm 10 pF
Frequency / voltage coefficient +-0,1x10-6 Max / Vcc+-5%
Frequency aging +-0,5x10-6 Max
Wenn du das Quarz ansteuern willst, geht das meistens ja auch brute
force mit einem Rechteck-Ausgang / Inverter. D.h. der funkt dir in der
Gegend rum.
Nein, ist nicht so. Die heutigen Controller arbeiten da eher mit
kleineren Spannungen um die EMV problematik zu verringern.
Bei manchen sogar umschaltbar.
Und wenn man es extern macht muss man da auch keinen Inverter
nehmen (dabei unbuffered beachten) sondern kann es mit
einem Transistor mit viel liebe und sinusaehnlich machen.
BTW: Meine Beobachtung dabei, je naeher man dem idealen
Sinus kommt um so unwilliger wird irgendwann das anschwingverhalten.
Wer eine Schaltung kennt die einen Quarz mit 20 oder 40Mhz mit
einem idealen sinus schwingen laesst, her damit. Wuerde mich
mal interessieren.
Wenn wir so privat basteln dann knallen wir alle einen Quarz
an den Controller und hauen die ueblichen 22pF dran und es geht.
Wenn man groessere Anforderungen hat, garantierter StartUp von
-40 bis +85Grad, genaue(!) Frequenz, wenig Phasenrauschen dann wird
man da VIEL mehr Aufwand reinstecken.
BTW: Meine Beobachtung dabei, je naeher man dem idealen
Sinus kommt um so unwilliger wird irgendwann das anschwingverhalten.
Wer eine Schaltung kennt die einen Quarz mit 20 oder 40Mhz mit
einem idealen sinus schwingen laesst, her damit. Wuerde mich
mal interessieren.
Ich frage mich schon seit langem, ob es auch Quarzoszillatoren gibt, die eine zusätzliche Anschwinghilfe auf Basis eines garantiert schwingenden Ringoszillators o.ä. besitzen, durch die z.B. alle zig Millisekunden ein "Störimpuls" in den eigentlichen Schwingkreis eingekoppelt wird. Und wenn der Quarzoszillator erst einmal angeschwungen ist, wird eben dieser "Störimpuls" unterdrückt. So etwas ließe sich mit minimalem Aufwand implementieren.
Das CSS (clock security system) der STM32-Familie dient ja eher dazu, im Falle eines Quarzdefektes auf den Ersatztakt umzuschalten und das System in einen sicheren Zustand zu überführen. Womöglich ließe sich aber damit auch in der Firmware eine Anschwinghilfe für den Quarzoszillator realisieren, nämlich durch niederfrequenten Toggles eines GPIO, dessen Flanken hochohmig auf den Quarz eingekoppelt werden. Das ganze wäre dann aber eher ein Hosenträger zusätzlich zum Gürtel. Natürlich sollte man ggf. lieber den Fehler in der Quarzbeschaltung suchen und beheben, statt zu solch einer Krücke zu greifen.
Es gibt aber sicherheitskritische Systeme (z.B. in der Avionik), bei denen per Design garantiert werden muss, dass nach einer Unterbrechung der Stromversorgung innerhalb einer maximalen Zeit die Betriebsfähigkeit wiederhergestellt wurden, z.B. bei einem ATC-Funksprechgerät. Und da kann die maximale Anschwingszeit eines Quarzoszillators schon eine erhebliche Rolle spielen.
Da ich gerade neue Pico-Boards bekommen habe, habe ich mal die Grundabweichung des Quarztaktes kontolliert. Dabei liegt an GPIO2 ein 1 pps Impuls eines GPS-Empfängers an. Dieser hat einen typischen Jitter von rund 60 ns.
Wie man der Aufzeichnung über 1 h entnehmen kann, beträgt die abs. Abweichung 9,4 ppm und wandert ein wenig im sub-ppm-Bereich. Zur Verdeutlichung gibt es ein zweites Bild, bei dem eine feinere horizontale Auflösung den Jitter vom GPS alle paar Sekunden zeigt. Die kleineren Zacken der Kurve geben die Auflösung bei der Messung wieder.
Anzumerken ist, daß der RP2040 mit dem Schaltregler des Pico-Board versorgt wird. Eine Versorgung aus einem separaten LDO würde das Rauschen der Versorgungsspannung reduzieren. Bei einem TCXO wäre die Drift der Kurve noch geringer und langzeitstabiler.
Ich frage mich schon seit langem, ob es auch Quarzoszillatoren gibt,
die eine zusätzliche Anschwinghilfe auf Basis eines garantiert
schwingenden Ringoszillators o.ä. besitzen, durch die z.B. alle
zig Millisekunden ein "Störimpuls" in den eigentlichen Schwingkreis
eingekoppelt wird. Und wenn der Quarzoszillator erst einmal
angeschwungen ist, wird eben dieser "Störimpuls" unterdrückt.
So etwas ließe sich mit minimalem Aufwand implementieren.
Vielleicht wird das gemacht und nur nicht erwähnt. Weil dann die Leute denken, oha, $HERSTELLER kann keine Oszillatoren bauen ;)
Bei manchen uC kann man die Verstärkung des Oszillators umschalten, z.B. beim LSE (32kHz) des STM32L412 in vier Stufen.
Wenn die Quarz-Pins auch GPIO sein können, kann man einen Ausgang high und den anderen low machen und dann auf Oszillatorbetrieb umschalten. Das gibt zwar nur einen, aber einen kräftigen Störimpuls. Irgendwo wurde mal etwas ähnliches empfohlen.
it is possible to create some kick-start noise on the amplifier output to
help the crystal start oscillating more quickly. This is possible by
simply changing the supply source of the amplifier by switching it between
high-frequency mode and low-frequency mode multiple times. The
created output noise significantly reduces the start-up time and does not
require additional effort on PCB design or external components. However,
the general requirements for LFO design described in Section 2.1, Section
2.2, Section 3, Section 5.1, Section 5.2, and Section 5.3, need to be
considered and followed. The described methodology is not intended to
revive a crystal that is failing to start at all.
Womöglich ließe sich aber damit auch in der Firmware eine Anschwinghilfe
für den Quarzoszillator realisieren
Wer garantiert, dass die interne Schaltung anläuft? Wer garantiert, dass sie sich wegschaltet und nicht im Betrieb aktiv ist / bleibt und den eigentlichen Oszialltor behindert?
dass nach einer Unterbrechung
der Stromversorgung innerhalb einer maximalen Zeit die Betriebsfähigkeit
wiederhergestellt wurden, ...
da kann die maximale Anschwingszeit eines Quarzoszillators schon
eine erhebliche Rolle spielen.
Wo siehts du die denn bitte im Vergleich zu einem vollständigen boot-Vorgang eines Controller-Systems mit Power-Up-Check?
Allein die power-sequence von einem board, das mehrere nach einander anfahrende Controller und Prozessoren hat, dürfte schon länger dauern, besonders, wenn sie überwacht passiert.
Womöglich ließe sich aber damit auch in der Firmware eine Anschwinghilfe
für den Quarzoszillator realisieren
Wer garantiert, dass die interne Schaltung anläuft?
Ringoszillatoren und einfache rückgekoppelte Inverter mit Schmitt-Trigger-Charakteristik schwingen immer an, und zwar ohne Verzögerung. Bei Quarzoszillatoren kann das aber prinzipbedingt schon mal etwas dauern, und zwar um so länger, je höher die Quarzgüte ist. Insbesondere gibt es da beträchtliche Schwankungen. Einer meiner Kunden hatte sogar mal Voruntersuchungen dazu gemacht, ob sich damit ein echter Zufallszahlengenerator realisieren ließe. Zwar kann man damit bei jeden Systemstart nur sehr wenige Bit an "echtem" Zufall generieren, aber es funktioniert. Und nein, das war kein unbedarfter Bastler, sondern ein sehr erfahrener Analog- und Digital-ASIC-Entwickler, der schon genau wusste, was er tat.
Wer garantiert, dass
sie sich wegschaltet und nicht im Betrieb aktiv ist / bleibt und den
eigentlichen Oszialltor behindert?
Das lässt sich recht trivial mit Zählern realisieren.
da kann die maximale Anschwingszeit eines Quarzoszillators schon
eine erhebliche Rolle spielen.
Wo siehts du die denn bitte im Vergleich zu einem vollständigen
boot-Vorgang eines Controller-Systems mit Power-Up-Check?
Der Anschwingvorgang kann durchaus einige hundert Millisekunden dauern, und zwar mit der erwähnten großen Streuung.
Allein die power-sequence von einem board, das mehrere nach einander
anfahrende Controller und Prozessoren hat, dürfte schon länger dauern,
besonders, wenn sie überwacht passiert.
Gerade im Bereich der Funktionalen Sicherheit gibt es viele Anwendungen, in denen schon per Design nachgewiesen werden muss, dass die Grundfunktionen innerhalb erstaunlich kurzer Zeiten wieder verfügbar sind. Bei einem Flugfunkgerät für den gewerblichen und militärischen Flugverkehr muss es nach einer Unterbrechung (genauer: deren Wiederkehr) der Stromversorgung innerhalb von 500 ms möglich sein, wieder mittels ATC-Sprechfunk (UKW, AM) auf der zuletzt verwendeten Frequenz zu kommunizieren. Zusatzfunktionen, z.B. für das Bedienfeld, verschlüsselte Kommunikation, Datenübertragungen, usw. dürfen sich deutlich mehr Zeit lassen.
Dummerweise korreliert Funktechnik "etwas" mit der Verfügbarkeit hochstabiler, rauscharmer Oszillatoren, d.h. Quarzoszillatoren sind hierfür die erste Wahl. Wenn man nun als Entwickler ankäme mit "Naja, meistens schwingt das Teil schon nach 10 ms, aber wenn es kalt ist, gibt es Ausreißer bis 2 s.", dann hätte man schon ein Problem.
Da ich noch nie so ein Teil verwendet habe, kommen eben Fragen auf. Vor
allem wenn das, was man hier liest teils 20 Jahre alt ist ...
Ja klar, je oller desto unwahrer.
Und wenn man bedenkt, das das Ohmsche Gesetz fast 200 Jahre alt ist, sollte man im Forum jeden Widerstand einer Schaltung die man noch nie selbst ausprobiert einzeln nachfragen ...
Zugegeben ist das ein sehr guter Oszillator. Aber der Preis ist ja auch entsprechend. Wenn ich mir nun ins Gedächtsnis rufe, wie gering die Toleranz der Einkäufer im Bezug auf Materialpreise im Consumer-Audio-Bereich so ist, dann wird deutlich, warum man dort wie in vielen anderen Anwendungen nur billige Quarze findet.
Manchmal stehen Preise und Daten in einem komischen Verhältnis...
SG5032CAN 20.000000M-TJGA3 1,8-3,3V 50 ppm 1,67€ (Mouser, 10 Stück, pro Stück)
TG2520SMN 24.0000M-MCGNNM0: TCXO 2.8V 3.3V 0.5 ppm Clipped sine wave 0,5 ppm 0,845€ (auch Mouser, 10 Stück, pro Stück)
D.h. um 100 mal genauer kostet weniger :)
Im Allgemeinen müssen Schaltungen ihren Job machen.
Wenn sie das tun, ist alles gut.
So ein Unsinn. In manchen Firmen sind ganze Abteilungen damit beschäftig, die Kosten zu minimieren. Wenn die Schaltung "ihren Job macht", geht die Arbeit mit der Optimierung erst los ;-)
Neben dem größeren Versorgungsspannungsbereich ist der teurere
Oszillator auch bis +105°C statt +85°C spezifiziert.
Ja, wenn man etwas auf Mars schicken will, dann ist das natürlich sehr wichtig...
Trotzdem: auch wenn die Genauigkeit bei +105°C schlechter wird, bleibt billigere immer noch genauer.
Und da kann die maximale Anschwingszeit eines Quarzoszillators schon eine
erhebliche Rolle spielen.
Bei solchen Fällen ist es meistens das Problem, dass die (Ersatz-)Spannungsversorgung nicht so schnell hochkommt, hochkommen darf, wie man es gerne hätte. Das rampup macht oft ein Vielfaches dessen, was die OSC noch addieren.
Ich hatte solche Diskussionen und Betrachtungen schon des Öfternen und musste einem Kunden, der mir stolz eine optimierte Power-ON (mit stabilem Takt) dann die Ladezeit des FPGA-Systems vorhalten. :-)