Autor Tema: Interrupcion ADC 16F876  (Leído 1763 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rovando

  • PIC10
  • *
  • Mensajes: 9
Interrupcion ADC 16F876
« 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.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Interrupcion ADC 16F876
« Respuesta #1 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.

Desconectado rovando

  • PIC10
  • *
  • Mensajes: 9
RE: Interrupcion ADC 16F876
« Respuesta #2 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.

Desconectado wofer

  • PIC12
  • **
  • Mensajes: 50
RE: Interrupcion ADC 16F876
« Respuesta #3 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!

Desconectado rferrero

  • PIC16
  • ***
  • Mensajes: 113
RE: Interrupcion ADC 16F876
« Respuesta #4 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.