www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tastenentprellung mit MSP430


Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
#pragma vector=PORT1_VECTOR
__interrupt void PORT1(void)
{
  for(m=0;m<=500;m++)//warte einige zeit
  _DINT();//interrupts aus machen
  {
    if(P1IFG & 0x01)// kam der interrupt vom p1.1?
    {
      P1OUT |= 0x02;   //led an, wenn taste gedrückt
      if(i < 0x1f)
      {
        i++;
      }
      else
      {
        i = 0;
      }   
    }
  }
  P1IFG &=~ 0x01;//löschen des interrupts
  P1OUT &=~ 0x02;//led wieder aus
  _EINT();//interrupt wieder an
}

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?

Autor: KoF (Gast)
Datum:

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

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach nö... heute ist nicht mein tag. "wenn der letzte fehler raus ist,
dann läuft`s" << weiser spruch ;-)
#pragma vector=PORT1_VECTOR
__interrupt void PORT1(void)
{
  _DINT();//interrupts aus machen
  for(m=0;m<=2500;m++);//warte einige zeit
  if(P1IFG & 0x01)// kam der interrupt vom p1.1?
  {
    P1OUT |= 0x02;   //led an, wenn taste gedrückt
    if(i < 0x1f)
    {
      i++;
    }
    else
    {
      i = 0;
    }   
  }
  P1IFG &=~ 0x01;//löschen des interrupts
  P1OUT &=~ 0x02;//led wieder aus
  _EINT();//interrupt wieder an
}

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

der taster hängt mit vorwiderstand an der versorgungsspannung

Autor: Dein Freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interessant ist das Entprellen erst mit Timern...
Versuch es doch einmal so.

Autor: KoF (Gast)
Datum:
Angehängte Dateien:

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

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.