This all happened my my own account, but I am curious as to why I didn't fry my Arduino, or at least that input pin. Let me see if I can explain.
I am reading an input pin, pin 11 and it is set to; (I know it's defined as an OUTPUT, part of my mistake, but reading an output pin yeilds the same results)
I want to know when that pin goes to ground and it is connected to something else. Forgetting about voltage difference, I forgot that the wire connected to pin 11 is at +16 volts. I realized this after a while of it working. Now I am curious as to why it didn't fry pin 11.
The pin was set as an OUTPUT and set to HIGH, so that is 5v - 16v = 11v going somewhere? I assume passed to the internal zeners.?.? I checked the wire I am connected to and it is coming from an indicator LED through a 5K resistor connected to a FET, so when the FET is ON, the LED indicator gets a ground - thus sending a ground to my Arduino Pin 11, which I am monitoring. When the FET is OFF their is +16 volts on that wire and the indicator LED is off.
My guess is that the 5K and the internal resistance on the Arduino to the Zener was enough to prevent overheating and ultimately taking out that pin. It's my understanding that the IO pins should only see a MAX of +5v, but I guess that depends on how much current is flowing through the internal protection circuit.