Gast
#670070
Salu zusammen Ich habe hier gerade wieder mal ein Prob mit dem MSP. Habe einen Minijoystick (wie er in Mobiltelefonen verbaut ist) an Port2 des MSP430F149 gehängt. Der Common des Joysticks liegt auf Masse, und die jeweiligen Kontakte am Port2. __________ | / | |--/ ---|P2.0 | --- Nun habe ich hier mal den Code. Vielleicht sieht ja jemand einen Fehler oder kann sagen das er OK ist. Weiss nicht wo ich noch suchen soll. Er springt einfach gar nie in den Interrupt rein. #include <msp430x14x.h> int push_state = 0; int menu_step = 0; interrupt (PORT2_VECTOR) P2_ISR(void) { DebounceDelay(); if(P2IFG & 0x01) // hat P2.0 den Interrupt ausgelöst? { push_state = 0; P2IFG &= ~0x01; // Interrupt-Flag löschen } else if(P2IFG & 0x02)// hat P2.1 den Interrupt ausgelöst? { if(menu_step < 5) { menu_step += 1; } else { menu_step = 1; } P2IFG &= ~0x02; // Interrupt-Flag löschen } else if(P2IFG & 0x04)// hat P2.2 den Interrupt ausgelöst? { if(menu_step > 1) { menu_step -= 1; } else { menu_step = 5; } P2IFG &= ~0x04; // Interrupt-Flag löschen } else if(P2IFG & 0x08)// hat P2.3 den Interrupt ausgelöst? { //push_state = 3; P2IFG &= ~0x08; // Interrupt-Flag löschen } else if(P2IFG & 0x10)// hat P2.4 den Interrupt ausgelöst? { //push_state = 4; P2IFG &= ~0x10; // Interrupt-Flag löschen } else // Falls mehrere Interrupts gleichzeitig auftreten { //push_state = 100; P2IFG &= 0x00; } } int main(void) { P2SEL &= 0xE0; // P2.0 - 2.4 als I/O konfigurieren P2DIR &= 0xE0; // P2.0 - 2.4 als Input definieren / Joystick P2IES &= 0x1F; // P2.0 - 2.4 neg. edge löst Interrupt aus //P2IES &= 0xE0;// P2.0 - 2.4 pos. edge löst Interrupt aus P2IE &= 0x1F; // P2.0 - 2.4 kann Interrupt auslösen } void DebounceDelay(void) { volatile unsigned int i; for(i = 50000; i > 0; i--); } Danke schonmal im Voraus fürs drüberschauen Gruss und ein schönes Wochenende reflection