Forum: Mikrocontroller und Digitale Elektronik MSP430 exit LPM45 fails


von MSPler (Gast)


Lesenswert?

Hallo Zusammen,

ich versuche gerade den MSP430FR5729 in den LPM45 zu befördern, was mit 
folgender Funktion auch ohne Probleme gelingt:
1
void LPM5()
2
{
3
  PMMCTL0_H = PMMPW_H;                 // Open PMM Registers for write
4
  PMMCTL0_L |= PMMREGOFF;              // and set PMMREGOFF
5
  __bis_SR_register(LPM4_bits + GIE);  
6
}
7
[/]
8
9
Um ihn wieder aufzuwecken, habe ich Port 3.0 als Interrupt Eingang konfiguriert:
10
11
[code]
12
void init_ports()
13
{
14
  P3OUT &= ~BIT0;    // Initialize Input Value
15
  P3IES &= ~BIT0;    // P3.0 Low to High edge
16
  P3SEL0 &= ~BIT0;   //P3.0 selected as GPIO
17
  P3SEL1 &= ~BIT0;
18
  P3IE |= BIT0;      // P3.0 interrupt enabled
19
  P3IFG &= ~BIT0;    // P3.0 IFG cleared
20
  P3REN |= BIT0;     // P3.0 Pull-Down Resistor
21
}

Die Interrupt-Routine sieht wie folgt aus:
1
#pragma vector=PORT3_VECTOR
2
__interrupt void Port_3(void)
3
{
4
  PMMCTL0_H = PMMPW_H;
5
  PMMIFG  |= PMMLPM5IFG;
6
  PMMCTL0_L &= ~PMMREGOFF;
7
8
  P3IFG &= ~BIT0;
9
  __bic_SR_register_on_exit(LPM4_bits);
10
}

Nur wacht der gute MSP430 nicht mehr auf. Interrupts werden in der 
main() global aktiviert und sollten dies auch im Schlafmodus noch sein.

Jemand eine Idee?

Vielen Dank schon mal im Voraus.

von Go MSP (Gast)


Lesenswert?

Ja, in der ISR sind die Interrupts disabled. Du schickte den uC aber in 
der ISR wieder indem LPM. Wer soll ihn jetzt wecken?

Beim MSP wird nach der ISR der gleiche LPM wie vor dem Interrupt 
eingenommen. Also lass die letzte Zeile in der ISR weg.

von GoMSP (Gast)


Lesenswert?

Go MSP schrieb:
> Ja, in der ISR sind die Interrupts disabled. Du schickte den uC
> aber in der ISR wieder indem LPM. Wer soll ihn jetzt wecken?
>
> Beim MSP wird nach der ISR der gleiche LPM wie vor dem Interrupt
> eingenommen. Also lass die letzte Zeile in der ISR weg.

Ist natürlich Blödsinn, sorry. Das muss was anderes 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.