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.