www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik msp430 Interrupt löst "selbständig" aus


Autor: blonder_Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich beschäftige mich seit kurzem mit dem µC MSP430F2131.

Ich habe einige Dokus gelesen und versucht die Bsp.-Programme 
nachzustellen.

Mit dem ersten Interrupt Bsp. gibt es aber leider Probleme.

Ich versuche einfach über Taster einen Interrupt auszulösen und ein LED 
nach 5 Tastendrucken zu toggeln.
Der Taster verbindet den Pin 2.3 mit Masse, d.h der Interrupt wird mit 
fallender Flanke ausgelöst.

Zur Programmierung und Schnittstelle verwende ich IAR

Das Programm sieht folgendermassen aus:

#include "msp430x21x1.h"
volatile int zaehler = 0;
int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;

  P1DIR = 0xFF; // alle Pins auf Output gesetzt
  P1OUT = 0xFB;

  P2DIR = 0xF7;                 // P2.3 Input
  P2REN = 0x08;                 // P2.3 Pullup
  P2IES = BIT3;                 // P2.3 Hi/lo edge
  P2IE  = BIT3;                 // P2.3 interrupt enabled
  P2IFG = 0xF7;                 // P2.3 IFG cleared
  _EINT();

while(true)
{
  if(zaehler >= 5)
  {
      P1OUT = ~P1OUT;
      zaehler = 0;
  }

}
  return 0;
}
// Port 2 interrupt service routine
#pragma vector=PORT2_VECTOR
__interrupt void Port_2(void)
{
  zaehler = zaehler +1;
  P2IFG = 0xF7; // P2.3 IFG clearedf

}

Wenn ich das Programm debugge (haltepunkt im Interrupt) funktioniert 
alles wunderbar.
Lasse ich den Haltepunkt weg wird der Zustand des LEDs bereits nach 2 -4 
Tastendrucken geändert.
d.h ich vermute das durch meinen Tastendruck mehrere Interrupts 
ausgelöst werden.

Ich habe für den Interrupt-Pin den internen Pull-Up aktiviert, ansonsten 
wurden ständig Interrupts ausgelöst weil kein "definierter" Zustand zu 
erkennen war.

Wo kann das Problem liegen?
Wie kann ich das Problem eingrenzen?

Evtl. hat ja jemand eine Idee.

lg

Andi

Autor: mui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das stichwort heisst "Taster entprellen"...

VG,
mui

Autor: Guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du den Taster irgendwie entprellt?

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, klingt so als würde der Taster prellen.
Gibt sicher schon 1'000'000 threads zu diesem Themam, wie man das lösen 
kann. Eine einfache Lösung ist, einen periodischen Timerinterrupt zu 
generieren (vielleicht so alle 20ms) und darin den Tasterzustand 
abzufragen.

Autor: blonder_Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

die Antwortzeiten hier sind einfach phänomenal.

Danke für den Hinweis mit dem Taster.
Ich werde mir das gleich mal ansehen.

lg

andi

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andi,
mir ist noch aufgefallen, dass bei Deiner Initialisierung Bit3 in P2OUT 
nicht gesetzt wird, nur dann ist der interne Widerstand ein Pull-up. Ist 
P2OUT low, dann ist es ein Pull-down.

Gruß, Michael

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.