Lo que menciona palitroque es cierto. Pero no tan simple es decir, esos 2.45us (como maximo, puede ser menos) solo es el tiempo de adquisicion, pero el pic tambien utiliza un tiempo de conversion que va de
700ns hasta 1.33us por bit, ya que son 10 bits tendrías al rededor de 7us hasta 13us por cada conversion, y sumando el Tacqt serian alrededor de 16us por conversion como minimo.
Como ya saben MiKroC trae una funcion de conversion A/D, esta función utiliza el reloj de conversion del RC interno, esto es muy lento ya que se tarda alrededor de 80us por cada muestra, asi que es mejor realizar una pequeña función tu mismo mas adelante muestro un ejemplo.
unsigned Leer_adc(){
ADCON0.ADON=1; //Encendemos el ADC
ADCON0.GO_DONE=1; //Empezamos la Conversion
while(ADCON0.GO_DONE);//Cuando GO_DONE se desactiva termina la conversion
//Debido a que no se como enviar dos byte directamente a un entero lo realizo en asambler
asm{movff ADRESL,_adc //muevo el valor del ADRESL a la parte baja del entero adc
movff ADRESH,_adc+1} //muevo el valor del registro ADRESH a la parte alta del entero adc
return adc; //regreso el dato del adc
}
void main(){
TRISA=255; //PuertoA como entrada
ADCON1= 0b001110; //Configura solo AN0 como analogica
ADCON2=0b10001010; //Fad=Fosc/32=32MHz/32=1MHz, Tacq=2Tad y justificación derecha
ADCON0=0; //Seleccionamos canal0 para conversion con Vdd y Vss como referencias
while(1){
V=Leer_adc();} //Aqui se hace el llamado a la funcion de conversion
}
}
El codigo fue hecho para una frecuencia de 32MHz lo cual se logra poniendo un cristal de 4MHz y activando los flags de configuración
- PLLDIV_1L para que la frecuencia de entrada al PLL sea de Fosc/1=4MHz/1=4MHz
- CPU_OSC2_PLL3_1L para que la frecuencia de entrada al CPU sea de Fpll/3=96MHz/3=32MHz
- FOSC_XTPLL_XT_1H o tambien FOSC_HSPLL_HS_1H para poder utilizar el PLL y multiplicar la frecuencia de trabajo.
yo utilizo 96MHz/3=32MHz porque
Tad=32*Tosc=32/Fosc=32/32MHz=1us
Tambien puedes utilizar estas opciones:
Si uso 96MHz/2=48MHz
Tad=64*Tosc=64/Fosc=64/48MHz=1.3333us
Utilizo 96MHz/4=24MHz porque
Tad=32*Tosc=32/Fosc=32/24MHz=1.3333us
Utilizo 96MHz/6=16MHz porque
Tad=16*Tosc=16/Fosc=16/16MHz=1us
Pero el tiempo de cada ciclo aumenta lo que disminuye el tiempo total de conversion
Recuerda que 96MHz es la Fpll.
Si uso un cristal de 20MHz
Tad=16*Tosc=16/Fosc=16/20MHz=800ns
pero no tengo Cristal de ese tipo. Pero tambien aumento el tiempo de ciclo en unos cuantos ns. podria ser la mejor opcion.
Si uso el oscilador interono a 8MHz
Tad=8*Tosc=8/Fosc=8/8MHz=1us.
Pero aumento el Tcyc disminuyendo el tiempo de conversion total.
Recuerda que debes mantenerte entre el margen de Tad que arriba menciono para poder realizar la conversion, sino ocurriran errores y podrias dañar el PIC.
Debido a que Necesitas muestrear como minimo a 1Khz 12 señales analogicas = 12KHz y lo multiplicas por 2 para obtener la frecuencia de Nyquist tendrias 24kHz supongo que podrias hacerlo porque tu frecuencia de muestreo es 1/16us=62.5KHz
Aun no pruebo el codigo pero creo que funcionara, avisame si lo hace y suerte