Timer läßt main-Funktion nicht ausführen (MSP430)

Gast #561473
Lesenswert?

Hallo,

arbeite mit dem msp430f0213, habe eine timer funktion die auch wunderbar 
funktioniert, aber meine teil der main-funktion wird nicht abgearbeit.

#include <msp430x20x3.h>

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P1DIR |= 0x01;                            // P1.0 output
  CCTL0 = CCIE;                             // CCR0 interrupt enabled
  CCR0 = 50000;
  TACTL = TASSEL_2 + MC_2;                  // SMCLK, contmode

  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt

//ab hier wird nichts mehr ausgeführt!



}

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  P1OUT ^= 0x01;                            // Toggle P1.0
  CCR0 += 50000;                            // Add Offset to CCR0
}

hat jemand eine idee?

danke!
#561486
Lesenswert?

Genau, denn der letzte Befehl vor dem Ausführungsstopp stoppt die CPU 
(LPM0). Und beim Interrupr wird sie wieder eingeschaltet, nach dem 
Interrupt jedoch wieder auf den vorherigen Zustand, also auch.

LPMx_EXIT verändert das auf dem Stack gesicherte Statuswort der CPU so, 
dass nach dem Return vom Interrupt der Active Mode an ist.

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