Gast
#1135030
Hallo zusammen Ich habe wieder mal ein Problem mit meinem MSP. Irgendwie habe ich das schon so gemacht (glaube ich zu mindest) aber es will einfach nicht mehr. Folgendes: Ich habe am MSP430F149 ein eDIP240 Display mit Touch dran. Dies besitzt einen Pin der mir anzeigt wenn eine Touch-Taste gedrückt wurde. Diesen habe ich, da 5V, über einen Transistor der als Levelshifter fungiert, an meinen MSP430 (3.3V) angeschlossen. Klappt auch wunderbar, die Logik ist halt nun umgedreht. Das Display zieht auf Low wenn eine Taste gedrückt wird, Transistor sperrt, also High am Pin 1.2 des MSP. Den Port habe ich auf steigende Flanke eingestellt. So nun hier der Code (Auszug) void Init_ports(void) { P1SEL &= 0xE0; // P1.0 - P1.4 als I/O konfigurieren P1DIR = 0xE0; // P1.0 - P1.4 als Input definieren P1IES = 0x0B; // P1.2 pos. edge löst Interrupt aus P1IE = 0x04; // P1.2 kann Interrupt auslösen } Auszug aus Main: interrupt (PORT1_VECTOR) P1_ISR(void) { if(P1IFG & 0x01) // hat P1.0 den Interrupt ausgelöst? { P1IFG = 0x00; // Interrupt-Flag löschen } else if(P1IFG & 0x02) // hat P1.1 den Interrupt ausgelöst? { P1IFG = 0x00; // Interrupt-Flag löschen } else if(P1IFG & 0x04) // hat P1.2 den Interrupt ausgelöst? { test_irq += 1; P1IFG = 0x00; // Interrupt-Flag löschen } else if(P1IFG & 0x08) // hat P1.3 den Interrupt ausgelöst? { P1IFG = 0x00; // Interrupt-Flag löschen } else if(P1IFG & 0x10) // hat P2.4 den Interrupt ausgelöst? { P1IFG = 0x00; // Interrupt-Flag löschen } else // Bei mehreren Interrupts --> keine Aktion { P1IFG = 0x00; // Alle Interrupt-Flags löschen } } So, nun müsste ja bei einem Interrupt eigentlich die Variable test_irq um 1 erhöht werden... MÜSSTE :o) Wenn ich einen Breakpoint auf die Zeile: interrupt (PORT1_VECTOR) P1_ISR(void) setze, hält er genau dort an wenn ich eine Taste auf dem Touch drücke. aber die Variable test_irq wird nicht erhöht. Auch wenn ich einen Breakpoint auf else if(P1IFG & 0x04) setzte, oder direkt auf test_irq += 1; hält er nie an. Sieht jemand vielleicht einen Fehler, oder kann bestätigen, dass es so gehen müsste? Bin um jede Hilfe froh. Gruss reflection