www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Taster abfrage


Autor: GeRi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
#include "io430.h"
#include "in430.h"

#define SSR_on  P2OUT |= BIT4
#define SSR_off P2OUT &= ~BIT4

//Variablen
volatile char SSR_state=0;

//prototyp
void wait(int i);

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  
  //SSR Ausgang auf Output schalten 
  P2DIR |= BIT4;
  
  // Taster als Eingänge definieren
  P1DIR &= ~BIT2; // Taster 1
  P1DIR &= ~BIT1; // Taster 2
  
  SSR_on;
  
  while(1)
  {
    
    if((P1IN & BIT2)){
      wait(2000);
      SSR_state=0;
    }
   
    if((P1IN & BIT1)){
      wait(2000);
      SSR_state=1;
    }
    
    if(SSR_state){
      SSR_on;
    }
    else{
      SSR_off;
    }
  }//while

}//main


void wait(int i)
{
  int k;
  for(k=0;k<=i;i++);
}

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tasterprellen???

mfg Alex

Autor: MichiB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

sieht gut aus.

Wie sieht die Schaltung aus?

Autor: Nat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie wärs, wenn du den Flag (P1IFG) für die beiden Bits löschst?

Autor: Nat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, ich glaube es geht doch nicht, da du keinen Interrupt benutzst.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.