1
\$\begingroup\$

I've been trying to get 2 input push-buttons working on my MSP430 FF529.

I've been successful with 1, but not the other, which leads me to think the one not working is broken, since I'm doing the exact same thing for both.

The two push-buttons on this board are attached to ports P1.1 and P2.1

I got P2.1 to work fine by doing:

P2DIR = 0x00; //set as input
P2REN |= 0x02; //enable pullup for p2.1

Now for Port 1, I also need an LED attached to P1.0 as output, so I have done:

P1DIR = 0x01; //set p1.0 as output, and p1.1 as input
P1REN |= 0x02; //enable pullup for p1.1

So P2.1 is working perfectly fine. The default value is HIGH, and I can see it switch to LOW when I press the button. But this is not the case for P1.1. The default value for this is LOW, and pressing the button has no effect. Am I missing something obvious? Or something different about this port than the other port?

The parts I'm referring to are in green boxes.

MSP430 FF529

enter image description here

enter image description here

asked Sep 8, 2014 at 18:59
\$\endgroup\$
7
  • \$\begingroup\$ You checked the button connection? many models have 4 pins, but connected as two pairs. Perhaps, instead of connecting terminals of the switch, you connected a pair of common pins. \$\endgroup\$ Commented Sep 8, 2014 at 19:09
  • \$\begingroup\$ @Tinchito I forgot to mention these are pushbuttons soldered directly onto the MSP430 FF529 board. I am not working with any external components. \$\endgroup\$ Commented Sep 8, 2014 at 19:15
  • \$\begingroup\$ Can you verify that P1SEL is at its default 0x0000? \$\endgroup\$ Commented Sep 8, 2014 at 19:38
  • \$\begingroup\$ @venny Yes, I had that in my code again, forgot to mention it above. So at this point, I have ports P1 and P2 doing literally the exact same thing just to see if I could get the correct behavior, but ending up with different values. For both I have: PxSEL=0x00, PxDIR=0x00, PxREN=0xFF, and PxOUT=0xFF, and both are different values. At run-time, port P1 has the value 0x00, and P2 has the value 0xFF. \$\endgroup\$ Commented Sep 8, 2014 at 19:41
  • 1
    \$\begingroup\$ Ok I'm an idiot. I had an else condition further up in my code that was writing P1OUT = 0x00 when it shouldn't have been, so I guess it was changing P1 to pull-down. Doh \$\endgroup\$ Commented Sep 8, 2014 at 20:01

1 Answer 1

1
\$\begingroup\$

As OP has noted in the comments, issue was due to code changing the state of the Port 1 Output P1OUT. When PxREN is enabled for a given port and pin, the corresponding bit for the same port and pin in PxOUT controls whether the builtin Pull-Up (Logic 1) or Pull-Down (Logic 0) is connected. PxDIR must also be set to Logic 0 for the port and pin to be an input.

Consequently, Op had set the P1.1 Button Input to pull-down to Gnd, when the button is also tied to Gnd when pressed.

answered Oct 15, 2015 at 5:13
\$\endgroup\$

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.