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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.