msp340 Anwendung/Unterschied der clocks

Gast #1318601
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
#1318670
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.
Gast #1318697
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?
Gast #1318712
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;
#1319771
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:
1
//******************************************************************************
2
//  MSP430F22x4 Demo - Basic Clock, MCLK Sourced from HF XTAL
3
//
4
//  Description: Proper selection of an external HF XTAL for MCLK is shown by
5
//  first polling the OSC fault until XTAL is stable - only then is MCLK
6
//  sourced by LFXT1. MCLK/10 is on P1.1 driven by a software loop taking
7
//  exactly 10 CPU cycles.
8
//  ACLK = MCLK = LFXT1 = HF XTAL, SMCLK = default DCO ~1.2MHz
9
//  //* HF XTAL NOT INSTALLED ON FET *//
10
//  //* Min Vcc required varies with MCLK frequency - refer to datasheet *//
11
//
12
//               MSP430F22x4
13
//            -----------------
14
//        /|\|              XIN|-
15
//         | |                 | HF XTAL (3 – 16MHz crystal or resonator)
16
//         --|RST          XOUT|-
17
//           |                 |
18
//           |             P1.1|-->MCLK/10 = HFXTAL/10
19
//           |             P2.0|-->ACLK = HFXTAL
20
//
21
//  A. Dannenberg
22
//  Texas Instruments Inc.
23
//  April 2006
24
//  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
25
//******************************************************************************
26
#include "msp430x22x4.h"
27

28
volatile unsigned int i;
29

30
void main(void)
31
{
32
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
33

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

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

41
  do
42
  {
43
    IFG1 &= ~OFIFG;                         // Clear OSCFault flag
44
    for (i = 0xFF; i > 0; i--);             // Time for flag to set
45
  }
46
  while (IFG1 & OFIFG);                     // OSCFault flag still set?
47

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

50
  for (;;)                                  // Infinite loop
51
  {
52
    P1OUT |= 0x02;                          // P1.1 = 1
53
    P1OUT &= ~0x02;                         // P1.1 = 0
54
  }
55
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren