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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.