Problem mit Timer CCR0

Gast #1707308
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;
  }
}

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