Problem beim anlöten eines Quarzes an das MSP Board

Gast #1011442
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?
Angehängte Dateien:
Gast #1011533
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.
Gast #1011556
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)!
Gast #1011620
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)
#1011777
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?
Gast #1011819
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!
Gast #1012354
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?
#1012420
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.
Gast #1012447
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:
1
XTS    = 0x01
2
XCAPx  = 0x00
3
LXT1Sx = 0x10 (für 16MHz)
Gast #1012481
Lesenswert?

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

11
  // Wait for xtal to stabilize
12
  do
13
  {
14
  IFG1 &= ~OFIFG;                           // Clear OSCFault flag
15
  for (i = 0x47FF; i > 0; i--);             // Time for flag to set
16
  }
17
  while ((IFG1 & OFIFG));                   // OSCFault flag still set?
18

19
  for(i=2100;i>0;i--);                      // Now with stable ACLK, wait for
20
                                            // DCO to stabilize.
21
  P1DIR |=0x01;
22
  TACCTL0 = CCIE;                        //Capture/compate Int enable
23
  TACCR0 =50000;                          //11kHz
24
  TACTL = TASSEL_1 + MC_2 + ID_0;
25
  TACTL |= MC1;                          //Timer starten
26
  
27
  
28
  
29

30
  
31
  _BIS_SR(GIE);
32
  while(1);
33
}
34

35
// Timer_A3 Interrupt Vector (TAIV) handler
36
#pragma vector=TIMERA1_VECTOR
37
__interrupt void Timer_A(void)
38
{
39
  
40
 
41
                         
42
    P1OUT ^= 0x01;
43
  CCR0 += 50000;
44
              
45
  
46
}

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?
Gast #1012514
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!
Gast #1012519
Lesenswert?

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

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

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

12
  do
13
  {
14
    IFG1 &= ~OFIFG;                         // Clear OSCFault flag
15
    for (i = 0xFF; i > 0; i--);             // Time for flag to set
16
  }
17
  while (IFG1 & OFIFG);                     // OSCFault flag still set?
18

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

21
  for (;;)                                  // Infinite loop
22
  {
23
    P1OUT |= 0x02;                          // P1.1 = 1
24
    P1OUT &= ~0x02;                         // P1.1 = 0
25
  }
26
}
Gast #1012535
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.
Gast #1012688
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.
#1012704
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.
Gast #1012721
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.
#1012729
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 :)
Gast #1012887
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

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