So my project exposed an unexpected behavior in the g2553.
the datasheet lists on page 328
"8.2.2 Output Registers PxOUT
Each bit in each PxOUT register is the value to be output on the corresponding I/O pin when the pin is
configured as I/O function, output direction, and the pullup/down resistor is disabled."
so in my mind if the "DIR" bit was set for a pin it would ignore the "REN" bit and just set the pin as an output. however when it functions as the opposite, if the REN bit is set, it becomes an input with the resistor set and ignores the "DIR" bit.
this is my setup on the project. I have to check the state of 4 relay contacts using 3 input pins so they are charlieplexed with diodes.
so i enabled all 3 REN bits, and pulled P2.5 & P2.7 down and set P2.4 as an output high. I was surprised to see the voltage at P2.4 was at 1.23V. I disabled the REN bit for P2.4 only and it jumps up to 3.6V which is what I would have expected.
So with P2.4 having its DIR and OUT bits set when the REN bit is set it is now an input with the pullup resistor on (REN and OUT bits driving this)
this makes it 2 pulldown resistors and 1 pullup resistor feeding into the point, making a resistor divider and a voltage of 1.2V is about right.
I don't know if this is a known behavior but the datasheet leads me to believe the opposite should happen and the "DIR" bit will override the "REN" bit.