C8051F120, TXCO als externen Takt

Gast #2052289
Lesenswert?

Hi,

in einem anderen Thread wurde mir empfohlen, um einen genaueren 
Systemtakt zu bekommen, einen TXCO als externen Takt zu verwenden. Darum 
habe ich mir nun diesen hier gekauft: 
http://docs-europe.electrocomponents.com/webdocs/0e32/0900766b80e32cf7.pdf

Angeschlossen habe ich ihn wie im Schaltbild der dem Post angehängt 
wurde.

Hier das Datenblatt meines µC (C8051F120) auf Seite 185: 
http://www.silabs.com/Support%20Documents/TechnicalDocs/C8051F12x-13x.pdf

Und hier das Unterprogramm, dass auf den Externen Takt wechselt:
1
void Oszillator_Init()
2
{
3
   SFRPAGE = CONFIG_PAGE;
4
   XBR2 = 0x40; //enable Crossbar und Weak Pull-ups
5
   
6
   OSCXCN = 0xA7;
7
   CLKSEL = 0x01;
8
}

Sobald auf den Externen Takt gewechselt wird, hängt sich der 
Mikrocontroller auf. --> es stimmt etwas mit dem externen Takt nicht.

Leider steht im Datenblatt meines Mikrocontrollers absolut gar nichts 
über TXCOs darum bin ich mir weder sicher ob ich die Register richtig 
eingestellt habe bzw. ob ich den TXCO richtig angeschlossen habe.

Hat von euch jemand so etwas schon mal gemacht bzw. was mache ich 
falsch? Bin echt ratlos, da ich eigentlich von diesen Dingern (TXCOs) 
absolut nichts verstehe...

Danke für eure Hilfe!
Angehängte Dateien:
Gast #2052415
Lesenswert?

Aus Oszilklator-Datenblatt:
Output Level (Clipped sine wave): min 0,8VPP

Hm... ich kenne das so, daß uC's immer nur Oszillatoren
mit TTL/CMOS oder LVCMOS (bei VCC=3,3V) angeschlossen werden.

Oszillatoren mit Sinus-Ausgang kenne ich nur
für HF-Technik und Mischstufen,
nicht aber für digitale Bausteine.

Vermute also: Falscher Oszillator für diesen Zweck.

Oder wie Frank schon geschrieben hat, ein Gatter als Verstärker und 
Impulsformer einfügen.

HTH,
Jörg
Gast #2052449
Lesenswert?

>Vermute also: Falscher Oszillator für diesen Zweck.

Der ist nicht falsch, das Ausgangssignal ist typisch für diese TCXOs. 
Man könnte auch den µC so konfigurieren wie mit ext. Quarz und dann das 
TCXO-Signal über 1nF in XTAL1 einkoppeln.
Gast #2052458
Lesenswert?

Wie kann ich 0.8Vpp verstehen? Heißt das es schwingt 0.4V über bzw. 
-0.4V unter Ground hin und her?

Dann müsste es doch mit einem Komperator leicht zu lösen sein: Ausgang 
des TXCO beim Komperator Eingang. Am 2. Komperatoreingang Ground 
anschließen. Dann sollte bei einer Versorgumg des Komperators von 0-5V 
ein TTL-Rechteck generiert werden. Dieser würde sich dann leicht 
verwenden lassen können.

Oder liege ich da falsch?
Gast #2055233
Lesenswert?

Ich hatte leider nur einen 10nF Kond. zu Hause. Ist das ein Problem?

Ich habe das ganze nun so aufgebaut wie im Schaltbild das ich dem Post 
hinzugefügt habe.

Code sieht folgendermaßen aus:
1
void Oszillator_Init()
2
{
3
   OSCXCN = 0x67; //Crystal Oszillator Mode, 10MHz < f <= 30MHz
4
   Sleep(1); //warte 1 ms
5
   while(!(OSCXCN & 0x80)); //Wartet auf das XTLVLD flag
6
   CLKSEL = 0x01; //Wechselt auf Externent Takt
7
}

Anfangs dachte ich es funktioniert, doch dann habe ich die 
Unregelmäßigkeit der Schwingung bemerkt --> mir wurde klar, dass meine 
etwas zu lange Leitungen als Antenne agiert hat und so einen Takt 
erzeugt hat. Darum habe ich die Leitung nun sehr viel kürze ausgeführt 
mit dem Ergebnis, dass ich nun gar keinen Takt mehr habe.

Gehört Pin 1 vl. doch mit Ground verbunden?
Angehängte Dateien:
Gast #2058494
Lesenswert?

Es muß kein 1nF C sein, 10nF müßten auch funktionieren und 100pF wohl 
auch.
Was bei Dir kurze und lange Leitungen sind, weiß ich nicht. Du solltest 
das Signal an XTAL2 kontrollieren. Dort muß ein 50:50 Rechtecksignal mit 
der Nennfrequenz herauskommen.

Pin 1 liegt normalerweise auf VCC/2 und kann benutzt werden, um die 
Soll-Frequenz ca. +/- 5ppm zu verstimmen. Darum würde ich den Pin nicht 
auf GND legen. Aber probiere es doch aus und messe nach, was sich 
verändert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren