www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem beim anlöten eines Quarzes an das MSP Board


Autor: wuddy (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

habe ein Problem beim anlöten eines Quarzes an das MSP Board. Mein Quarz 
hat nur zwei Beinchen und somit klar wie er angelötet werden soll. Dem 
MSP Datenblatt habe ich entnommen das der Quarz zwischen XIN und XOUT 
angebracht werden muss, stimmt das? Laut Schaltplan sind das Pin 8 und 
9. Nachdem ich die Pins über den Quarz verbunden habe wollte ich ein 
Testprogramm aufspielen um zu sehen ob es geht. Zum testen habe ich das 
TI-Beispielprogramm genommen. Das Problem ist jetzt das der Timer nicht 
zählt. Wenn ich mir das TAR anschaue, wechselt das einmalig von 0x0000 
nach 0x001 und bleibt dann so für alle zeit, bis ich resette.
Das TASSEL habe ich schon auf ACLK gestellt und wenn ich mim Oszi messe 
schwingt nix.

Wo liegt der Fehler?

Autor: Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du die beiden Kondensatoren weggelassen oder sind die im Quarz 
eingebaut ?

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh sorry vergessen zu erwähnen, die hab ich natürlich auch angebracht.

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
GIbt es eig ne Vorgabe wie lang die Kabel vom Qarz zu den Pins sein 
darf?

Autor: GB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ...wie lang die Kabel vom Qarz zu den Pins sein
> darf?

Kabel am Quarz? Bist du sicher, dass das Ganze schwingt? Wir achten 
darauf, dass die Anschlüsse so kurz wie möglich sind. Also << 20 mm.

GB

Autor: Norgan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> GIbt es eig ne Vorgabe wie lang die Kabel vom Qarz zu den Pins sein
> darf?

Kabel? Räusper ... Quarz und Lastkondensatoren gehören so dicht wie 
möglich an die Pins. Bei über einem cm Leiterbahn werden manche Leute 
schon nervös.

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Prob ist das der Quarz nicht wirklich "Beinchen" hat sondern eher 
zwei Pads. Irgendwie muss ich die ja aber auf de Platine befestigen. Wie 
soll das ohne kurtze Leitungen gehen?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für ein Quarz ist das?

An LFXT1CLK kann man einen Uhrenquarz (32kHz, LF) oder was schnelleres 
(>400kHz, HF) anschließen!

Beim Uhrenquarz dürfen keine C's verwendet werden, weil der MSP die 
schon integriert hat (bzw. bei den F2xxx im BCSCTL3-Register auswählen). 
Ausserdem darf XTS im BCSCTL1 nicht gesetzt sein (LF-mode). Manchmal ist 
es auch notwendig/sinnvoll, das Gehäuse des Quarzes auf GND zu legen, 
sonst schwingt der möglicherweise auch nicht...

Bei einem "schnelleren" Quarz müssen die entsprechenden Lastkapazitäten 
angeschlossen werden und XTS gesetzt sein (HF-Mode).

Wenn Du Probleme hast, den Quarz auf die Platine zu löten, probier's 
vielleicht mal an XT2 (aber nur HF-Quarz)!

Autor: wuddy (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal das Layout der Platine, vllt könnt ihr mir damit weiterhelfen

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal das Datenblatt des Qarzes:

http://jauch-quartz.com/ablage/med_00000678_120058...

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also auf meinem Testboard ist neben dem bedrahteten Footprint für den 
Uhrenquarz noch ein SMD-Footprint für einen SMD-Quarz.

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist alledings nur ein 16MHz Quarz. Geht das dennoch oder ist 32MHz die 
Untergrenze?
Ach ja, ich benutze ein MSP430F2619

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
16MHz ist die Obergrenze
Und lies mein Posting bezüglich der Register-Settings!

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie erkenne ich diesen SMD-Footprint?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wie erkenne ich diesen SMD-Footprint?
... an den zwei oder vier SMD-Pads vielleicht...?

Ich habe nicht gesagt, dass bei Dir da ein SMD-Footprint ist...
... bei meinem Board schon, ist aber ein anderes (F1xx)

Autor: wuddy (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
An den im Anhang markireten Stellen befinden sich jeweils zwei Stellen, 
die im Layout nicht eingezeichnet sind. Die grün makierten "Pins" sind 
allerdings verbungen.

Könnten das dies SMD-Pads sein?

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da Hatte ich den Quarz ursprünglich angebracht, ohne Leitungen, also 
direkt auf der Platine. Mir wurde allerdings gesagt das sei falsch.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wuddy wrote:
> Da Hatte ich den Quarz ursprünglich angebracht, ohne Leitungen, also
> direkt auf der Platine. Mir wurde allerdings gesagt das sei falsch.

Blödsinn. Der muss direkt da drauf. Alles andere wird nix. 16 MHz ist 
auch wirklich das Maximum, was der MSP430 abkann. Was für Kapazitäten 
hast du denn extern dran gelötet und welche hast du intern im Register 
eingestellt? Das muss schon zur Lastkapazität des Quarzes passen, hab 
ich hier schon 100 Mal geschrieben. Hast du auch wirklich den XT2 
aktiviert und wartest du bis der stabil schwingt? Dann noch bei deinem 
Timer die Taktquelle richtig ausgewählt?

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also extern hab ich 22pF angelötet, die Sache mit den Registern prüf ich 
gleich nochmal.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wuddy schrieb:
>Da Hatte ich den Quarz ursprünglich angebracht, ohne Leitungen, also
>direkt auf der Platine. Mir wurde allerdings gesagt das sei falsch.
Ja und Nein ;-)
Prinzipiell kommt ein Quarz schon direkt auf die Platine, nur hat keiner 
der Typen in Deinem Datenblatt den richtigen Footprint, der da passen 
würde!
Also entweder besorgst Du Dir einen Quarz, der passt oder Du frickelst 
weiter...

Christian wrote:
>Hast du auch wirklich den XT2 aktiviert...
Die Pins an denen wuddy rumbastelt, gehören zu XT1!

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, danke ich war schon verwirrt warum jetzt auf einmal die Rede von XT2 
ist. Dachte schon ich hätte wieder was falsch im Handbuch interpretiert 
:D

Noch ne Frage zu den Kontensatoren: Ist es egal ob man die internen oder 
die externen nimmt, solange die gewünschte Kapazität erreicht ist, oder 
gilt es da etwas zu beachten?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, hatte ich falsch gelesen. Kondensatoren sind egal, musst aber auf 
die Kapazität kommen. Also wenn der Quarz 33pF Last-Kapazität hat, musst 
du auf etwa jeweils 56pF für die Kondensatoren kommen.

Poste doch mal deinen Code. Kannst ja auch mal den Pin, der den 
entsprechenden Clock ausgibt, aktivieren, und mit dem Oszi den SMCLK 
oder halt MCLK messen.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Noch ne Frage zu den Kontensatoren: Ist es egal ob man die internen oder
>die externen nimmt, solange die gewünschte Kapazität erreicht ist, oder
>gilt es da etwas zu beachten?
>>Kondensatoren sind egal, musst aber auf die Kapazität kommen.

STOOOOOOPPPP!
Ich geh' mal von dem Fall aus, dass Du einen F2xxx benutzt.
Dann sind die internen Kapzitäten nur für den LF-Fall (Uhrenquarz 
32kHz).
Im HF-Fall (400kHz - 16MHz) müssen externe C's verwendet werden und 
ausserdem:
XTS    = 0x01
XCAPx  = 0x00
LXT1Sx = 0x10 (für 16MHz)

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alos mein Testprogramm für den Quarz ist:
WDTCTL = WDTPW+WDTHOLD;                   // Stop watchdog timer
  if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)                                     
  {  
    while(1);                               // If calibration constants erased
                                            // do not load, trap CPU!!
  }  
  BCSCTL3 |= XCAP_3;                        // Configure load caps
  BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  DCOCTL = CALDCO_1MHZ;

  // Wait for xtal to stabilize
  do
  {
  IFG1 &= ~OFIFG;                           // Clear OSCFault flag
  for (i = 0x47FF; i > 0; i--);             // Time for flag to set
  }
  while ((IFG1 & OFIFG));                   // OSCFault flag still set?

  for(i=2100;i>0;i--);                      // Now with stable ACLK, wait for
                                            // DCO to stabilize.
  P1DIR |=0x01;
  TACCTL0 = CCIE;                        //Capture/compate Int enable
  TACCR0 =50000;                          //11kHz
  TACTL = TASSEL_1 + MC_2 + ID_0;
  TACTL |= MC1;                          //Timer starten
  
  
  

  
  _BIS_SR(GIE);
  while(1);
}

// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
  
 
                         
    P1OUT ^= 0x01;
  CCR0 += 50000;
              
  
}

Mein Oszi häng ich jetzt an den PIN 1.

Wenn ich das ganze über den internen Clock laufen lasse klappt es auch 
wunderbar. Zumindest hat es das vor ner woche noch ^^ Jetzt will ich 
aber höhere Taktraten erzeugen und muss ja dann auf den externen Qarz 
umsteigen oder?

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#pragma vector=TIMERA1_VECTOR

muss natürlich TIMER0 heißen

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich seh in Deiner Init nicht, dass Du XT1 mal aktivieren würdest!!!
Du bist und bleibst doch auf DCOCLK?!

Konsultiere mal den User-Guide für Deine MSP-Familie und beachte mein 
Posting von 9:32Uhr!

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, noch was:
Eine Quelle an "guten" Ideen findet sich sehr oft in den Code-Bsp von 
TI!
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  P2DIR |= 0x01;                            // P2.0 = output direction
  P2SEL |= 0x01;                            // P2.0 = ACLK function
  P1DIR |= 0x02;                            // P1.1 = output direction

  BCSCTL1 |= XTS;                           // ACLK = LFXT1 = HF XTAL
  BCSCTL3 |= LFXT1S1;                       // 3 – 16MHz crystal

  do
  {
    IFG1 &= ~OFIFG;                         // Clear OSCFault flag
    for (i = 0xFF; i > 0; i--);             // Time for flag to set
  }
  while (IFG1 & OFIFG);                     // OSCFault flag still set?

  BCSCTL2 |= SELM_3;                        // MCLK = LFXT1 (safe)

  for (;;)                                  // Infinite loop
  {
    P1OUT |= 0x02;                          // P1.1 = 1
    P1OUT &= ~0x02;                         // P1.1 = 0
  }
}

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mist, falsche Programmteile gepostet! Kommt davon wenn man tausend 
Projekte geöfnet hat und nicht weiß was man grad macht :D Sorry!
Ja danke für den Tip mit den Beispielprogrammen, da hab ich schon 
einiges rauskopiert.

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich obiges Programm laufen lasse kann ich an P2.0 eine Frequenz von 
6,6kHz messen. Wie kommt das? Habe den Quarz erstmal entfernt, bis ich 
weiß wo genau der hin kommt. Aber wie kann ich jetzt an p2.0 etwas 
messen? der interne Quarz müsste doch abgeschaltet sein.

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn ich obiges Programm laufen lasse kann ich an P2.0 eine Frequenz von
>6,6kHz messen. Wie kommt das?
Pin toggeln bringt wenig um die Frequenz vom Quarz zu messen. Schalte 
lieber den Takt direkt auf einen Pin durch.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast das Clock-Management System des MSP430 einfach nicht begriffen. 
Es gibt keinen internen Quarz. Nur einen DCO, das ist ein besserer 
RC-Oszillator. Der ist vom Start weg aktiv und versorgt den MCLK und den 
SMCLK mit etwa 800kHz, bis man etwas anderes einstellt. Wenn du einen 
externen Quarz anschließen willst, kommt der so nah wie möglich an die 
Pins für XT1 oder halt XT2. Und die beiden Kondensatoren müssen auch 
dran. Dann musst du per Software den entsprechenden Oszillator 
konfigurieren (HF/NF) und aktivieren. Dann wartest du bis der Oszillator 
das Foult-Flag nicht mehr setzt, erst dann ist er stabil. Dann musst du 
allerdings noch den MCLK und/oder SMCLK auf eben diesen Oszillator 
umschalten, sonst laufen die immer noch weiter mit dem DCO. Steht aber 
alles im User Guide und die TI-Demos sollten auch helfen. Die SMCLK und 
MCLK kannst du auch gepuffert direkt ausgeben, da gibts mehrere Pins, 
auf denen die Takte als Zweitfunktion liegen.

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich aber keine SMD Pins habe bleibt mir nix anderes übrig wie den 
Quarz so dicht wie möglich mit hilfe von Drähten dranzulöten, oder? Kann 
nachvollziehen das sich da bei einigen die Haare kräuseln aber nen 
anderen Weg find ich nicht.

Muss zugeben, dass mit dem System Clock find ich einfach verwirrend, 
deshalb wende ich mich ja an´s Forum. Danke nochmals für die kurz und 
pregnante Erklärung. Denke mal jetzt ist es etwas klarer geworden.

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wenn ich aber keine SMD Pins habe bleibt mir nix anderes übrig wie den
>Quarz so dicht wie möglich mit hilfe von Drähten dranzulöten, oder? Kann
>nachvollziehen das sich da bei einigen die Haare kräuseln aber nen
>anderen Weg find ich nicht.
Für'n Bastelaufbau wird's schon gehen...

>zugeben, dass mit dem System Clock find ich einfach verwirrend,...
Wenn du dich mal etwas genauer/länger damit beschäftigt hast wirst du 
feststellen das das alles doch nicht so kompliziert ist :)

Autor: wuddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich hab den Qarz jetzt an die beiden Pins gelötet, Ganz brachial 
mit Kupferdraht und Lötzinn. Wenn ich jetzt ein Programm laufen lasse 
und mein Oszi an den den XIN Pin hänge bekomm ich nen halbwegs schönen 
Sinus mit der Frequenz 16 MHz. Leider habe ich das zuvor nicht gemacht. 
Deshalb kann ich nicht 100% sagen das es funktioniert.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.