I am so noob that only yesterday did I ever code using interrupts. What I want to achieve is a two-whisker robot, the kind that bounces off the wall in either direction oposite from the whisker closing a switch. Couldn't be simpler.
Yet, I have totally been unable to find code that 1) offers more than one interrupt 2) will compile under msp430-gcc, in terminal 3) is somewhat reliable as to hardware (the debouncing thing with capacitors does not seem to work for me) I have mangled code to exhaustion, have been one full day and a couple sleepless hours trying to figure this, and it's rather frustrating that it doesn't seem anyone has had this issue before... The few code examples are for some Windows-based tools. At some moment I found some values that I could replicate for pin 2, 3, 4, 5, 7 (1 and 6 I had driving the LEDs to check if I was hitting things), I was quite happy, but when testing the code again the next day the values did not work anymore... The code got mangled, but what I have I copy below. To complicate :-) I want to be enable to run the whatever from the OLPC XO laptop - that means plain msp430-gcc and mspdebug on Fedora 17 Anybody has any idea where to? <yamarant> Just as a BTW FYI, I wanted to keep working from my Ubuntu, and it didn't. Trying to install msp430-gcc and mspdebug was PAINFUL. So I set up a virtual machine with Fedora 17, and the sudo yum install went fine, *except* for the include folder. BTW whatever I have under Ubuntu and Fedora says that signal.h is deprecated, and all sorts of code in the internet just won't compile - I figured out the pragma vc interrupt thing, but it all feels downright silly, wasn't C supposed to be somewhat /standard/?!?! And Linux standard times 8 square? (this is payback, no doubt, the many times I made sly remarks about windowsware, reffering to its minions as "people of non standard software" </yamarant> It is marvelous that this works at all, no doubt, but I shudder when it comes to offering this to kids even noober than I... BTW, this compiles perfect in the OLPC, msp430-gcc 3.2.3 #include <msp430x20x3.h> #include <signal.h> #include <stdint.h> #define RED BIT0 #define GREEN BIT6 #define BUTTON BIT4 int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR |= (RED + GREEN); // Set P1.0 to output direction // P1.3 must stay at input P1OUT &= ~(RED + GREEN); // set P1.0 to 0 (LED OFF) P1IE |= BUTTON; // P1.3 interrupt enabled P1IFG &= ~BUTTON; // P1.3 IFG cleared //P1OUT ^= (RED + GREEN); eint(); // enable all interrupts for(;;) {} } unsigned int i=0; // Port 1 interrupt service routine interrupt(PORT1_VECTOR) PORT_1(void) { if (P1IFG > (176)) {P1OUT ^= (RED);}; // P1.0 = toggle // if (P1IFG == (144)) {P1OUT ^= (GREEN);}; // 144 is pin 1.4 input if (P1IFG > (178)) {P1OUT ^= (GREEN);}; // 136 is pin 1.3 input // if (P1IFG == (132)) {P1OUT ^= (GREEN);}; // 132 is pin 1.2 input // if (P1IFG == (130)) {P1OUT ^= (GREEN);}; // 130 is pin 1.1 input // if (P1IFG == (144)) {P1OUT ^= (GREEN);}; // 144 is pin 1.4 input for (i; i<200;i++); // P1.0 = toggle P1OUT &= ~(RED + GREEN); // set P1.0 to 0 (LED OFF) i = 0; P1IFG = 0; // P1.3 IFG cleared P1IES ^= BUTTON; // toggle the interrupt edge, // the interrupt vector will be called // when P1.3 goes from HitoLow as well as // LowtoHigh } ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct _______________________________________________ Mspgcc-users mailing list Mspgcc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mspgcc-users