Forum: Mikrocontroller und Digitale Elektronik Timer läßt main-Funktion nicht ausführen (MSP430)


von Markus T. (Gast)


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!

von Markus T. (Gast)


Lesenswert?

meine den msp430f2013

von Jörg S. (Gast)


Lesenswert?

Der Interrupt muss den Low Power Mode wieder beenden (falls es darum 
geht):

LPM0_EXIT;

von Christian R. (supachris)


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.

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.