MSP430 Tastereingabe verriegeln

Gast #869531
Lesenswert?
• ▲
▼
Es werden zwei Taster an P2.0 bzw. P2.1 verwendet, welche mit der 
H/L-Flanke jeweils ein Unterprogramm auslösen. Taster 2.0 startet das 
eigentliche Programm und P2.1 legt den µC schlafen, nachdem ein 
bestimmter Wert( hier Sektor) im Info-Speicher abgespeichert wurde.
Der Startvorgang (mit 2.0)darf nicht zweimal hintereinander ausgeführt 
werden, sondern es soll erst der Taster 2.1 bedient werden.
Hat jemand eine Idee, wie das Problem gelöst werden kann?

Hier ein Ausschnitt aus meinem Programm:

int main(void)
     {
   WDTCTL = WDTPW + WDTHOLD;   // Stop watchdog timer
   P2IE  = 0x83;         // an  P2.0, P2.1+ P2.7 Interruptfreigabe
   P2IES = 0x83;         // auf H/L Flanke  an P2.0, P2.1 , P2.7
    _BIS_SR (LPM4_bits + GIE);  // wartet auf Tasteneingabe
   for(;;);
      }

interrupt (PORT2_VECTOR)Taste (void) //nicht vergessen:
                                     //#include <signal.h>
  {
  if ((P2IFG&BIT0) == BIT0)       // neuen Start auslösen
  {
    P2IFG&=~BIT0;
    EKGstart();
  }
  if ((P2IFG&BIT1) == BIT1)
  {
    P5OUT &=~BIT6;                // LED EIN als Kontrolle
    Sektorzahl_speichern();
    P2IFG&=~BIT1;
    _BIS_SR (LPM4_bits + GIE);    // schaltet µC ab RAM bleibt erhalten
      }
  }
MfG
Wolfgang
#869645
Lesenswert?
• ▲
▼
Hallo, ich würde einfach nach dem Betätigen des Tasters an P2.0 ein Bit 
setzen, welches Du in Deiner Abfrage mit abfragst. In der Routine für's 
Schlafenlegen wird dann dieses Bit wieder zurückgesetzt.

Quasi so (kein Quelltext!):

taster2_gedrueckt = 0;

wenn taster2 gedrueckt UND taster2_gedrueckt == 0
{
mache was...
taster2_gedrueckt = 1;
...
}

wenn taster1 gedrueckt
{
mache was...
taster2_gedrueckt = 0;
...
}

Damit dürfte es gehen. Ob es ganz besonders schick ist, weiß ich nicht. 
Das müssen die Profis beurteilen...

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.