Forum: Mikrocontroller und Digitale Elektronik MSP430 SMCLK = XT1CLK != 32 kHz?


von Michael (Gast)


Lesenswert?

Hallo zusammen,

ich habe an meinem MSP430FR5729 einen 32,768 kHz Quarz hängen und habe 
den XT1CLK aus Quelle für den SMCLK definiert.

Danach habe ich Port 3.4 als Takt-Ausgang definiert, um den XT1CLK mit 
einem Oszilloskop messen zu können.

Folgender Code:
1
#include <msp430.h> 
2
3
4
int main(void)
5
{
6
    WDTCTL = WDTPW | WDTHOLD;  // Stop watchdog timer
7
8
    // XT1 Setup
9
    PJSEL0 |= BIT4 + BIT5;
10
11
    // Configure P3.4 = SMCLK
12
    P3DIR |= BIT4;
13
    P3SEL0 |= BIT4;
14
    P3SEL1 |= BIT4;
15
16
    // Configure MSCLK = XT1CLK
17
    CSCTL0_H = 0xA5;
18
    CSCTL2 = SELS_0;          // set ACLK = XT1CLK
19
    CSCTL3 = DIVS_0;          // set ACLK Divider = 1
20
    CSCTL4 &= ~SMCLKOFF;
21
    CSCTL4 &= ~XT1OFF;        // Start XT1
22
    CSCTL4 &= ~XTS;
23
    CSCTL4 |= XT1DRIVE_0;
24
    CSCTL0_H = 0x01;          // Lock Register
25
26
    return 0;
27
}

Allerdings messe ich auf dem Oszilloskop einen Takt um die 8 kHz, sprich 
irgendwo kommt da ein Faktor 4 her. Aber wo?

Jemand eine Idee?

Beste Grüße,
Michael

von Jim M. (turboj)


Lesenswert?

Kein while(1); in main() könnte auch eine Ursache sein, d.h. der µC 
startet ständig neu.

von Michael (Gast)


Lesenswert?

Hat sich erledigt,

da fehlt noch ein...
1
do
2
{
3
  CSCTL5 &= ~XT1OFFG;                                    
4
  SFRIFG1 &= ~OFIFG;
5
}
6
while (SFRIFG1&OFIFG);
.. vor dem
1
return 0;

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.