Forum: Mikrocontroller und Digitale Elektronik Problem mit Timer CCR0


von MSP-Anfänger (Gast)


Lesenswert?

Hallo zusammen, ich habe ein Problem mit dem Timer CCR0 - ich wollte 
TimerA0 ebenfalls als ganz normalen Zähler nehmen, jedoch zählt das 
Register viel zu lange hoch - es dauert ewig, bis da endlich mal der 
CCR0-Wert erreicht ist und ich verstehe nicht, woran das liegt. Der 
TimerA1 funktioniert. Es ist ein MSP430F2011. Bitte um Hilfe - was mache 
ich falsch? Habe den Wert für CCR0 jetzt schon total runtergescharubt, 
aber trotzdem blinkt die andere in der Zeit zich Male.


#include "msp430x20x1.h"
#include "stdint.h"

#define LED1 0x01;
#define LED2 0x02;

volatile uint16_t zaehler1 = 0;
volatile uint16_t zaehler2 = 0;

void main (void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;

  P1SEL = 0x00;
  P1DIR |= 0x03;
  P1OUT &= ~0x03;

  TACTL = TASSEL_2 + ID_2 + MC_2;           // SMCLOCK + Teiler 8 + 
Cont.-Mode

  TACCTL0 = CCIE;
  TACCR0 = 100;

  TACCTL1 = CCIE;
  TACCR1 = 100;

  _BIS_SR (GIE);

  while (1) {}
}


#pragma vector=TIMERA0_VECTOR               // ISR nach CCR0
__interrupt void timer0 (void)
{
  zaehler2 += 1;
  if (zaehler2 == 100)
  {
    zaehler2 = 0;
    P1OUT ^= LED2;
    TACCR0 += 50000;
  }
}

#pragma vector=TIMERA1_VECTOR               // ISR nach CCR1
__interrupt void timer1 (void)
{
  zaehler1 += 1;
  if (zaehler1 == 5000)
  {
    zaehler1 = 0;
    P1OUT ^= LED1;
    TACCR1 += 50000;
  }
}

von MSP-Anfänger (Gast)


Lesenswert?

Esmacht auch garkeinen Unterschied, ob ich den Input-Divider verändere 
oder nicht, wie kann das sein?

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.