Las señales flotantes no suelen ser buenas, pero pueden ser aceptables en algunos casos. En todos esos casos, el valor de la señal no importa.
No todas las señales son relevantes todo el tiempo. Un ejemplo común es la línea MISO de un bus SPI. Ésta sólo se activa cuando se selecciona un dispositivo esclavo (habilitado). Su valor sólo es relevante durante un corto periodo de tiempo alrededor de uno de los flancos del reloj SCK. En todos los demás momentos, la señal puede estar en cualquier estado sin afectar al sistema, ya que éste la ignora.
Entonces, ¿qué ocurre con MISO cuando no se selecciona ningún esclavo, como ocurre siempre que el bus SPI no está en uso? La respuesta es que no importa. No importa cuál es su valor ya que nadie lo está mirando. Dado que MISO es manejado sólo por el esclavo seleccionado, todos los esclavos no seleccionados y cualquier otra cosa en esa línea debe ser de alta impedancia. Eso significa que cuando no se selecciona ningún esclavo, la línea queda flotante como se describe en el pasaje que citó anteriormente. Esto no causa ningún dato erróneo, ya que, de nuevo, el sistema está ignorando la línea en ese momento.
Mientras que una línea flotante está bien lógicamente cuando nada mira su valor, puede ser un problema eléctricamente. Muchas entradas lógicas están pensadas para que el voltaje sea sólidamente bajo o sólidamente alto. Los valores intermedios pueden causar corrientes más altas que las especificadas en el circuito de entrada, y en algunos casos pueden incluso hacer que este circuito oscile.
Por esta razón, a menudo hay una resistencia débil de pulldown o pullup en las líneas que podrían flotar. Yo suelo utilizar un pulldown de 100 kΩ en MISO, por ejemplo. Cuando se selecciona un esclavo, conduce la línea sin importar la pequeña corriente extra que se necesita para mantenerla en el estado alto. Sin embargo, cuando nada está conduciendo la línea, se pondrá baja, evitando la corriente extra no deseada y las oscilaciones en cualquier cosa que reciba la señal.
También hay tipos de entradas digitales que pueden manejar cualquier tensión dentro del rango válido sin características indeseables, como corriente extra u oscilaciones. Disparos de Schmitt son un ejemplo. Éstos tienen histéresis, de modo que después de cambiar en un sentido, se necesita una tensión diferente para cambiar en el otro. Una línea flotante puede hacer que la señal digital se interprete de forma aleatoria ya que su voltaje flota, pero la entrada digital está diseñada para manejar eso. Por supuesto, el resto del sistema tiene que ser diseñado para no preocuparse por el valor de la señal digital durante el tiempo que flota.
En general, las señales realmente flotantes son malas, pero se pueden solucionar fácilmente con una resistencia débil de pulldown o pullup.
13 votos
Realmente no deberías aceptar una respuesta tan rápida (menos de 30 minutos en este caso). Ahora es probable que otros se salten esta pregunta, y nunca sabrás qué más podrían haber dicho. Una buena regla es esperar al menos un día para que las personas que responden en todo el mundo tengan un ciclo completo de días para intervenir.
1 votos
@OlinLathrop Buen punto, trataré de ser más sabio la próxima vez. ¡Parece que puedo desmarcar la respuesta!
2 votos
Además de las maravillosas respuestas que aparecen a continuación, algunos chips pueden utilizar una entrada flotante como tercer valor de entrada, por ejemplo, los chips de módem y los chips de cargadores de baterías.
2 votos
Imagina un amplificador de audio cuya entrada se deja desenchufada. No es necesario tenerlo desenchufado, pero el amplificador debe estar diseñado para hacer frente a ese caso.
1 votos
@Dmitry Grigoryev: pero el diseñador debe tener en cuenta que exactamente en ese caso la entrada es no flotante (por ejemplo, llevándolo a GND mediante una resistencia)
1 votos
@IgnacioVazquez-Abrams eso puede ser cierto, pero internamente ese pin no va a estar flotando. El estado tiene que ser medido en algún momento, y creo que eso se hace con un poco de lógica en el chip intentando tirar de él en cada dirección a su vez con una impedancia de fuente razonablemente grande, y comprobando si el nivel del pin sigue o si está siendo tirado a alto o bajo por algo externo.