TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: rovando en 11 de Noviembre de 2004, 20:46:00

Título: Interrupcion ADC 16F876
Publicado 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.
Título: RE: Interrupcion ADC 16F876
Publicado por: Nocturno en 11 de Noviembre de 2004, 23:37:00
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.
Título: RE: Interrupcion ADC 16F876
Publicado por: rovando en 12 de Noviembre de 2004, 09:31:00
Gracias, por los consejos,, y por la molestia que se tomo en contestar,.
saludos desde Veracruz, Mexico.
Título: RE: Interrupcion ADC 16F876
Publicado por: wofer en 12 de Noviembre de 2004, 09:43:00
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!
Título: RE: Interrupcion ADC 16F876
Publicado por: rferrero en 28 de Noviembre de 2004, 06:10:00

   Faltaría setup_adc_ports(), no?

    Para indicarle cuántas y cuáles de las entradas son analógicas.