Para reafirmar su problema, tiene una señal de entrada en el rango de frecuencia de 3960-4040 Hz y desea determinar esta frecuencia sobre la marcha. Muchos microcontroladores pueden hacer esto de manera bastante simple.
La frecuencia de interés más alta es 4.04 kHz, que tiene un período de 248 µs. Es un tiempo "largo" incluso para un micro pequeño y barato. En el otro extremo, 1 / 3.96 kHz = 253 µs, por lo que desea determinar el período de la señal en un rango de 5 µs. No dijiste qué resolución quieres, así que digamos 1 parte en 50, lo que significa que puedes obtener lo que quieres si puedes medir el período hasta 100 ns.
Todo esto es bastante factible en muchos microcontroladores, que tienen la capacidad de tomar una instantánea de un temporizador de funcionamiento libre en un borde particular de una señal de entrada. En los PIC de 8 bits, esta es una de las cosas que puede hacer el módulo CCP (comparación, captura, modulación de ancho de pulso). En los PIC de 16 bits se denomina módulo "Captura de entrada". De cualquier manera, terminas con una instantánea del temporizador de 16 bits en cada ciclo de tu señal entrante.
Para determinar el período del ciclo anterior, simplemente haga una resta sin firmar del nuevo valor de captura menos el anterior. Esto funciona ya sea que el temporizador finalice durante ese ciclo o no, siempre que el período no exceda el tiempo de reinicio del temporizador. Si registra el temporizador a 10 MHz, obtendrá valores de 2475 a 2525, y la resta arroja el período en unidades de 100 ns.
No dices para qué quieres la frecuencia, pero quizás puedas usar este período directamente. Si realmente necesita frecuencia (piénselo cuidadosamente, puede que no), entonces haga la división. Incluso si el micro solo funciona a 10 MHz, tiene más de 2000 ciclos de instrucción por ciclo de entrada, lo que es suficiente para una división. En un PIC de 16 bits, puede dividir el hardware en solo 18 ciclos.
De cualquier manera, haría un poco de filtrado de paso bajo en los periodos medidos antes de realizar cualquier otro procesamiento. Esto hará que su sistema sea menos susceptible a las vibraciones e incluso puede reducir un poco el ruido de cuantificación. Tenga en cuenta que una señal de banda limitada de 3960-4040 Hz no puede cambiar su frecuencia tan rápido. Se garantiza que los cambios aparentes en la frecuencia por encima de algún límite son ruidos.