Estoy usando un dsPIC33F (Microchip) para muestrear una señal de 555-timer. He probado con formas de señal cuadradas, triangulares y "sinusoidales", pero siempre tengo el mismo problema: el ADC muestrea la forma de onda correctamente, pero el resultado es siempre la mitad de la frecuencia esperada.
Por ejemplo, mi entrada es de 440Hz, y cuando trazo lo que el ADC escribe en el buffer, obtengo:
Sin las líneas lo es:
En el osciloscopio lo leo como 440Hz. Mi frecuencia de muestreo es de 8kHz (lo cual comprobé con el osciloscopio alternando un pin), y a medida que la cambio, los valores muestreados cambian para reflejar eso, así que estoy casi seguro de que estoy usando el temporizador correcto para disparar el ADC. Como cada punto representa 1/8000 = 0,000125s, los gráficos anteriores muestran una forma de onda con un período de 36*,000125=0,0045, o 222Hz.
Creo que el tiempo de conversión no debería tener ningún efecto, siempre que sea inferior a 0,000125s. Estoy seguro de que es, y he probado diferentes tiempos de conversión sin ningún cambio. Sé que no es la forma más eficiente de hacer las cosas, pero para empezar también convierto sólo una muestra a la vez antes de disparar una interrupción y escribir en el buffer. No estoy seguro de si eso podría importar.
Si alguien tiene alguna idea, se lo agradecería.