www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430: Maximale Taktfrequenz mit internem Oszi


Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Taktfrequenz ist mit dem MSP430FG439 mit internem Oszillator 
maximal möglich?

Wie muss ich diese Register setzten?

SCFQCTL
SCFI0
SCFI1

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die FLL+ im FG439 ist recht umfangreich und hat mehrere Register. Nicht 
ganz trivial einzustellen, da solltest du dir mal die Demos von TI 
angucken, da müsste ein Code-Beispiel dabei sein. Der Prozessor kann 
maximal mit 8Mhz laufen, egal, was man am FLL+ einstellen kann. Für die 
8MHz muss aber die Betriebsspannung 3,6V betragen. Für die FLL+ benutzt 
man am besten einen Uhrenquarz als Referenz und stellt die Register dann 
auf ein Vielfaches der 32,768kHz ein.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab folgendes Code-Beispiel gefunden:
//******************************************************************************
//  MSP-FET430P430 Demo - FLL+, Runs Internal DCO at 8MHz
//
//  Description: This program demostrates setting the internal DCO to run at
//  8MHz with auto-calibration by the FLL+.
//  ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = DCO = (121+1) x 2 x ACLK = 7995392Hz
//  //* An external watch crystal between XIN & XOUT is required for ACLK *//  
//
//                 MSP430FG439
//             -----------------
//         /|\|              XIN|-
//          | |                 | 32kHz
//          --|RST          XOUT|-
//            |                 |
//            |             P1.1|--> MCLK = 8Mhz
//            |                 |
//            |             P1.5|--> ACLK = 32kHz
//            |                 |
//
//  M. Buccini
//  Texas Instruments Inc.
//  Feb 2005
//  Built with IAR Embedded Workbench Version: 3.21A
//******************************************************************************
#include  <msp430xG43x.h>

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  SCFI0 |= FN_4;                            // x2 DCO freq, 8MHz nominal DCO
  SCFQCTL = 121;                            // (121+1) x 32768 x 2 = 7.99 Mhz
  FLL_CTL0 |= DCOPLUS + XCAP18PF;           // DCO+ set so freq= xtal x D x N+1
  P1DIR = 0x22;                             // P1.1,5 to output direction
  P1SEL = 0x22;                             // P1.1,5 to output MCLK & ACLK

  while(1);                                 // Loop in place
}



Was ich nicht ganz Check... oben steht "Runs Internal DCO at 8MHz". 
Gleichzeitig wird aber bei XIN/XOUT ein 32kHz Quarz angehängt. Ist 
dieses Beispiel nun mit externem oder internem oszi?

danke
klaus

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

Bewertung
0 lesenswert
nicht lesenswert
> Ist dieses Beispiel nun mit externem oder internem oszi?
Ich würde mal sagen beides. In der Regel wird der externe 32kHz dazu 
benutzt den internen exakt einzustellen. Ich nehme mal an das das bei 
diesem Beispiel auch so ist (// (121+1) x 32768 x 2 = 7.99 Mhz)

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau so ist es. Wobei die FLL+ noch bissl besser ist als der DCO. Durch 
die Regelschleife muss man das nicht nachstellen, der stellt sich 
automatisch immer auf das Vielfache des Quarzes ein. Und ist deshalb 
annähernd so genau wie der Quarz selber. Geht auch ganz ohne Quarz, dann 
aber mit recht viel Temp- und Vcc abhängigem Drift.

Autor: µluxx .. (uluxx) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das besipiel gitb doch alles her: MCLK läuft auf 8MHz DCO und ACLK wird 
von dem 32,768kHz Quarz versorgt!

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab den jetzt mal nach dem Beispiel eingestellt. Aber mein SPI clock ist 
immer noch so langsam. Ca. 5kHz und auch kein schöner Rechteck. Es 
werden so komische positive und negative Flanken ausgegeben.

Die Register für den SPI-Takt hab ich folgendermassen initialisiert:

 UBR00 = 0x02;                         // UCLK/2
 UBR10 = 0x00;


Müsste dann doch bei einem CPU-Clock von 4MHz ein 2MHz Takt ergeben. Und 
nicht 5kHz...

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit SSEL0 und SSEL1 werden ja die Source für den Vorteiler gewählt. Da 
kann man zwischen UCLKI, ACLK und SMCLK wählen. Was ist der Unterschied 
zwischen diesen drei?

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

Bewertung
0 lesenswert
nicht lesenswert
Der MSP430 hat grundlegend 3 Takt-"Stränge".
- ACLK
- MCLK
- SMCLK
ACLK und SMCLK sind eigentlich überall verfügbar. Daneben gibt es noch 
Peripherie bezogene Taktquellen wie eben der UCLKI.
Für den Anfang solltest du für dein SPI den SMCLK nehmen. Ist das 
einfachste.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und erst mal an den entsprechenden Pins für MCLK und SMCLK schauen, ob 
da überhaupt die 8Mhz rauskommen.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also bei obigem Beispiel, mit internem Oszi, beträgt die MCLK Frequenz 
3MHz. Sie sollte aber 8MHz betragen. Jemand eine Idee wieso?

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat niemand eine Idee warum die Frequenz nur 3MHz beträgt?

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

Bewertung
0 lesenswert
nicht lesenswert
Dein ACLK ist wirklich 32768Hz? Wie ist dein SMCLK?

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim Beispiel steht:

MCLK = SMCLK = DCO


Den MCLK hab ich an Port P1.1 gemessen. Der ist 3MHz.
Der SPI-Takt sollte SMCLK/2 sein und der ist 1.5MHz.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Womit misst du das eigentlich? 3Mhz klingt sehr komisch. Ist denn der 
Uhrenquarz richtig angeschlossen und hat er auch wirklich 32,768kHz?

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Womit misst du das eigentlich?
Mit einem KO, das stimmt schon.


>Ist denn der
>Uhrenquarz richtig angeschlossen und hat er auch wirklich 32,768kHz?

Wie gesagt, ich hab kein Uhrenquarz. Ich wollte ihn nur mit internem 
Oszi takten. Geht das überhaupt bei der Frequenz? Wie hoch kann ich ihn 
denn maximal intern takten?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, ohne Uhrenquarz kannst du das obige Beispiel natürlich nicht 
verwenden. Da musst du dich wohl durch den User Guide wühlen, und 
schauen, wie man den DCO ohne den Quarz als Referenz einstellt. 
Prinzipiell geht der DCO bis 56Mhz oder sowas einzustellen, allerdings 
geht die CPU nur bis 8MHz. Ich hab auf die Schnelle jetzt aber keinen 
Beispielcode dafür gefunden. Ohne Quarz ist das aber eh wahnsinnig 
ungenau, schau mal bloß ins Datenblatt auf Seite 31, wie die Toleranzen 
angegeben sind.

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

Bewertung
0 lesenswert
nicht lesenswert
Ohne Uhrenquarz hilft nur Try and Error. Solange an den Register-Werten 
spielen bis es passt.

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.