Hola, lo que yo utilizo como eliminadores de rebotes y falsas señales en mis diseños, generalmente sometidos a ambientes críticos, es una protección por HW que puede variar desde un simple pasabajos de frecuencia de corte baja (10 Hz por ejemplo) hasta todo un circuito de protección con TVS, diodos schkotty, inductores y hasta optoacopladores, pero el filtro RC es siempre fundamental para mi.
Por otro lado, tambien utilizo un filtrado por SW de dos formas, primero genero un filtro pasabajos para cada entrada de pulsador, no lo implemento con delays porque es una perdida de tiempo importante, generalmente lo hago utilizando variables incrementales referidas a un timer y comprobandolas cada ciclo, porque de todas formas no necesitas exactitud a la hora de determinar la frecuencia de corte del filtro digital, puede estar entre los 50 y los 5 Hz tranquilamente. Luego hago un muestreo del estado del puerto anterior y lo compruebo con el estado actual, para que la deteccion sea por flancos y no por estados, que son menos confiables. He tenido a veces que realizar 2 comprobaciones de estado, porque el ruido era tan fuerte que me cambiaba los bits de estado de la entrada.
Nos estamos escribiendo.