¿Cómo puedo contar la cantidad de pulsos usando un microcontrolador (cualquiera), siempre que se cumplan las siguientes condiciones?
- No se puede usar ninguna interrupción (no se permiten interrupciones en el cambio de pin)
- No se puede usar ninguna de las funciones de hardware de uC (contador, temporizador, etc.)
El ancho del pulso es aleatorio y no se puede predecir de antemano. Este tren de impulsos se administra a uno de los pines IO de propósito general. La solución debe basarse exclusivamente en software (C / ensamblaje).
El método de eliminación de rebotes por software que lee el estado del pin como una serie de 0 y 1 es una opción posible, pero necesita codificar el patrón de transición, lo que significa que necesita conocer el ancho del pulso por adelantado y, por lo tanto, no se puede aceptar. .
¿Alguna idea?
PS: Esta pregunta se hizo en una entrevista técnica con uno de los principales proveedores de componentes automotrices.