www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 8MHz für MSP Board!?


Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein MSP Headerboard mit einem msp430f149. Das Board ist von 
Olimex.

Da ist ein 32kHz Quarz dran. Ich würde nun gerne einen Quarz mit 8MHz an 
dem MSP anbringen. Da wollte ich nun einmal wissen, was für einen Quarz 
ich da nehmen muss und wo ich den dann dranlöten muss, also an welche 
Pins?

Ich steige bei den Quarzen und Taktquellen noch nicht so ganz durch.

Ich hoffe, dass man versteht, was ich vor habe.

gruß Sven

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst auch den 32k-Quarz nehmen und damit den internen Taktgenerator 
korrigieren - dazu gibt es eine App-Note, die auch den Code dafür 
enthält.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Taktquellen des MSP zu verstehen ist essenziell, das ist ja gerade 
das Alleinstellungsmerkmal des MSP. Wenn du den 32Khz Quarz dran lässt, 
kannst du sehr stromsparende Systeme bauen. Den 8MHz Quarz kannst du 
noch zusätzlich an X2IN und X2OUT anschließen. Wie man den startet, 
steht in den C-Demos von TI öfters mal. Oder den X1 gegen den 8MHz 
tauschen, aber dann geht die Stromspar-Sache flöten.

Der 149 hat keinen FLL+, also wird der DCO nur beim Einstellen so gut es 
geht an das Vielfache des Quarztaktes angenähert, und driftet dann 
leider weg.

Hab ich an einem 1611 in der Klimakammer schön beobachten können.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, bei einem Systemtakt von 8MHz muss die Betriebsspannung 3,6V 
sein, sonst gehts nicht zuverlässig.

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also wenn ich die baudrate recht genau einstellen will, also was über 
9600 geht benötige ich den 8mhz quarz, weil ich das ganze sonst nicht 
hin bekomme, da der takt sonst wegdriftet. das scheint auch das 
einfachste zu sein, da gibt es ja genügend beispielcode von ti zur 
einstellung der baudraten mit einem 8mhz quarz an X2IN/OUT.

Kann ich da jeden x beliebigen quarz nehmen oder muss ich da auf was 
besonderes achten?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na für UART Anwendungen reicht der DCO dicke zu. Den musst du halt 
einmal einstellen und wenn sich die Temperatur nicht drastisch ändert, 
klappt das mit der UART.

Hier mal eine Funktion, um den DCO einzustellen:

DELTA ist der Faktor, im Beispiel ergibt das 4,096MHz
//------------------------------------------------------------------------------
void Set_DCO (void)                         // Set DCO to selected frequency
//------------------------------------------------------------------------------
{

#define DELTA 125              // target DCO = DELTA*(32768) = 4096000
  unsigned int Compare, Oldcapture = 0;
  
  CCTL2 = CM_1 + CCIS_1 + CAP;              // CAP, ACLK
  TACTL = TASSEL_2 + MC_2 + TACLR;          // SMCLK, cont-mode, clear

  while (1)
  {
    while (!(CCIFG & CCTL2));               // Wait until capture occured
    CCTL2 &= ~CCIFG;                        // Capture occured, clear flag
    Compare = CCR2;                         // Get current captured SMCLK
    Compare = Compare - Oldcapture;         // SMCLK difference
    Oldcapture = CCR2;                      // Save current captured SMCLK

    if (DELTA == Compare) break;            // If equal, leave "while(1)"
    else if (DELTA < Compare)               // DCO is too fast, slow it down
    {
      DCOCTL--;
      if (DCOCTL == 0xFF)
      {
        if (!(BCSCTL1 == (XT2OFF)))
        BCSCTL1--;                          // Did DCO roll under?, Sel lower RSEL
      }
    }
    else
    {
      DCOCTL++;
      if (DCOCTL == 0x00)
        {
          if (!(BCSCTL1 == (XT2OFF + 0x07)))
          BCSCTL1++;                        // Did DCO roll over? Sel higher RSEL
        }
    }
  }
  CCTL2 = 0;                                // Stop CCR2
  TACTL = 0;                                // Stop Timer_A
}

Autor: Jörg S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für 4MHz hab ich erfolgreich den Murata Resonator CSTCC 4,00 von 
Reichelt eingesetzt. Von dem gibt's auch ne 8MHZ Version.

Für die bessere Stabilität vom internen DCO am besten einen externen 
Oazillator Widerstand (ROSC Pin) einsetzen!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die von Christian gepostete Funktion kann man auch in den Timerinterrupt 
hängen, dann wird die Drift des DCO permanent ausgeglichen. Ein Beispiel 
dafür ist in einigen Beispielen von TI zu finden.

Hier Beitrag "Re: MSP430 UART Baudrate einstellen" habe ich mich 
schon mal darüber ausgelassen. Sofern es nur um UART-Gebrauch geht, 
dürfte die leichte Timingungenauigkeit durch das Nachjustieren des DCO 
nicht stören.

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.