Forum: Mikrocontroller und Digitale Elektronik MSP430 Quarz


von SumiDoc (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Ich mache gerade meine ersten Schritte mit einem MSP430 , ich habe nun 
eine Frage bezüglich dem mitgelieferten Beispiel von TI.
Bei dem Code handelt es sich um ein einfachen Echo-UART , also alles was 
ich dem MSP sende schickt er umgehend zurück.

Nun steht am Anfang des Codes gleich ein Hinweis.

//* An external watch crystal between XIN & XOUT is required for ACLK 
*//

Ich benutze das MSP-TS430PN80 Pinout Board von TI , auf diesem Board ist 
kein externes Quarz drauf , ich hab mal ein Bild vom Schaltplan des 
Boards hochgeladen.
Wenn ich es richtig verstanden habe muss ich ein externes Quarz bei 
LFXTCLK also zwischen XIN/XOUT einbauen.

Welches Quarz nehme ich da am besten ? Funktioniert die UART überhaupt 
nicht ohne ext.Quarz ?Welches Quarz verwenden sie in diesem Beispiel ?
1
/  MSP-FET430P430 Demo - USART0, 9600 UART Echo ISR, DCO SMCLK
2
//
3
//  Description: Echo a received character, RX ISR used. Normal mode is LPM0.
4
//  USART0 RX interrupt triggers TX Echo.
5
//  Baud rate divider with 1048576hz = 1048576Hz/9600 = ~109.23 (06Dh|03h)
6
//  ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz
7
//  //* An external watch crystal between XIN & XOUT is required for ACLK *//

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Prinzipiell funktioniert die UART auch mit dem DCO als Taktquelle, 
allerdings ist der bei den älteren MSP430-Varianten nicht ausreichend 
stabil, um eine zuverlässige Kommunikation mit einem angeschlossenen PC 
hinzubekommen.


Es gibt von TI eine Musterapplikation, bei der der ungebaue DCO mit 
einem 32kHz-Uhrenquarz stabilisiert wird. Ansonsten kannst Du jeden 
normalen Quarz verwenden, der im vom von Dir verwendeten MSP430 
unterstützten Frequenzbereich liegt -- bei den alten sind das 8 MHz.

Ein spezieller "Baudratenquarz" ist nicht erforderlich, da selbst die 
UART in den alten MSP430 einen flexibleren Baudratengenerator hat als 
die hier im Forum sonst gerne verwendeten Atmel-AVRs.

Anstelle eines Quarzes kannst Du auch einen Quarzoszillator verwenden, 
der dann nur an XIN angeschlossen wird, der Pin XOUT kann dann 
anderweitig genutzt werden.


Solltest Du einen halbwegs neuzeitlichen MSP430 haben (was man daran 
erkennt, daß er zusätzlich zum 4-Draht-JTAG auch SBW unterstützt), dann 
ist aber der DCO so stabil, daß ein Quarz nicht unbedingt nötig ist.

Welchen MSP430 verwendest Du? Daß Du dieses "Pinout Board" verwendest, 
lässt mich böses ahnen, das Ding wurde gerne für die steinalten 
'F1xx-Varianten verwendet (obwohl es auch da völlig unnötig war).

von SumiDoc (Gast)


Lesenswert?

Hallo

Vielen Dank für die schnelle Antwort.
Ich benutze den MSP430FG439.Ich benutze nur den Beispielcode von TI und 
dort ist mir der Hinweis direkt aufgefallen.
Kann ich den 430FG439 auch ohne externes Quarz für UART benutzen , falls 
ja muss ich doch bestimmt den Code anpassen ?
Hier mal der Beispielcode:
1
//******************************************************************************
2
//  MSP-FET430P430 Demo - USART0, 9600 UART Echo ISR, DCO SMCLK
3
//
4
//  Description: Echo a received character, RX ISR used. Normal mode is LPM0.
5
//  USART0 RX interrupt triggers TX Echo.
6
//  Baud rate divider with 1048576hz = 1048576Hz/9600 = ~109.23 (06Dh|03h)
7
//  ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz
8
//  //* An external watch crystal between XIN & XOUT is required for ACLK *//  
9
//
10
//                MSP430FG439
11
//             -----------------
12
//         /|\|              XIN|-
13
//          | |                 | 32kHz
14
//          --|RST          XOUT|-
15
//            |                 |
16
//            |       P2.4/UTXD0|----------->
17
//            |                 | 9600 - 8N1
18
//            |       P2.5/URXD0|<-----------
19
//
20
//
21
//  M. Buccini
22
//  Texas Instruments Inc.
23
//  Feb 2005
24
//  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.21A
25
//*****************************************************************************
26
#include <msp430.h>
27
28
int main(void)
29
{
30
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
31
  FLL_CTL0 |= XCAP18PF;                     // Configure load caps
32
  P2SEL |= 0x30;                            // P2.4,5 = USART0 TXD/RXD
33
  ME1 |= UTXE0 + URXE0;                     // Enable USART0 TXD/RXD
34
  UCTL0 |= CHAR;                            // 8-bit character
35
  UTCTL0 |= SSEL1;                          // UCLK = SMCLK
36
  UBR00 = 0x6D;                             // 1MHz 9600
37
  UBR10 = 0x00;                             //
38
  UMCTL0 = 0x03;                            // Modulation
39
  UCTL0 &= ~SWRST;                          // Initialize USART state machine
40
  IE1 |= URXIE0;                            // Enable USART0 RX interrupt
41
  P2DIR |= 0x10;                            // P2.4 output direction
42
43
  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
44
45
46
       while(1)
47
    {
48
      while (!(IFG1 & UTXIFG0));  
49
        TXBUF0 = 99;
50
     __delay_cycles(500000);
51
    }
52
53
}

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Der 'FG439 ist so alt, daß Du nicht auf einen Quarz verzichten solltest. 
Nimm einen 32kHz-Uhrenquarz wie im Kommentar Deines Beispielprogrammes 
angegeben.

von SumiDoc (Gast)


Lesenswert?


von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dieser Quarz sollte verwendbar sein.

von Christian R. (supachris)


Lesenswert?

Mach doch gleich einen 8MHz Quarz oder sowas dran, dann kannst du auch 
mehr als 9600 Baud machen. Oder kommts da auf ultra low power an?

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.