MSP430 Taster abfrage

Gast #1010063
Lesenswert?

Hallo Leute!
Hab hier ein kleines Testprogramm für einen MSP430F1232!

Leider funktioniert der Code irgendwie nicht in meinem System.

Die Taster sind aktiv high, also mit einem 10k pull-down widerstand 
beschalten.
gegen high geht dann nur mehr der Taster.

Warum aber geht der MSP430 immer wieder in die if abfragen rein. in 
5sek. geht er die abfrage ca. 5 mal durch, das kann doch nicht sein, 
wenn der taster auf low ist...!

Ich versteh das nicht ganz, kann mir jemand helfen? bzw. hat jemand das 
gleiche prob. ?

kann es an meiner Hardware liegen?

mfg, Geri

Hier noch der C-Code:
1
#include "io430.h"
2
#include "in430.h"
3

4
#define SSR_on  P2OUT |= BIT4
5
#define SSR_off P2OUT &= ~BIT4
6

7
//Variablen
8
volatile char SSR_state=0;
9

10
//prototyp
11
void wait(int i);
12

13
void main( void )
14
{
15
  // Stop watchdog timer to prevent time out reset
16
  WDTCTL = WDTPW + WDTHOLD;
17
  
18
  //SSR Ausgang auf Output schalten 
19
  P2DIR |= BIT4;
20
  
21
  // Taster als Eingänge definieren
22
  P1DIR &= ~BIT2; // Taster 1
23
  P1DIR &= ~BIT1; // Taster 2
24
  
25
  SSR_on;
26
  
27
  while(1)
28
  {
29
    
30
    if((P1IN & BIT2)){
31
      wait(2000);
32
      SSR_state=0;
33
    }
34
   
35
    if((P1IN & BIT1)){
36
      wait(2000);
37
      SSR_state=1;
38
    }
39
    
40
    if(SSR_state){
41
      SSR_on;
42
    }
43
    else{
44
      SSR_off;
45
    }
46
  }//while
47

48
}//main
49

50

51
void wait(int i)
52
{
53
  int k;
54
  for(k=0;k<=i;i++);
55
}
#1010391
Lesenswert?

Wozu? Er benutzt die Taster doch gar nicht im Interrupt. Ich denke eher, 
die Wait-Schleife wird wegoptimiert, weil die Zählvariable nicht als 
volatile deklariert ist. Durch das Tasterprellen kommt es durcheinander. 
Sind die Taster wirklich an P1.1 und P1.2 angeschlossen und nicht etwa 
an P1.0 und P1.1?
Gast #1010509
Lesenswert?

>Ich denke eher, die Wait-Schleife wird wegoptimiert
Die Gefahr besteht durchaus! Hier glaub ich jedoch nicht, denn wenn er 
in 5s "nur" 5x die Schleife durchläuft, muss ja irgendwo der Delay 
herkommen.

>Durch das Tasterprellen kommt es durcheinander.
Prellen ist sicher ein generelles Problem.
Aber auch hier verstehe ich das anders:
Ich denke, er meint, dass die Tasten gar nicht gedrückt werden und 
trotzdem die "if's" angesprungen werden!

Sicher, dass die Taster richtig angeschlossen sind, bzw. keine Öffner 
sind, also im unbetätigten Zustand nicht eventuell immer High-Pegel an 
P1.x anliegt?

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