Forum: Mikrocontroller und Digitale Elektronik MSP430-MCLK/SMCLK einstellung


von E.I. (Gast)


Lesenswert?

Derzeit versuche ich einen MSP430F140 zu programmieren.
Die Schwierigkeiten liegen in den Takteinstellungen. Der externe Takt
LFXTCLK(7,372MHz) soll ACLK, SMCLK und MCLK generieren. Dies wollte
ich durch die beiden C-Code-Zeilen:

BCSCTL1|=XTS;

BCSCTL2|=SELM_3+SELS;

erreichen.

An den I/O Pin P2.0, P5.4, P5.5 und P5.6 sollte die LTXTCLK-Frequenz
anliegen. An P2.0 und P5.6 liegen die 7,372 MHz an, aber nicht an
den beiden anderen Pins(P5.4, P5.5)Wo lieg(t)(en) mein(e) Fehler?

Danke für die Hilfe

E.I.

von TheMason (Gast)


Lesenswert?

laut datenblatt kannst du den clock LFXTCLK nicht als SMCLK nehmen.
da müsstest du entweder einen 2. quarz an xt2 anschließen, oder aber
den XIN mit XT2IN verbinden (weiß aber nicht ob das so funktioniert,
wegen kapazitiver Last am Quarz).

nach dem datenblatt kannst du für
ACLK nur den LFXTCLK nehmen, für
MCLK den LFXTCLK, XT2CLK oder OSCCLK und für
SMCLK den XT2CLK oder OSCCLK verwenden.
(siehe "MSP430x1xx User Guide" Seite 4-3)

Gruß
Rene

von E.I. (Gast)


Lesenswert?

Danke für die schnelle Antwort Rene.
Auf der Seite 4-3 steht, dass SMCLK aus LFXTCLK, ....(SMCLK:
Sub-main clock. SMCLK is software selectable as LFXT1CLK, XT2CLK (if
available), or DCOCLK.) Wie auch immer, so genau kenne ich mich mit
diesem Gerät nicht aus.

Auf der Seite 4-15 (bei SELS) sind die Register etwas besser
beschrieben. Nach der Beschreibung sollte der SMCLK auch durch
LFXTCLK gespeist werden können, unter der Bedingung, dass XT2 ist
nicht vorhanden ist und das ist bei mir ja der Fall.

Ich weiß schon, was ich machen soll und ich denke, mit den beiden
Zeilen sollte das schon hinhauen, wenn ich nicht einen Fehler in der
Programmierung gemacht habe.

Gruß

ei

von Philipp B. (philipp_burch)


Lesenswert?

Blöde Frage, aber hast du denn auch wirklich bei allen Pins die
Spezialfunktionen aktiviert (PxSEL)? Ausserdem dieser Satz:
"[...]unter der Bedingung, dass XT2 ist
nicht vorhanden ist und das ist bei mir ja der Fall."
WAS ist bei dir der Fall? Dass XT2 vorhanden ist oder nicht? Der 140er
müsste doch eigentlich einen XT2 haben, nicht? Ausserdem: Was liegt
denn an den anderen Pins für eine Frequenz an? DCO? Nix? Rauschen?

von Lanius (Gast)


Angehängte Dateien:

Lesenswert?

ich wollte gerade auf slaa081.pdf verweisen, da ich die bei TI nicht
finden konnte habe ich sie mal angehängt.

von ehde76 (Gast)


Lesenswert?

bei Verwendung von HF Oscillatoren, sollte lautet TI auch immer das
OFIFG Flag abgecheckt werden (User Guide, 4.2.6 Basic Clock Module
Fail-Safe Operation)...

z.B. so
1
__bic_SR_register(OSCOFF);     // This bit, when set, turns off 
2
                               // the LFXT1 crystal oscillator. 
3
do
4
{
5
  IFG1 &= ~OFIFG;              // Clear OFIFG
6
  for (i = 0xFF; i > 0; i--);  // Time for flag to set
7
} while (IFG1 & OFIFG);        // Test oscillator fault flag
8
// und dann die gewünschten Einstellungen, z.B.
9
BCSCTL2 = SELM_3;              // set XT1 as MCLK

gruß

von E.I. (Gast)


Lesenswert?

Autor: Philipp Burch (Philipp_Burch) Datum: 18.09.2006 17:55 Blöde
Frage, aber hast du denn auch wirklich bei allen Pins die
Spezialfunktionen aktiviert (PxSEL)?

Diesen Zustand stellte ich mit P2SEL=0x01; und P5SEL=0x70; ein.

Ausserdem dieser Satz: "[...]unter der Bedingung, dass XT2 ist nicht
vorhanden ist und das ist bei mir ja der Fall." WAS ist bei dir der
Fall? Dass XT2 vorhanden ist oder nicht? Der 140er müsste doch
eigentlich einen XT2 haben, nicht?

Gute Frage, ich bin davon ausgegangen, dass er nicht vorhanden ist,
aber Figure 4-1 sagt wohl was anderes aus. Also ist er doch
vorhanden (intern) für die 14xx Baureihe.

Ausserdem: Was liegt denn an den anderen Pins für eine Frequenz an?
DCO? Nix? Rauschen?

An den Pins P5.4 und P5.5 liegt eine Frequenz zwischen 700 und 800
kHz.

Danke für die schnelle Hilfe an alle.

MfG

EI

von ehde76 (Gast)


Lesenswert?

"An den Pins P5.4 und P5.5 liegt eine Frequenz zwischen 700 und 800
kHz."

das ist der DCO...

von E.I. (Gast)


Lesenswert?

Mit der Basis-Takt-Einstellung wollte ich eigentlich, das der MCLK
mit dem externen Takt vom Quarz läuft. Aber ich probiere da schon
eine Weile mit rum. Das Ergebnis ist immer das selbe, dass der Takt
nicht am MCLK-Ausgang anliegt. Das heißt auch, dass die CPU mit dem
DCO läuft. ICh kopiere mal den C Code.

Gruß

EI

#include "msp430x14x.h"

void wait(unsigned int i);
double j, i=0;

int main( void )
{
  WDTCTL=WDTPW+WDTHOLD;
  wait(10);
  __bic_SR_register(OSCOFF);

  BCSCTL1|=XTS+XT2OFF;
  BCSCTL2=SELM_3;

  P2SEL=0x01;
  P5SEL=0x70;

  P1DIR=0x01;
  P1OUT=0x01;

}
void wait(unsigned int i) //warte funktion
{
  double j;
  unsigned int k;
  for(k=0;k<10;k++)
  {
    for(j=0;j<i;j++);
  }
}

von Branko Golubovic (Gast)


Lesenswert?

BCSCTL2 |= SELM1 + SELM0 ;           // MCLK = LFXT1

von E.I. (Gast)


Lesenswert?

So funktioniert es bei mir!

#include "msp430x14x.h"

void wait(unsigned int i);

double j, i=0;

int main( void )
{
  WDTCTL=WDTPW+WDTHOLD;
  //wait(10);
  BCSCTL1|=XTS+XT2OFF+DIVA_3;
  __bic_SR_register(OSCOFF);      //löscht das bit(0) OSCOFF im
statusregister> LFXT1 is on
  do
  {
    IFG1 &=~OFIFG;                //löscht OFIFG
    for (i=0xFF;i>0;i--);
  }
  while (IFG1&OFIFG);             //abbruchbedinung

  BCSCTL2=SELM_3+DIVM_3;          //SELM_3 soll den LFXTCLK soll den
MCLK generieren
                                  //&master-takt wird durch 8 geteielt

  P2SEL=0x01;
  P5SEL=0x70;                     //schaltet pin5.4-5-6 (01110000) die
sonderfunktion ein MCLK, SMCLK, ACLK

  P1DIR=0x01;
  P2DIR=0x01;
  P1OUT=0x01;

}
void wait(unsigned int i)         //warte funktion
{
  double j;
  unsigned int k;
  for(k=0;k<10;k++)               //warte-funktion wird k mal
aufgerufen
  {
    for(j=0;j<i;j++);
  }
}

von E.I. (Gast)


Lesenswert?

Aber wie Schalte ich jetzt den SMCLK auch auf XT1 um? im Datenblatt
steht unter der BCSCTL2 Beschreibung, dass SELS dafür benutzt werden
kann. Da ich bis her nur DCO gemessen habe, gehe ich davon
aus, dass XT2 nicht vorhanden ist. Im Kapitel 4.3 des Handbuchs
steht es so beschrieben. Kann jemand weiterhelfen?

von Eltman (Gast)


Lesenswert?

Also mit einen Quarz am XT1 kannst du nicht den SMCLR takten.
Im Handbuch steht "LFXT1CLK when XT2 oscillator not present on-chip"
heißt so viel wie, das der XT2 PIN nicht vorhanden ist.

Siehe
"
Note: XT2 Oscillator
The XT2 Oscillator is not present on MSP430x11xx or MSP430x12xx
devices. The LFXT1CLK is used in place of XT2CLK.
"

von Branko Golubovic (Gast)


Lesenswert?

Zuerst ein MSP430F140 gibst nicht.
Ich nehme an dass du ein MSP430F147, 148, oder 149 hast.
Und  ins Datenblatt schon auf die Seite 2 steht die Pinbelegung.

Pin 52   ->XT2OUT
Pin 53->XT2IN

Das sind die Anschlüssen für den Quarz XT2. Diese zwei Anschlüssen sind
auf jeden Fall vorhanden. Jetzt verstehe nicht was du meinst mit dem
„dass XT2 nicht vorhanden ist“. Es ist doch ein Bauteil und wenn
bestückt ist, ist doch zu sehen, oder?
Seite 6 aus SLAA 081 ist genug Aussagekräftig.
Für die Auswahl  als MCLK Quelle stehen  2 Bits zu Verfügung:
 SELM_1 und SELM_0
      0  +    0      =0 -> MCLK=LFXL1CLK
      0  +    1      =1 -> MCLK=DCOCLK
      1  +    0      =2 -> MCLK=DCOCLK
      1  +    1      =3 -> MCLK=XT2CLK

Für die Auswahl als SCLK Quelle steht nur 1 Bit zu Verfügung:
SELS
0  -> SCLK=DCOCLK
1  -> SCLK=XT2CLK

Kannst du dir vorstellen dass du mit dem  SELS Bit  ein Schalter
betätigst?
Wenn SELS= 0, dann ist DCOCLK mit dem SMCLK verbunden.
Wenn SELS =1, dann ist XT2CLK mit dem SMCLK verbunden.
Genauso gilt für SELM_1 und SELM_2 Bits, nur haben wir dann 4
Schaltstellungen.
Seite 6 GENAU beobachten.

>Aber wie Schalte ich jetzt den SMCLK auch auf XT1 um?<
Du kannst nicht XT1 als SMCLK Quelle auswählen, weil nur DCOCLK und
XT2CLK möglich ist.


Grüß Branko

von E.I. (Gast)


Lesenswert?

Danke für diese ausführliche Antwort und mir ist damit alles
verständlich geworden. Es handelt sich bei diesem µC um einen
MSP430F149, da ist mir leider ein Schreibfehler widerfahren. Mein
Problem war, dass ich dachte, dass XT2 is not present bedeutet, dass
der Quarz nicht angeschlossen ist, aber gemeint ist, dass der
Anschluss generell bei machen MSP430XXXX nicht vorhanden ist.
(XT1CLK kann somit nicht Quelle für SMCLK sein)

Nochmals besten Dank


E.I.

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.