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!
Der Interrupt muss den Low Power Mode wieder beenden (falls es darum geht): LPM0_EXIT;
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.