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


von wuddy (Gast)


Angehängte Dateien:

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?

von Rainer (Gast)


Lesenswert?

Hast Du die beiden Kondensatoren weggelassen oder sind die im Quarz 
eingebaut ?

von wuddy (Gast)


Lesenswert?

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

von wuddy (Gast)


Lesenswert?

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

von GB (Gast)


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

von Norgan (Gast)


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.

von wuddy (Gast)


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?

von Stefan (Gast)


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)!

von wuddy (Gast)


Angehängte Dateien:

Lesenswert?

Hier mal das Layout der Platine, vllt könnt ihr mir damit weiterhelfen

von wuddy (Gast)


Lesenswert?


von Stefan (Gast)


Lesenswert?

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

von wuddy (Gast)


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

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

von wuddy (Gast)


Lesenswert?

Wie erkenne ich diesen SMD-Footprint?

von Stefan (Gast)


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)

von wuddy (Gast)


Angehängte Dateien:

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?

von wuddy (Gast)


Lesenswert?

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

von Christian R. (supachris)


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?

von wuddy (Gast)


Lesenswert?

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

von Stefan (Gast)


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!

von wuddy (Gast)


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?

von Christian R. (supachris)


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.

von Stefan (Gast)


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)

von wuddy (Gast)


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?

von wuddy (Gast)


Lesenswert?

1
#pragma vector=TIMERA1_VECTOR

muss natürlich TIMER0 heißen

von Stefan (Gast)


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!

von Stefan (Gast)


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
}

von wuddy (Gast)


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.

von wuddy (Gast)


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.

von Jörg S. (joerg-s)


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.

von Christian R. (supachris)


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.

von wuddy (Gast)


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.

von Jörg S. (joerg-s)


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 :)

von wuddy (Gast)


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.

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
Noch kein Account? Hier anmelden.