Gast
#1286607
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