www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik msp340 Anwendung/Unterschied der clocks


Autor: stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Es gibt
ACLK
MCLK
SMCLK
VLOCLK
DCO

und bei dem LPM4 ist sogar der chrystal extra mit aufgeführt
Gibt es Standardprozeduren, welchen Takt man für was verwendet?(will zb. 
ADC und UART nutzen, mit nem  timer regelmäßig aufwachen)

Woraus entstehen welche Clocks? Das sind so viele, finde mich nicht 
zurecht. Ich kannte nur intern und extern z.B. bei Atmegas.

Danke für: HILFE!

im Übrigen handelt es sich um einen msp430x22x4

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im User Guide ist ein großes Bild, welche Takt-Quellen auf welche 
Taktleitungen gehen. Diese flexible Taktversorgung, die während des 
betriebes frei geändert werden kann, ist ja der größte Vorteil am MSP430 
gegenüber Mitbewerbern.
Im Normalfall wird man den MCLK (für die CPU) mit einem vom DCO/FLL 
erzeugten Takt betreiben. Damit ist sichergestellt, dass für die 
Ausführung vion Interrupts der Takt innerhalb 1...6µs (je nach MSP) 
verfügbar ist. Für einen Timer, der das System zyklisch aufwachen soll, 
benutzt mal am besten einen Uhrenquarz an XT1 und speist damit den ACLK. 
Der ist nämlich im LPM3 auch noch aktiv. Für UART Kommunikation sollte 
man schon auch einen Quarz-Takt oder einen von der FLL+ aus dem Quarz 
abgeleiteten Takt benutzen. Die FLL+ ist in der Lage, ganzzahlige 
Vielfache des Quarz-Taktes zu erzeigen, da kann man z.B. aus dem 
Uhrenquarz eine recht stabile hohe Frequenz für die UART erzeugen. Wenn 
die nicht genau passt, ist beim MSP430 kein Problem, er hat ja den 
Baudraten-Modulator. Will man meinetwegen noch schnelle PWM oder solche 
Geschichten machen, die eine genaue Zeitbasis erfordern, kann man ja 
noch den XT2 anschließen und den Takt als SMCLK (für die Peripherie) 
nehmen. Die allermeisten Module lassen eine Auswahl aller Takte als 
Quelle zu, da kann man sich gut austoben. Der ADC funktioniert gut mit 
seinem eigenen Taktgenerator, nur das Start-Signal sollte man per Timer 
mit denn CCR-Registern erzeugen. Beim ADC kann man dann das TA oder TB 
Signal als Start benutzen. Somit ist eine äquidistante Abtastung 
sichergestellt.

Autor: stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Angenommen, ich will nun den Quarz nutzen. Dieser ist in meiner 
Schaltung bereits vorhanden. Sind dann noch Einstellungen notwendig oder 
läuft die CPU dann sofort mit dem Quarztakt?

ACLK ist der Quarz, es sei denn ich brech den runter mit DIVAx richtig?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen Quarz? Und wo ist der angeschlossen? Die Standard-Einstellung 
ist ACLK gespeist aus Uhrenquarz am XT1. MCLK und SMCLK gespeist aus dem 
DCO, der ohne Initialisierung bei etwa 800kHz läuft.

Autor: stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Timer läuft mit DCO-Frequenz, also wenn ich TBSSEL_2 nutze. TBSSEL_1 
verweist ja auf ACLK, aber dann wird der getoggelte Pin nur einmal auf 
HI gesetzt, dann passiert nix mehr! vllt. läuft mein quarz nicht?!?

//main und #inc. weggelassen

 TBCTL = TBSSEL_1 + MC_2 + TBIE;           // SMCLK, contmode, interrupt

  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0 w/ interrupt
}

// Timer_B3 Interrupt Vector (TBIV) handler
#pragma vector=TIMERB1_VECTOR
__interrupt void Timer_B(void)
{
  switch (TBIV)        // Efficient switch-implementation
  {
    case  2: break;                         // TBCCR1 not used
    case  4: break;                         // TBCCR2 not used
    case 14: P4OUT ^=(1<<2);                // overflow
             break;

Autor: stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher quarz?
Also angeschlossen ist der an  XIN und XOut, am quarz noch 22pF gegen 
Masse an jedem Quarzpin. Es ist ein Grundton Standardquarz

Autor: Tobias Korrmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was meinst du mit Grundton
Standart schließt man an XT1 (also XIN und XOUT)
einen 32 kHz Uhrenquarz an.
DAnn läuft auch die Standart einstellung.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Frequenz hat der? Du musst dann erst den HFXTAL Modus 
einschalten, wenn der mehr als 45kHz hat. Dann wie in den C-Demos 
beschrieben, das Fault-Flag pollen usw. um zu schauen, ob der Oszillator 
angelaufen ist.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Über 455kHz, sorry.

Autor: stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit dem hfxtal-modus ist sicher das bit XTS aus BCSCTL1 gemeint??
in den demos habe ich nix übers Fault-Flag gefunden.

Autor: stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stephan schrieb:
> mit dem hfxtal-modus ist sicher das bit XTS aus BCSCTL1 gemeint??
> in den demos habe ich nix übers Fault-Flag gefunden.

Ich meine den Quelltext:
//******************************************************************************
//  MSP430F22x4 Demo - Basic Clock, MCLK Sourced from HF XTAL
//
//  Description: Proper selection of an external HF XTAL for MCLK is shown by
//  first polling the OSC fault until XTAL is stable - only then is MCLK
//  sourced by LFXT1. MCLK/10 is on P1.1 driven by a software loop taking
//  exactly 10 CPU cycles.
//  ACLK = MCLK = LFXT1 = HF XTAL, SMCLK = default DCO ~1.2MHz
//  //* HF XTAL NOT INSTALLED ON FET *//
//  //* Min Vcc required varies with MCLK frequency - refer to datasheet *//
//
//               MSP430F22x4
//            -----------------
//        /|\|              XIN|-
//         | |                 | HF XTAL (3 – 16MHz crystal or resonator)
//         --|RST          XOUT|-
//           |                 |
//           |             P1.1|-->MCLK/10 = HFXTAL/10
//           |             P2.0|-->ACLK = HFXTAL
//
//  A. Dannenberg
//  Texas Instruments Inc.
//  April 2006
//  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
//******************************************************************************
#include "msp430x22x4.h"

volatile unsigned int i;

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

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

  BCSCTL1 |= XTS;                           // ACLK = LFXT1 = HF XTAL
  BCSCTL3 |= LFXT1S1;                       // 3 – 16MHz crystal or resonator

  do
  {
    IFG1 &= ~OFIFG;                         // Clear OSCFault flag
    for (i = 0xFF; i > 0; i--);             // Time for flag to set
  }
  while (IFG1 & OFIFG);                     // OSCFault flag still set?

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

  for (;;)                                  // Infinite loop
  {
    P1OUT |= 0x02;                          // P1.1 = 1
    P1OUT &= ~0x02;                         // P1.1 = 0
  }
}

Autor: stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für den code!

Nur eigenartig: Wenn ich einen 4MHz Quarz nehme, bekomme ich an Pin 2.0 
ein 75Hz signal. Ja, Hz nicht kHz oder MHz

:(

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Womit misst du das? Oszilloskop? Hat das genügend Bandbreite? Sonst 
gibts Alias-Bilder durch die Verletzung des Abtasttheorems.

Autor: stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abtasttheorem ist mir bekannt, zb. shannon, also dies ist wohl mit 
400MHz Oszi voll und ganz erfüllt.......

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.