Bueno, el asunto es la pregunta:
Usando el ADC del 18F2550, ¿se puede hacer que el tiempo de muestreo (el mas rapido posible) sea constante?
Estoy usando CCS C, con cristal 20mhz y el micro corriendo a 48mhz.
Por mas que pruebe las distintas variantes de configuracion del clock del ADC, obtengo en algunos casos que estoy haciendo la lectura antes que termine la anterior (a pesar de usar read_adc() con START_AND_READ) o sino obtengo tiempos mas o menos variables en el simulador. (Proteus 7.2)
Para determinar esto, estoy poniendo un breakpoint en la linea de read_adc() y verifico el tiempo entre una y la siguiente pasada por este breakpoint. (Es un loop cerrado para probar, las instrucciones son todas de tiempo constante)
Por ej:
Empiezo en el tiempo 10.005ms y el segundo read ocurre en 10.008ms. Sin embargo el tercero por ahi ocurre en 10.009ms y no en 10.012ms.
La señal es una senoidal de 1khz 5v pico a pico, offset 2.5v
¿Es posible hacerlo constante?
Usando el ADC del 18F2550, ¿se puede hacer que el tiempo de muestreo (el mas rapido posible) sea constante?
Estoy usando CCS C, con cristal 20mhz y el micro corriendo a 48mhz.
Por mas que pruebe las distintas variantes de configuracion del clock del ADC, obtengo en algunos casos que estoy haciendo la lectura antes que termine la anterior (a pesar de usar read_adc() con START_AND_READ) o sino obtengo tiempos mas o menos variables en el simulador. (Proteus 7.2)
Para determinar esto, estoy poniendo un breakpoint en la linea de read_adc() y verifico el tiempo entre una y la siguiente pasada por este breakpoint. (Es un loop cerrado para probar, las instrucciones son todas de tiempo constante)
Por ej:
Empiezo en el tiempo 10.005ms y el segundo read ocurre en 10.008ms. Sin embargo el tercero por ahi ocurre en 10.009ms y no en 10.012ms.
La señal es una senoidal de 1khz 5v pico a pico, offset 2.5v
¿Es posible hacerlo constante?