Forum: Mikrocontroller und Digitale Elektronik MSP430: SMCLK, MCLK, ACLK messen


von Jürgen R. (duke)


Lesenswert?

Hallo,

wie kann ich bei einem MSP430 (F449) die SMCLK, MCLK, ACLK mit einem
Oszi messen?

Grüße

von szimmi (Gast)


Lesenswert?

Lt. Datenblatt kannst Du die Signale an folgenden Pins abgreifen:
Pin 82 (P1.5): ACLK
Pin 83 (P1.4): SMCLK
Pin 86 (P1.1): MCLK
Wenn mich nicht alles täuscht, sollte es reichen, die entsprechenden
PxSEL und PxDIR zu setzen, damit die Signale an die Pins
durchgeschaltet werden.
Probiere es halt aus.

von Jörg S. (Gast)


Lesenswert?

Ja ist richtig, SEL und evt. DIR setzen, dann kommt der CLK raus.

von Jürgen R. (duke)


Lesenswert?

habe folgendes versucht:

P1SEL = 0x32;       //  xx11 xx1x = Pins werden nicht als I/O
                    //              verwendet, sondern als
                    //              Peripheral Funktion (ACLK...)

P1DIR |= 0x32;      //  xx11 xx1x
                    //         1  = P1.1 = MCLK
                    //     1      = P1.4 = SMCLK
                    //    1       = P1.5 = ACLK

jedoch leider ohne Erfolg.

Muss man evtl. einen externen pull-up vorsehen um überhaupt etwas
messen zu können?

In der i/o schematic erkenne ich nichts...

von szimmi (Gast)


Lesenswert?

Wie sieht denn die externe Beschaltung der 3 Pins in Deiner Applikation
aus?

von Jürgen R. (duke)


Lesenswert?

keine ext. Beschaltung

von szimmi (Gast)


Lesenswert?

Kannst Du bitte mal Dein C-Quellfile posten?

von Jürgen R. (duke)


Lesenswert?

here we are:

#include <msp430x44x.h>


int main(void)
{
  WDTCTL = WDTPW + WDTHOLD; // Stop Watchdog Timer WDT
  FLL_CTL0 |=0x30;

  P1SEL = 0x32;       // 0011 0010  = Pins werden nicht als I/O
verwendet
                      //              sondern als Peripheral Funktion
(ACLK...)
  P1DIR |= 0x39;      //  0011 1010
                      //         1  = P1.1 = MCLK
                      //       1    = P1.3 = LED
                      //     1      = P1.4 = SMCLK
                      //    1       = P1.5 = ACLK


  TACTL = TASSEL_1 + MC_2 + ID_0; // Timer A Init

  TACCTL0 = CCIE;
  TACCR0 = 32767;

  // gehe schlafen
    _BIS_SR(LPM3_bits + GIE);// (CPUOFF); // Enter LPM0
}



#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A(void)
{
  P1OUT ^= 0x08; // Toggle P1.3
  TACCR0 += 32767;
}

von Philipp B. (philipp_burch)


Lesenswert?

Lass den Controller mal nicht schlafen, könnte daran liegen, dabei wird
ja alles ausgeschaltet.

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.