MSP430 LPM4 wacht viel zu schnell auf

Gast #3897047
Lesenswert?

Hallo zusammen,

anbei ein Stück Sourcecode, welches den MSP430 in den LPM4 versetzt.
Löst man über einen Schalter ( P3.0) einen Interrupt aus, wird der 
Ausgang P 3.1 HIGH und gleich wieder LOW.

Am Oszilloskop kann ich sowohl das Interrupt Ereignis, als auch den HIGH 
Low Pegel sehen. Soweit funktioniert das. Allerdings benötigt der MSP430 
zum aufwachen nur 10 µs. Laut Datenblatt sollten das aber 300µs sein?

Jemand eine Idee warum das so ist?
1
#include <msp430.h>
2
int main(void)
3
{
4
  //Initialize stage
5

6
  // Stop watchdog timer
7
  WDTCTL = WDTPW + WDTHOLD;
8

9
  // Defines Ports
10
  //Configure P3.1 Out for Measurement
11
  P3DIR |= BIT1;
12
  P3OUT &= ~BIT1;
13

14
  //Initialize Switch S1
15
  P3OUT &= ~BIT0;
16

17
  // P3.0 Lo/Hi edge
18
  P3IES &= ~BIT0;
19

20
  // P3.0 interrupt enabled
21
  P3IE |= BIT0;
22

23
  // P3.0 IFG cleared
24
  P3IFG &= ~BIT0;
25

26
  // P3.0 Pull-Down Resistor
27
  P3REN |= BIT0;
28

29
   for(;;)
30
   {
31
     __bis_SR_register(LPM4_bits + GIE);
32
   }
33
}
34

35
// Port 3 interrupt service routine
36
#pragma vector=PORT3_VECTOR
37
__interrupt void Port_3(void)
38
{
39
  //Set TEST PIN P3.1/A13 = HIGH
40
  P3OUT |= BIT1;
41

42
  //Clear Interrupt Register
43
  P3IFG &= ~BIT0;
44

45
  //Set TEST PIN P3.1/A13 = LOW
46
  P3OUT &= ~BIT1;
47
}

Beste Grüße,
Michael
Gast #3897635
Lesenswert?

Nimm das for(;;) weg. Wenn er weiter läuft, und schöne Spikes zeigt, 
funktioniert der LPM. Zeig uns mal den Scope Bildschirm. Wurde eine 
Taste zufiel gedrückt und horizontal geteilt? Scheint ja der Faktor 10 
zwischen Soll und Ist zu sein.

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