Forum: Mikrocontroller und Digitale Elektronik Tastenentprellung mit MSP430


von KoF (Gast)


Lesenswert?

ich weiß, es ist ein alter hut, doch ich habe enorme probleme damit. es
will einfach nicht klappen :(

ich habe pin 1.1 als interruptfähigen input konfiguriert und eine
interruproutine wie folgend geschrieben.
1
#pragma vector=PORT1_VECTOR
2
__interrupt void PORT1(void)
3
{
4
  for(m=0;m<=500;m++)//warte einige zeit
5
  _DINT();//interrupts aus machen
6
  {
7
    if(P1IFG & 0x01)// kam der interrupt vom p1.1?
8
    {
9
      P1OUT |= 0x02;   //led an, wenn taste gedrückt
10
      if(i < 0x1f)
11
      {
12
        i++;
13
      }
14
      else
15
      {
16
        i = 0;
17
      }   
18
    }
19
  }
20
  P1IFG &=~ 0x01;//löschen des interrupts
21
  P1OUT &=~ 0x02;//led wieder aus
22
  _EINT();//interrupt wieder an
23
}

was nicht funktioniert: bei jeder betätigung des tasters soll die
globale variable bis zu einem bestimmten wert jeweils um 1 hochgezählt
werden. tut sie jedoch nicht, sie zählt viele male pro betätigung des
tasters.

könnt ihr mir helfen?

von KoF (Gast)


Lesenswert?

die oberen zwei zeilen der routine drehen  (es ist noch früh am morgen
;-)

von KoF (Gast)


Lesenswert?

ach nö... heute ist nicht mein tag. "wenn der letzte fehler raus ist,
dann läuft`s" << weiser spruch ;-)
1
#pragma vector=PORT1_VECTOR
2
__interrupt void PORT1(void)
3
{
4
  _DINT();//interrupts aus machen
5
  for(m=0;m<=2500;m++);//warte einige zeit
6
  if(P1IFG & 0x01)// kam der interrupt vom p1.1?
7
  {
8
    P1OUT |= 0x02;   //led an, wenn taste gedrückt
9
    if(i < 0x1f)
10
    {
11
      i++;
12
    }
13
    else
14
    {
15
      i = 0;
16
    }   
17
  }
18
  P1IFG &=~ 0x01;//löschen des interrupts
19
  P1OUT &=~ 0x02;//led wieder aus
20
  _EINT();//interrupt wieder an
21
}

komischerweise läuft es jetzt (nur, wenn ich eine groundfläche
berühre...)

der taster hängt mit vorwiderstand an der versorgungsspannung

von Dein Freund (Gast)


Lesenswert?

Interessant ist das Entprellen erst mit Timern...
Versuch es doch einmal so.

von KoF (Gast)


Angehängte Dateien:

Lesenswert?

och meno... jetzt läuft es viel zu langsam.

wenn ich den taster betätige, dann braucht er (schätzungsweise) 1 sec,
bis ich sie erneut drücken darf. als ich aber aus versehen den kontakt
mit dem finger berührt habe, da sah ich, das es wesentlich schneller
geht... aber warum nur???

kann mir eventuell jemand helfen???

mfg
KoF

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.