Problem mit Timer B bei MSP430F2619

Gast #3558366
Lesenswert?

Hallo,

ich hänge leider an einem Problem und komme nicht so recht weiter:
Wir wollen an einem MSP4302619 ein konstantes Rechtecksignal mit 1 MHz 
ausgeben. Für Timer A und Port 1.1 klappt das auch mit folgendem Code:
#include  <msp430x26x.h>

void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;                 // Stop Watchdog Timer
    if (CALBC1_8MHZ ==0xFF || CALDCO_8MHZ == 0xFF)
    {
      while(1);                               // If calibration 
constants erased
                                              // do not load, trap CPU!!
    }
    BCSCTL1 = CALBC1_8MHZ;                    // Set DCO to 8MHz
    DCOCTL = CALDCO_8MHZ;

    P1DIR |= 0x02;                            // P1.1 output
    P1SEL |= 0x02;                            // P1.1 option select
    CCTL0 = OUTMOD_4;                         // CCR0 toggle mode
    CCR0 = 4-1;                // countclock = 8MHz/2counts => 1count = 
up ---- 1 count = low
    TACTL = TASSEL_2 + MC_1;                  // ACLK, upmode

    _BIS_SR(LPM0_bits);                       // Enter LPM3 w/interrupt
}



Da wir den Timer A aber später für etwas anderes verwenden wollen, soll 
die Ausgabe am Timer B umgesetzt werden. Dazu haben wir Port 4.4 
ausgewählt und den Code folgendermaßen umgewandelt. Leider tut sich dann 
überhaupt nix- hat vielleicht jemand eine Idee, woran das liegen könnte?

void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;                 // Stop Watchdog Timer
    if (CALBC1_8MHZ ==0xFF || CALDCO_8MHZ == 0xFF)
    {
      while(1);                               // If calibration 
constants erased
                                              // do not load, trap CPU!!
    }
    BCSCTL1 = CALBC1_8MHZ;                    // Set DCO to 8MHz
    DCOCTL = CALDCO_8MHZ;

    P4DIR |= 0x01;                            // P1.4 output
    P4SEL |= 0x01;                            // P1.4 option select
    TB0CCTL0 = OUTMOD_4;                         // CCR0 toggle mode
    TBCCR0=TBCCR0 = 4-1;                // countclock = 8MHz/2counts => 
1count = up ---- 1 count = low
    TBCTL = TBSSEL_1 + MC_1;                  // ACLK, upmode

    _BIS_SR(LPM0_bits);                       // Enter LPM3 w/interrupt
}

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