TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: rovando en 11 de Noviembre de 2004, 20:46:00
-
Saludos, necesito saber si estoy utilizando bien mi convertidor analogico a digital, aqui les mando un parte de mi codigo, mi duda es si tengo que ponerle un delay o si no es necesario,,,, saludos.
#int_AD
void conversion(){
corriente+=(float)muestra*(float)muestra;
}
la parte de arriba es donde declaro lo que va a hacer mi interrupcion.
for(i=0;i<500;i++)
{
delay_us(10);
muestra = read_adc();
}
bueno en esencia aqui es donde radica mi duda,, me gustaria saber si ese delay es necesario, y si con una vez que declare set_adc_channel(0); es necesario, gracias de antemano.
-
Ese delay no es necesario para que tu AD haga la lectura; él solito se encarga de no devolver el flujo al programa hasta que la lectura es buena.
Con respecto a la declaración set_adc_channel, es suficiente con incluirla una vez al principio de tu programa.
-
Gracias, por los consejos,, y por la molestia que se tomo en contestar,.
saludos desde Veracruz, Mexico.
-
lo ke tu kieres hacer seria de la siguiente forma:
main(){
while(true){
set_adc_channel(0)
delay_us(30);
read_adc(ADC_START_ONLY);//inicia la conversión solamente
}
}
#int_AD
void conversion(){
valor_analogico = read_adc(adc_read_only);//lee el resultado de la conversion
}
-En caso de no kerer usar la interrupcion seria:
main(){
while(true){
set_adc_channel(0)
valor_analogico=read_adc();/* la funcion "read_adc()" se encarga de realizar el retraso necesario y de leer el resultado de la conversion*/
}
}
Saludos!
-
Faltaría setup_adc_ports(), no?
Para indicarle cuántas y cuáles de las entradas son analógicas.