7 votos

¿Desdecirse ignorando los datos?

Todas las rutinas de desbordamiento de software que he visto implican esperar hasta que un cierto número de lecturas secuenciales de una señal devuelvan 0 o 1. Eso tiene sentido, por supuesto. Pero significa que hay un compromiso inevitable entre robustez y latencia. Cuantas más lecturas exija para aceptar un cambio de nivel, mayor será el tiempo de respuesta.

Parece que una alternativa simple sería simplemente ignorar las lecturas de entrada durante una cierta cantidad de tiempo después de un borde. Si el interruptor había estado leyendo 0, y luego un solo sondeo devuelve un 1, entonces interpretar esto como un 1 lógico para la duración del período de rebote esperado. Lo mismo ocurre cuando se pasa de 1 a 0.

Obviamente, esto seguiría limitando la tasa de entrada máxima. Pero también reduciría la latencia de una sola pulsación de botón a casi cero, incluso para tiempos de rebote extremadamente largos.

¿Hay problemas con este enfoque? Parece un enfoque obvio para la depuración del software, por lo que me sorprende que no se utilice.

4voto

Celeritas Puntos 473

Yo ofrecería un Condicional Sí .

El enfoque que sugieres supone señales bonitas y limpias. Si se captara algún ruido en la traza, se correría el riesgo de actuar con información errónea.
Por ejemplo: Si hubiera un pico de tensión en la señal cuando se sondea la entrada, se leería un 1 en su programa. En su propuesta, usted supondría que el interruptor ha sido presionado (cuando en realidad no lo había hecho) hasta que vuelvas a sondear la entrada después de tu "intervalo de rebote". En ese momento descubres que, oh, espera, es una broma, el interruptor realmente no estaba presionado.
Por lo tanto, durante la duración del "intervalo de rebote" usted continúa con su programa presumiblemente actuando con la información errónea de que el interruptor ha sido presionado.

Básicamente se reduce a:
¿De qué intenta protegerse?
¿Qué es lo peor que puede pasar si te equivocas?

Si estás construyendo un juego infantil a pilas en una caja de plástico, probablemente no habrá mucho ruido eléctrico que pueda estropear las entradas, por lo que tu desmontaje simplificado estaría bien.
Sin embargo, si esta parte del dispositivo de soporte vital en un hospital ... es posible que desee ir con un poco más robusto de entrada lógica de descontar.

2voto

Spehro Pefhany Puntos 90994

Sí, funcionará.

El enfoque convencional tiene la ventaja de que también rechaza el ruido.

Por lo general, el rebote mecánico se limita a \$ \le \$ 5mseg, así que no creo que se note la diferencia en el tiempo de respuesta aparente.

2voto

GetFree Puntos 495

Eso funcionaría, por supuesto. Pero puede ser aún más sencillo: yo siempre debloqueo leyendo los pines con un intervalo de al menos 50 ms. Simple y efectivo.

En efecto, esto introduce una latencia de hasta 50 ms. No creo que ningún humano note la diferencia. (¿Qué distancia recorre un botón en 50 ms?)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X